Compare commits

..

4 Commits

Author SHA1 Message Date
Mario Sanchez Prada
043f042cec altTab: Close the list of thumbnails in the switcher when closing an app
This makes sure that no thumbnails list is left open and empty, since both
the app's icon and all its thumbnails will be gone once the app is closed.

https://bugzilla.gnome.org/show_bug.cgi?id=620106
2017-12-01 21:30:26 +00:00
Mario Sanchez Prada
815302b4ac altTab: Don't activate an app it the icon is no longer available
https://bugzilla.gnome.org/show_bug.cgi?id=620106
2017-12-01 21:30:17 +00:00
Mario Sanchez Prada
e608d4f26b altTab: Use arrow functions for callbacks
https://bugzilla.gnome.org/show_bug.cgi?id=620106
2017-12-01 21:29:49 +00:00
Florian Müllner
77c20e3b8e [appSwitcher] Add shortcut to quit application
Allow to quit the currently selected application by hitting Alt-q,
similar to the OS X switcher.

https://bugzilla.gnome.org/show_bug.cgi?id=620106
2017-11-30 16:58:18 +00:00
126 changed files with 3735 additions and 33969 deletions

1
.gitignore vendored
View File

@@ -8,7 +8,6 @@ ChangeLog
INSTALL
aclocal.m4
autom4te.cache
data/.osk-layout-workbench
data/org.gnome.Shell.desktop
data/org.gnome.Shell.desktop.in
data/gnome-shell-extension-prefs.desktop

158
configure vendored Executable file
View File

@@ -0,0 +1,158 @@
#!/bin/bash
# configure script adapter for Meson
# Based on build-api: https://github.com/cgwalters/build-api
# Copyright 2010, 2011, 2013 Colin Walters <walters@verbum.org>
# Copyright 2016, 2017 Emmanuele Bassi
# Licensed under the new-BSD license (http://www.opensource.org/licenses/bsd-license.php)
# Build API variables:
# Little helper function for reading args from the commandline.
# it automatically handles -a b and -a=b variants, and returns 1 if
# we need to shift $3.
read_arg() {
# $1 = arg name
# $2 = arg value
# $3 = arg parameter
local rematch='^[^=]*=(.*)$'
if [[ $2 =~ $rematch ]]; then
read "$1" <<< "${BASH_REMATCH[1]}"
else
read "$1" <<< "$3"
# There is no way to shift our callers args, so
# return 1 to indicate they should do it instead.
return 1
fi
}
sanitycheck() {
# $1 = arg name
# $1 = arg command
# $2 = arg alternates
local cmd=$( which $2 2>/dev/null )
if [ -x "$cmd" ]; then
read "$1" <<< "$cmd"
return 0
fi
test -z $3 || {
for alt in $3; do
cmd=$( which $alt 2>/dev/null )
if [ -x "$cmd" ]; then
read "$1" <<< "$cmd"
return 0
fi
done
}
echo -e "\e[1;31mERROR\e[0m: Command '$2' not found"
exit 1
}
sanitycheck MESON 'meson'
sanitycheck NINJA 'ninja' 'ninja-build'
enable_docs='-Denable-gtk-doc=false'
enable_man='-Denable-man=false'
enable_introspection=''
while (($# > 0)); do
case "${1%%=*}" in
--prefix) read_arg prefix "$@" || shift;;
--bindir) read_arg bindir "$@" || shift;;
--sbindir) read_arg sbindir "$@" || shift;;
--libexecdir) read_arg libexecdir "$@" || shift;;
--datarootdir) read_arg datarootdir "$@" || shift;;
--datadir) read_arg datadir "$@" || shift;;
--sysconfdir) read_arg sysconfdir "$@" || shift;;
--libdir) read_arg libdir "$@" || shift;;
--mandir) read_arg mandir "$@" || shift;;
--includedir) read_arg includedir "$@" || shift;;
--enable-gtk-doc) enable_docs='-Denable-gtk-doc=true';;
--disable-gtk-doc) enable_docs='-Denable-gtk-doc=false';;
--enable-man) enable_man='-Denable-man=true';;
--disable-man) enable_man='-Denable-man=false';;
--enable-introspection) enable_introspection='';;
--disable-introspection) enable_introspection='-Ddisable_introspection=true';;
*) echo -e "\e[1;33mINFO\e[0m: Ignoring unknown option '$1'";;
esac
shift
done
# Defaults
test -z ${prefix} && prefix="/usr/local"
test -z ${bindir} && bindir=${prefix}/bin
test -z ${sbindir} && sbindir=${prefix}/sbin
test -z ${libexecdir} && libexecdir=${prefix}/bin
test -z ${datarootdir} && datarootdir=${prefix}/share
test -z ${datadir} && datadir=${datarootdir}
test -z ${sysconfdir} && sysconfdir=${prefix}/etc
test -z ${libdir} && libdir=${prefix}/lib
test -z ${mandir} && mandir=${prefix}/share/man
test -z ${includedir} && includedir=${prefix}/include
# The source directory is the location of this file
srcdir=$(dirname $0)
# The build directory is the current location
builddir=`pwd`
# If we're calling this file from the source directory then
# we automatically create a build directory and ensure that
# both Meson and Ninja invocations are relative to that
# location
if [[ -f "${builddir}/meson.build" ]]; then
mkdir -p _build
builddir="${builddir}/_build"
NINJA_OPT="-C ${builddir}"
fi
# Wrapper Makefile for Ninja
cat > Makefile <<END
# Generated by configure; do not edit
all:
CC="\$(CC)" CXX="\$(CXX)" ${NINJA} ${NINJA_OPT}
install:
DESTDIR="\$(DESTDIR)" ${NINJA} ${NINJA_OPT} install
check:
${MESON} test ${NINJA_OPT}
END
echo "Summary:"
echo " meson:....... ${MESON}"
echo " ninja:....... ${NINJA}"
echo " prefix:...... ${prefix}"
echo " bindir:...... ${bindir}"
echo " sbindir:..... ${sbindir}"
echo " libexecdir:.. ${libexecdir}"
echo " datarootdir:. ${datarootdir}"
echo " datadir:..... ${datadir}"
echo " sysconfdir:.. ${sysconfdir}"
echo " libdir:...... ${libdir}"
echo " mandir:...... ${mandir}"
echo " includedir:.. ${includedir}"
echo " additional:.."
echo " - ${enable_docs} ${enable_man} ${enable_introspection}"
exec ${MESON} \
--prefix=${prefix} \
--libdir=${libdir} \
--libexecdir=${libexecdir} \
--datadir=${datadir} \
--sysconfdir=${sysconfdir} \
--bindir=${bindir} \
--includedir=${includedir} \
--mandir=${mandir} \
--default-library shared \
${enable_docs} \
${enable_man} \
${enable_introspection} \
${builddir} \
${srcdir}
# vim: ai ts=8 noet sts=2 ft=sh

View File

@@ -1,33 +0,0 @@
Gnome-shell OSK layouts are extracted from CLDR layout definitions:
https://www.unicode.org/cldr/charts/latest/keyboards/layouts/index.html
Updating these involves several steps:
1) Downloading and unzipping the tarball found at:
http://www.unicode.org/Public/cldr/latest/keyboards.zip
This file contains XML files describing the keyboard layouts.
2) Cloning the cldr2json script at:
git://repo.or.cz/cldr2json.git
It will be used to convert the XML files into JSON that can be
directly consumed by gnome-shell.
3) Running the script to produce the files:
./cldr2json <input-directory> <output-directory>
We shall usually use the "android" folder, since that's most
complete, and similar to our UI and target sizes. And the target
directory must be data/osk-layouts in this repository.
4) Modify gnome-shell-osk-layouts.gresource.xml to include the files
5) Do git add on the updated/new files, and git commit.
Or alternatively:
1) Run update-osk-layouts.sh
2) Do git add and git commit

View File

@@ -1,57 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<gresources>
<gresource prefix="/org/gnome/shell/osk-layouts">
<file>am.json</file>
<file>ara.json</file>
<file>be.json</file>
<file>bg.json</file>
<file>by.json</file>
<file>cz.json</file>
<file>de.json</file>
<file>dk.json</file>
<file>ee.json</file>
<file>epo.json</file>
<file>es+cat.json</file>
<file>es.json</file>
<file>fi.json</file>
<file>fr.json</file>
<file>ge.json</file>
<file>gr.json</file>
<file>hr.json</file>
<file>hu.json</file>
<file>id.json</file>
<file>il.json</file>
<file>in+bolnagri.json</file>
<file>ir.json</file>
<file>is.json</file>
<file>it.json</file>
<file>ke.json</file>
<file>kg.json</file>
<file>kh.json</file>
<file>la.json</file>
<file>latam.json</file>
<file>lt.json</file>
<file>lv.json</file>
<file>mk.json</file>
<file>mn.json</file>
<file>my.json</file>
<file>nl.json</file>
<file>no.json</file>
<file>ph.json</file>
<file>pl.json</file>
<file>pt.json</file>
<file>ro.json</file>
<file>rs.json</file>
<file>ru.json</file>
<file>se.json</file>
<file>si.json</file>
<file>sk.json</file>
<file>th.json</file>
<file>tr.json</file>
<file>ua.json</file>
<file>uk.json</file>
<file>us.json</file>
<file>vn.json</file>
<file>za.json</file>
</gresource>
</gresources>

View File

@@ -62,14 +62,6 @@ theme_resources = gnome.compile_resources(
install_dir: pkgdatadir
)
osk_layout_resources = gnome.compile_resources(
'gnome-shell-osk-layouts', 'gnome-shell-osk-layouts.gresource.xml',
source_dir: 'osk-layouts',
gresource_bundle: true,
install: true,
install_dir: pkgdatadir
)
perfconf = configuration_data()
perfconf.set('datadir', datadir)
configure_file(

View File

@@ -1,599 +0,0 @@
{
"levels": [
{
"level": "",
"mode": "default",
"rows": [
[
[
"է"
],
[
"թ"
],
[
"փ"
],
[
"ձ"
],
[
"ջ"
],
[
"ր"
],
[
"չ"
],
[
"ճ"
],
[
"ժ"
],
[
"ծ"
]
],
[
[
"ք"
],
[
"ո"
],
[
"ե",
"և"
],
[
"ռ"
],
[
"տ"
],
[
"ը"
],
[
"ւ"
],
[
"ի"
],
[
"օ"
],
[
"պ"
]
],
[
[
"ա"
],
[
"ս"
],
[
"դ"
],
[
"ֆ"
],
[
"գ"
],
[
"հ"
],
[
"յ"
],
[
"կ"
],
[
"լ"
],
[
"խ"
]
],
[
[
"զ"
],
[
"ղ"
],
[
"ց"
],
[
"վ"
],
[
"բ"
],
[
"ն"
],
[
"մ"
],
[
"շ"
]
],
[
[
","
],
[
" "
],
[
"։"
]
]
]
},
{
"level": "shift",
"mode": "latched",
"rows": [
[
[
"Է"
],
[
"Թ"
],
[
"Փ"
],
[
"Ձ"
],
[
"Ջ"
],
[
"Ր"
],
[
"Չ"
],
[
"Ճ"
],
[
"Ժ"
],
[
"Ծ"
]
],
[
[
"Ք"
],
[
"Ո"
],
[
"Ե",
"ԵՒ"
],
[
"Ռ"
],
[
"Տ"
],
[
"Ը"
],
[
"Ւ"
],
[
"Ի"
],
[
"Օ"
],
[
"Պ"
]
],
[
[
"Ա"
],
[
"Ս"
],
[
"Դ"
],
[
"Ֆ"
],
[
"Գ"
],
[
"Հ"
],
[
"Յ"
],
[
"Կ"
],
[
"Լ"
],
[
"Խ"
]
],
[
[
"Զ"
],
[
"Ղ"
],
[
"Ց"
],
[
"Վ"
],
[
"Բ"
],
[
"Ն"
],
[
"Մ"
],
[
"Շ"
]
],
[
[
","
],
[
" "
],
[
"։"
]
]
]
},
{
"level": "opt",
"mode": "locked",
"rows": [
[
[
"1",
"¹",
"½",
"⅓",
"¼",
"⅛"
],
[
"2",
"²",
"⅔"
],
[
"3",
"³",
"¾",
"⅜"
],
[
"4",
"⁴"
],
[
"5",
"⅝"
],
[
"6"
],
[
"7",
"⅞"
],
[
"8"
],
[
"9"
],
[
"0",
"ⁿ",
"∅"
]
],
[
[
"@"
],
[
"#"
],
[
"$",
"¢",
"£",
"€",
"¥",
"₱"
],
[
"%",
"‰"
],
[
"&"
],
[
"-",
"_",
"",
"—",
"·"
],
[
"+",
"±"
],
[
"(",
"<",
"{",
"["
],
[
")",
">",
"}",
"]"
]
],
[
[
"*",
"†",
"‡",
"★"
],
[
"\"",
"“",
"”",
"«",
"»"
],
[
"'",
"",
"",
"",
""
],
[
":"
],
[
";"
],
[
"!",
"՜",
"¡"
],
[
"?",
"՞",
"¿"
]
],
[
[
"_"
],
[
"/"
],
[
" "
],
[
"՝"
],
[
"։",
"!",
"?",
",",
".",
"֊",
"՜",
"՝",
"՞",
":",
";",
"@",
"ՙ",
"՚",
"՛",
"՟"
]
]
]
},
{
"level": "opt+shift",
"mode": "locked",
"rows": [
[
[
"~"
],
[
"`"
],
[
"|"
],
[
"•",
"♪",
"♥",
"♠",
"♦",
"♣"
],
[
"√"
],
[
"Π",
"π"
],
[
"÷"
],
[
"×"
],
[
"¶",
"§"
],
[
"∆"
]
],
[
[
"£"
],
[
"¢"
],
[
"€"
],
[
"¥"
],
[
"^",
"↑",
"↓",
"←",
"→"
],
[
"°",
"",
"″"
],
[
"=",
"≠",
"≈",
"∞"
],
[
"{"
],
[
"}"
]
],
[
[
"\\"
],
[
"©"
],
[
"®"
],
[
"™"
],
[
"℅"
],
[
"["
],
[
"]"
]
],
[
[
"<",
"",
"≤",
"«"
],
[
">",
"",
"≥",
"»"
],
[
" "
],
[
"՝"
],
[
"։",
"!",
"?",
",",
".",
"֊",
"՜",
"՝",
"՞",
":",
";",
"@",
"ՙ",
"՚",
"՛",
"՟"
]
]
]
}
],
"locale": "hy",
"name": "Armenian"
}

View File

@@ -1,488 +0,0 @@
{
"levels": [
{
"level": "",
"mode": "default",
"rows": [
[
[
"ض"
],
[
"ص"
],
[
"ث"
],
[
"ق",
"ڨ"
],
[
"ف",
"ڤ",
"ڢ",
"ڥ"
],
[
"غ"
],
[
"ع"
],
[
"ه",
"ه"
],
[
"خ"
],
[
"ح"
],
[
"ج",
"چ"
]
],
[
[
"ش",
"ڜ"
],
[
"س"
],
[
"ي",
"ئ",
"ى"
],
[
"ب",
"پ"
],
[
"ل",
"لا",
"لأ",
"لإ",
"لآ"
],
[
"ا",
"آ",
"ء",
"أ",
"إ",
"ٱ"
],
[
"ت"
],
[
"ن"
],
[
"م"
],
[
"ك",
"گ",
"ک"
],
[
"ط"
]
],
[
[
"ذ"
],
[
"ء"
],
[
"ؤ"
],
[
"ر"
],
[
"ى",
"ئ"
],
[
"ة"
],
[
"و"
],
[
"ز",
"ژ"
],
[
"ظ"
],
[
"د"
]
],
[
[
"،"
],
[
" "
],
[
".",
"\"",
"'",
"#",
"-",
":",
"!",
"،",
"؟",
"@",
"&",
"%",
"+",
"؛",
"/",
")",
"("
]
]
]
},
{
"level": "opt",
"mode": "locked",
"rows": [
[
[
"١",
"¹",
"½",
"⅓",
"¼",
"⅛"
],
[
"٢",
"²",
"⅔"
],
[
"٣",
"³",
"¾",
"⅜"
],
[
"٤",
"⁴"
],
[
"٥",
"⅝"
],
[
"٦"
],
[
"٧",
"⅞"
],
[
"٨"
],
[
"٩"
],
[
"٠",
"ⁿ",
"∅"
]
],
[
[
"@"
],
[
"#"
],
[
"$",
"¢",
"£",
"€",
"¥",
"₱"
],
[
"٪",
"%",
"‰"
],
[
"&"
],
[
"-",
"_",
"",
"—",
"·"
],
[
"+",
"±"
],
[
"(",
"﴿",
">",
"}",
"]"
],
[
")",
"",
"<",
"{",
"["
]
],
[
[
"*",
"★",
"٭"
],
[
"\"",
"“",
"”",
"«",
"»"
],
[
"'",
"",
"",
"",
""
],
[
":"
],
[
"؛",
";"
],
[
"!",
"¡"
],
[
"؟",
"?"
]
],
[
[
"_"
],
[
"/"
],
[
" "
],
[
"،",
"؟",
"؛",
"!",
":",
"-",
"/",
"'",
"\""
],
[
".",
"ٕ",
"ٔ",
"ْ",
"ٍ",
"ٌ",
"ً",
"ّ",
"ٖ",
"ٰ",
"ٓ",
"ِ",
"ُ",
"َ",
"ـ"
]
]
]
},
{
"level": "opt+shift",
"mode": "locked",
"rows": [
[
[
"~"
],
[
"`"
],
[
"|"
],
[
"•",
"♪"
],
[
"√"
],
[
"Π",
"π"
],
[
"÷"
],
[
"×"
],
[
"¶",
"§"
],
[
"∆"
]
],
[
[
"£"
],
[
"¢"
],
[
"€"
],
[
"¥"
],
[
"^",
"↑",
"↓",
"←",
"→"
],
[
"°",
"",
"″"
],
[
"=",
"≠",
"≈",
"∞"
],
[
"{"
],
[
"}"
]
],
[
[
"\\"
],
[
"©"
],
[
"®"
],
[
"™"
],
[
"℅"
],
[
"["
],
[
"]"
]
],
[
[
"<",
"",
"≥",
"»"
],
[
">",
"",
"≤",
"«"
],
[
" "
],
[
"،",
"؟",
"؛",
"!",
":",
"-",
"/",
"'",
"\""
],
[
".",
"ٕ",
"ٔ",
"ْ",
"ٍ",
"ٌ",
"ً",
"ّ",
"ٖ",
"ٰ",
"ٓ",
"ِ",
"ُ",
"َ",
"ـ"
]
]
]
}
],
"locale": "ar",
"name": "Arabic"
}

View File

@@ -1,584 +0,0 @@
{
"levels": [
{
"level": "",
"mode": "default",
"rows": [
[
[
"q"
],
[
"w"
],
[
"e",
"é",
"ë",
"ê",
"è",
"ę",
"ė",
"ē"
],
[
"r"
],
[
"t"
],
[
"y",
"ij"
],
[
"u",
"ú",
"ü",
"û",
"ù",
"ū"
],
[
"i",
"í",
"ï",
"ì",
"î",
"į",
"ī",
"ij"
],
[
"o",
"ó",
"ö",
"ô",
"ò",
"õ",
"œ",
"ø",
"ō"
],
[
"p"
]
],
[
[
"a",
"á",
"ä",
"â",
"à",
"æ",
"ã",
"å",
"ā"
],
[
"s"
],
[
"d"
],
[
"f"
],
[
"g"
],
[
"h"
],
[
"j"
],
[
"k"
],
[
"l"
]
],
[
[
"z"
],
[
"x"
],
[
"c"
],
[
"v"
],
[
"b"
],
[
"n",
"ñ",
"ń"
],
[
"m"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "shift",
"mode": "latched",
"rows": [
[
[
"Q"
],
[
"W"
],
[
"E",
"É",
"Ë",
"Ê",
"È",
"Ę",
"Ė",
"Ē"
],
[
"R"
],
[
"T"
],
[
"Y",
"IJ"
],
[
"U",
"Ú",
"Ü",
"Û",
"Ù",
"Ū"
],
[
"I",
"Í",
"Ï",
"Ì",
"Î",
"Į",
"Ī",
"IJ"
],
[
"O",
"Ó",
"Ö",
"Ô",
"Ò",
"Õ",
"Œ",
"Ø",
"Ō"
],
[
"P"
]
],
[
[
"A",
"Á",
"Ä",
"Â",
"À",
"Æ",
"Ã",
"Å",
"Ā"
],
[
"S"
],
[
"D"
],
[
"F"
],
[
"G"
],
[
"H"
],
[
"J"
],
[
"K"
],
[
"L"
]
],
[
[
"Z"
],
[
"X"
],
[
"C"
],
[
"V"
],
[
"B"
],
[
"N",
"Ñ",
"Ń"
],
[
"M"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "opt",
"mode": "locked",
"rows": [
[
[
"1",
"¹",
"½",
"⅓",
"¼",
"⅛"
],
[
"2",
"²",
"⅔"
],
[
"3",
"³",
"¾",
"⅜"
],
[
"4",
"⁴"
],
[
"5",
"⅝"
],
[
"6"
],
[
"7",
"⅞"
],
[
"8"
],
[
"9"
],
[
"0",
"ⁿ",
"∅"
]
],
[
[
"@"
],
[
"#"
],
[
"€",
"¢",
"£",
"$",
"¥",
"₱"
],
[
"%",
"‰"
],
[
"&"
],
[
"-",
"_",
"",
"—",
"·"
],
[
"+",
"±"
],
[
"(",
"<",
"{",
"["
],
[
")",
">",
"}",
"]"
]
],
[
[
"*",
"†",
"‡",
"★"
],
[
"\"",
"“",
"”",
"«",
"»"
],
[
"'",
"",
"",
"",
""
],
[
":"
],
[
";"
],
[
"!",
"¡"
],
[
"?",
"¿"
]
],
[
[
"_"
],
[
"/"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
},
{
"level": "opt+shift",
"mode": "locked",
"rows": [
[
[
"~"
],
[
"`"
],
[
"|"
],
[
"•",
"♪",
"♥",
"♠",
"♦",
"♣"
],
[
"√"
],
[
"Π",
"π"
],
[
"÷"
],
[
"×"
],
[
"¶",
"§"
],
[
"∆"
]
],
[
[
"£"
],
[
"¥"
],
[
"$",
"¢"
],
[
"¢"
],
[
"^",
"↑",
"↓",
"←",
"→"
],
[
"°",
"",
"″"
],
[
"=",
"≠",
"≈",
"∞"
],
[
"{"
],
[
"}"
]
],
[
[
"\\"
],
[
"©"
],
[
"®"
],
[
"™"
],
[
"℅"
],
[
"["
],
[
"]"
]
],
[
[
"<",
"",
"≤",
"«"
],
[
">",
"",
"≥",
"»"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
}
],
"locale": "nl-BE",
"name": "Dutch (Belgium)"
}

View File

@@ -1,533 +0,0 @@
{
"levels": [
{
"level": "",
"mode": "default",
"rows": [
[
[
"я"
],
[
"в"
],
[
"е"
],
[
"р"
],
[
"т"
],
[
"ъ"
],
[
"у"
],
[
"и",
"ѝ"
],
[
"о"
],
[
"п"
],
[
"ч"
]
],
[
[
"а"
],
[
"с"
],
[
"д"
],
[
"ф"
],
[
"г"
],
[
"х"
],
[
"й"
],
[
"к"
],
[
"л"
],
[
"ш"
],
[
"щ"
]
],
[
[
"з"
],
[
"ь"
],
[
"ц"
],
[
"ж"
],
[
"б"
],
[
"н"
],
[
"м"
],
[
"ю"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "shift",
"mode": "latched",
"rows": [
[
[
"Я"
],
[
"В"
],
[
"Е"
],
[
"Р"
],
[
"Т"
],
[
"Ъ"
],
[
"У"
],
[
"И",
"Ѝ"
],
[
"О"
],
[
"П"
],
[
"Ч"
]
],
[
[
"А"
],
[
"С"
],
[
"Д"
],
[
"Ф"
],
[
"Г"
],
[
"Х"
],
[
"Й"
],
[
"К"
],
[
"Л"
],
[
"Ш"
],
[
"Щ"
]
],
[
[
"З"
],
[
"Ь"
],
[
"Ц"
],
[
"Ж"
],
[
"Б"
],
[
"Н"
],
[
"М"
],
[
"Ю"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "opt",
"mode": "locked",
"rows": [
[
[
"1",
"¹",
"½",
"⅓",
"¼",
"⅛"
],
[
"2",
"²",
"⅔"
],
[
"3",
"³",
"¾",
"⅜"
],
[
"4",
"⁴"
],
[
"5",
"⅝"
],
[
"6"
],
[
"7",
"⅞"
],
[
"8"
],
[
"9"
],
[
"0",
"ⁿ",
"∅"
]
],
[
[
"@"
],
[
"#"
],
[
"$",
"¢",
"£",
"€",
"¥",
"₱"
],
[
"%",
"‰"
],
[
"&"
],
[
"-",
"_",
"",
"—",
"·"
],
[
"+",
"±"
],
[
"(",
"<",
"{",
"["
],
[
")",
">",
"}",
"]"
]
],
[
[
"*",
"†",
"‡",
"★"
],
[
"\"",
"“",
"”",
"«",
"»"
],
[
"'",
"",
"",
"",
""
],
[
":"
],
[
";"
],
[
"!",
"¡"
],
[
"?",
"¿"
]
],
[
[
"_"
],
[
"/"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
},
{
"level": "opt+shift",
"mode": "locked",
"rows": [
[
[
"~"
],
[
"`"
],
[
"|"
],
[
"•",
"♪",
"♥",
"♠",
"♦",
"♣"
],
[
"√"
],
[
"Π",
"π"
],
[
"÷"
],
[
"×"
],
[
"¶",
"§"
],
[
"∆"
]
],
[
[
"£"
],
[
"¢"
],
[
"€"
],
[
"¥"
],
[
"^",
"↑",
"↓",
"←",
"→"
],
[
"°",
"",
"″"
],
[
"=",
"≠",
"≈",
"∞"
],
[
"{"
],
[
"}"
]
],
[
[
"\\"
],
[
"©"
],
[
"®"
],
[
"™"
],
[
"℅"
],
[
"["
],
[
"]"
]
],
[
[
"<",
"",
"≤",
"«"
],
[
">",
"",
"≥",
"»"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
}
],
"locale": "bg",
"name": "Bulgarian"
}

View File

@@ -1,541 +0,0 @@
{
"levels": [
{
"level": "",
"mode": "default",
"rows": [
[
[
"й"
],
[
"ц"
],
[
"у"
],
[
"к"
],
[
"е",
"ё"
],
[
"н"
],
[
"г"
],
[
"ш"
],
[
"ў"
],
[
"з"
],
[
"х"
]
],
[
[
"ф"
],
[
"ы"
],
[
"в"
],
[
"а"
],
[
"п"
],
[
"р"
],
[
"о"
],
[
"л"
],
[
"д"
],
[
"ж"
],
[
"э"
]
],
[
[
"я"
],
[
"ч"
],
[
"с"
],
[
"м"
],
[
"і"
],
[
"т"
],
[
"ь",
"ъ"
],
[
"б"
],
[
"ю"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "shift",
"mode": "latched",
"rows": [
[
[
"Й"
],
[
"Ц"
],
[
"У"
],
[
"К"
],
[
"Е",
"Ё"
],
[
"Н"
],
[
"Г"
],
[
"Ш"
],
[
"Ў"
],
[
"З"
],
[
"Х"
]
],
[
[
"Ф"
],
[
"Ы"
],
[
"В"
],
[
"А"
],
[
"П"
],
[
"Р"
],
[
"О"
],
[
"Л"
],
[
"Д"
],
[
"Ж"
],
[
"Э"
]
],
[
[
"Я"
],
[
"Ч"
],
[
"С"
],
[
"М"
],
[
"І"
],
[
"Т"
],
[
"Ь",
"Ъ"
],
[
"Б"
],
[
"Ю"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "opt",
"mode": "locked",
"rows": [
[
[
"1",
"¹",
"½",
"⅓",
"¼",
"⅛"
],
[
"2",
"²",
"⅔"
],
[
"3",
"³",
"¾",
"⅜"
],
[
"4",
"⁴"
],
[
"5",
"⅝"
],
[
"6"
],
[
"7",
"⅞"
],
[
"8"
],
[
"9"
],
[
"0",
"ⁿ",
"∅"
]
],
[
[
"@"
],
[
"#"
],
[
"$",
"¢",
"£",
"€",
"¥",
"₱"
],
[
"%",
"‰"
],
[
"&"
],
[
"-",
"_",
"",
"—",
"·"
],
[
"+",
"±"
],
[
"(",
"<",
"{",
"["
],
[
")",
">",
"}",
"]"
]
],
[
[
"*",
"†",
"‡",
"★"
],
[
"\"",
"“",
"”",
"«",
"»"
],
[
"'",
"",
"",
"",
""
],
[
":"
],
[
";"
],
[
"!",
"¡"
],
[
"?",
"¿"
]
],
[
[
"_"
],
[
"/"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
},
{
"level": "opt+shift",
"mode": "locked",
"rows": [
[
[
"~"
],
[
"`"
],
[
"|"
],
[
"•",
"♪",
"♥",
"♠",
"♦",
"♣"
],
[
"√"
],
[
"Π",
"π"
],
[
"÷"
],
[
"×"
],
[
"¶",
"§"
],
[
"∆"
]
],
[
[
"£"
],
[
"¢"
],
[
"€"
],
[
"¥"
],
[
"^",
"↑",
"↓",
"←",
"→"
],
[
"°",
"",
"″"
],
[
"=",
"≠",
"≈",
"∞"
],
[
"{"
],
[
"}"
]
],
[
[
"\\"
],
[
"©"
],
[
"®"
],
[
"™"
],
[
"℅"
],
[
"["
],
[
"]"
]
],
[
[
"<",
"",
"≤",
"«"
],
[
">",
"",
"≥",
"»"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
}
],
"locale": "be",
"name": "Belarusian"
}

View File

@@ -1,613 +0,0 @@
{
"levels": [
{
"level": "",
"mode": "default",
"rows": [
[
[
"q"
],
[
"w"
],
[
"e",
"é",
"ě",
"è",
"ê",
"ë",
"ę",
"ė",
"ē"
],
[
"r",
"ř"
],
[
"t",
"ť"
],
[
"z",
"ž",
"ź",
"ż"
],
[
"u",
"ú",
"ů",
"û",
"ü",
"ù",
"ū"
],
[
"i",
"í",
"î",
"ï",
"ì",
"į",
"ī"
],
[
"o",
"ó",
"ö",
"ô",
"ò",
"õ",
"œ",
"ø",
"ō"
],
[
"p"
]
],
[
[
"a",
"á",
"à",
"â",
"ä",
"æ",
"ã",
"å",
"ā"
],
[
"s",
"š",
"ß",
"ś"
],
[
"d",
"ď"
],
[
"f"
],
[
"g"
],
[
"h"
],
[
"j"
],
[
"k"
],
[
"l"
]
],
[
[
"y",
"ý",
"ÿ"
],
[
"x"
],
[
"c",
"č",
"ç",
"ć"
],
[
"v"
],
[
"b"
],
[
"n",
"ň",
"ñ",
"ń"
],
[
"m"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "shift",
"mode": "latched",
"rows": [
[
[
"Q"
],
[
"W"
],
[
"E",
"É",
"Ě",
"È",
"Ê",
"Ë",
"Ę",
"Ė",
"Ē"
],
[
"R",
"Ř"
],
[
"T",
"Ť"
],
[
"Z",
"Ž",
"Ź",
"Ż"
],
[
"U",
"Ú",
"Ů",
"Û",
"Ü",
"Ù",
"Ū"
],
[
"I",
"Í",
"Î",
"Ï",
"Ì",
"Į",
"Ī"
],
[
"O",
"Ó",
"Ö",
"Ô",
"Ò",
"Õ",
"Œ",
"Ø",
"Ō"
],
[
"P"
]
],
[
[
"A",
"Á",
"À",
"Â",
"Ä",
"Æ",
"Ã",
"Å",
"Ā"
],
[
"S",
"Š",
"SS",
"Ś"
],
[
"D",
"Ď"
],
[
"F"
],
[
"G"
],
[
"H"
],
[
"J"
],
[
"K"
],
[
"L"
]
],
[
[
"Y",
"Ý",
"Ÿ"
],
[
"X"
],
[
"C",
"Č",
"Ç",
"Ć"
],
[
"V"
],
[
"B"
],
[
"N",
"Ň",
"Ñ",
"Ń"
],
[
"M"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "opt",
"mode": "locked",
"rows": [
[
[
"1",
"¹",
"½",
"⅓",
"¼",
"⅛"
],
[
"2",
"²",
"⅔"
],
[
"3",
"³",
"¾",
"⅜"
],
[
"4",
"⁴"
],
[
"5",
"⅝"
],
[
"6"
],
[
"7",
"⅞"
],
[
"8"
],
[
"9"
],
[
"0",
"ⁿ",
"∅"
]
],
[
[
"@"
],
[
"#"
],
[
"$",
"¢",
"£",
"€",
"¥",
"₱"
],
[
"%",
"‰"
],
[
"&"
],
[
"-",
"_",
"",
"—",
"·"
],
[
"+",
"±"
],
[
"(",
"<",
"{",
"["
],
[
")",
">",
"}",
"]"
]
],
[
[
"*",
"†",
"‡",
"★"
],
[
"\"",
"“",
"”",
"«",
"»"
],
[
"'",
"",
"",
"",
""
],
[
":"
],
[
";"
],
[
"!",
"¡"
],
[
"?",
"¿"
]
],
[
[
"_"
],
[
"/"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
},
{
"level": "opt+shift",
"mode": "locked",
"rows": [
[
[
"~"
],
[
"`"
],
[
"|"
],
[
"•",
"♪",
"♥",
"♠",
"♦",
"♣"
],
[
"√"
],
[
"Π",
"π"
],
[
"÷"
],
[
"×"
],
[
"¶",
"§"
],
[
"∆"
]
],
[
[
"£"
],
[
"¢"
],
[
"€"
],
[
"¥"
],
[
"^",
"↑",
"↓",
"←",
"→"
],
[
"°",
"",
"″"
],
[
"=",
"≠",
"≈",
"∞"
],
[
"{"
],
[
"}"
]
],
[
[
"\\"
],
[
"©"
],
[
"®"
],
[
"™"
],
[
"℅"
],
[
"["
],
[
"]"
]
],
[
[
"<",
"",
"≤",
"«"
],
[
">",
"",
"≥",
"»"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
}
],
"locale": "cs",
"name": "Czech"
}

View File

@@ -1,570 +0,0 @@
{
"levels": [
{
"level": "",
"mode": "default",
"rows": [
[
[
"q"
],
[
"w"
],
[
"e",
"é",
"è",
"ê",
"ë",
"ė"
],
[
"r"
],
[
"t"
],
[
"z"
],
[
"u",
"ü",
"û",
"ù",
"ú",
"ū"
],
[
"i"
],
[
"o",
"ö",
"ô",
"ò",
"ó",
"õ",
"œ",
"ø",
"ō"
],
[
"p"
]
],
[
[
"a",
"ä",
"â",
"à",
"á",
"æ",
"ã",
"å",
"ā"
],
[
"s",
"ß",
"ś",
"š"
],
[
"d"
],
[
"f"
],
[
"g"
],
[
"h"
],
[
"j"
],
[
"k"
],
[
"l"
]
],
[
[
"y"
],
[
"x"
],
[
"c"
],
[
"v"
],
[
"b"
],
[
"n",
"ñ",
"ń"
],
[
"m"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "shift",
"mode": "latched",
"rows": [
[
[
"Q"
],
[
"W"
],
[
"E",
"É",
"È",
"Ê",
"Ë",
"Ė"
],
[
"R"
],
[
"T"
],
[
"Z"
],
[
"U",
"Ü",
"Û",
"Ù",
"Ú",
"Ū"
],
[
"I"
],
[
"O",
"Ö",
"Ô",
"Ò",
"Ó",
"Õ",
"Œ",
"Ø",
"Ō"
],
[
"P"
]
],
[
[
"A",
"Ä",
"Â",
"À",
"Á",
"Æ",
"Ã",
"Å",
"Ā"
],
[
"S",
"SS",
"Ś",
"Š"
],
[
"D"
],
[
"F"
],
[
"G"
],
[
"H"
],
[
"J"
],
[
"K"
],
[
"L"
]
],
[
[
"Y"
],
[
"X"
],
[
"C"
],
[
"V"
],
[
"B"
],
[
"N",
"Ñ",
"Ń"
],
[
"M"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "opt",
"mode": "locked",
"rows": [
[
[
"1",
"¹",
"½",
"⅓",
"¼",
"⅛"
],
[
"2",
"²",
"⅔"
],
[
"3",
"³",
"¾",
"⅜"
],
[
"4",
"⁴"
],
[
"5",
"⅝"
],
[
"6"
],
[
"7",
"⅞"
],
[
"8"
],
[
"9"
],
[
"0",
"ⁿ",
"∅"
]
],
[
[
"@"
],
[
"#"
],
[
"€",
"¢",
"£",
"$",
"¥",
"₱"
],
[
"%",
"‰"
],
[
"&"
],
[
"-",
"_",
"",
"—",
"·"
],
[
"+",
"±"
],
[
"(",
"<",
"{",
"["
],
[
")",
">",
"}",
"]"
]
],
[
[
"*",
"†",
"‡",
"★"
],
[
"\"",
"“",
"”",
"«",
"»"
],
[
"'",
"",
"",
"",
""
],
[
":"
],
[
";"
],
[
"!",
"¡"
],
[
"?",
"¿"
]
],
[
[
"_"
],
[
"/"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
},
{
"level": "opt+shift",
"mode": "locked",
"rows": [
[
[
"~"
],
[
"`"
],
[
"|"
],
[
"•",
"♪",
"♥",
"♠",
"♦",
"♣"
],
[
"√"
],
[
"Π",
"π"
],
[
"÷"
],
[
"×"
],
[
"¶",
"§"
],
[
"∆"
]
],
[
[
"£"
],
[
"¥"
],
[
"$",
"¢"
],
[
"¢"
],
[
"^",
"↑",
"↓",
"←",
"→"
],
[
"°",
"",
"″"
],
[
"=",
"≠",
"≈",
"∞"
],
[
"{"
],
[
"}"
]
],
[
[
"\\"
],
[
"©"
],
[
"®"
],
[
"™"
],
[
"℅"
],
[
"["
],
[
"]"
]
],
[
[
"<",
"",
"≤",
"«"
],
[
">",
"",
"≥",
"»"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
}
],
"locale": "de",
"name": "German"
}

View File

@@ -1,590 +0,0 @@
{
"levels": [
{
"level": "",
"mode": "default",
"rows": [
[
[
"q"
],
[
"w"
],
[
"e",
"é",
"ë"
],
[
"r"
],
[
"t"
],
[
"y",
"ý",
"ÿ"
],
[
"u",
"ú",
"ü",
"û",
"ù",
"ū"
],
[
"i",
"í",
"ï"
],
[
"o",
"ó",
"ô",
"ò",
"õ",
"œ",
"ō"
],
[
"p"
],
[
"å"
]
],
[
[
"a",
"á",
"ä",
"à",
"â",
"ã",
"ā"
],
[
"s",
"ß",
"ś",
"š"
],
[
"d",
"ð"
],
[
"f"
],
[
"g"
],
[
"h"
],
[
"j"
],
[
"k"
],
[
"l",
"ł"
],
[
"æ",
"ä"
],
[
"ø",
"ö"
]
],
[
[
"z"
],
[
"x"
],
[
"c"
],
[
"v"
],
[
"b"
],
[
"n",
"ñ",
"ń"
],
[
"m"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "shift",
"mode": "latched",
"rows": [
[
[
"Q"
],
[
"W"
],
[
"E",
"É",
"Ë"
],
[
"R"
],
[
"T"
],
[
"Y",
"Ý",
"Ÿ"
],
[
"U",
"Ú",
"Ü",
"Û",
"Ù",
"Ū"
],
[
"I",
"Í",
"Ï"
],
[
"O",
"Ó",
"Ô",
"Ò",
"Õ",
"Œ",
"Ō"
],
[
"P"
],
[
"Å"
]
],
[
[
"A",
"Á",
"Ä",
"À",
"Â",
"Ã",
"Ā"
],
[
"S",
"SS",
"Ś",
"Š"
],
[
"D",
"Ð"
],
[
"F"
],
[
"G"
],
[
"H"
],
[
"J"
],
[
"K"
],
[
"L",
"Ł"
],
[
"Æ",
"Ä"
],
[
"Ø",
"Ö"
]
],
[
[
"Z"
],
[
"X"
],
[
"C"
],
[
"V"
],
[
"B"
],
[
"N",
"Ñ",
"Ń"
],
[
"M"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "opt",
"mode": "locked",
"rows": [
[
[
"1",
"¹",
"½",
"⅓",
"¼",
"⅛"
],
[
"2",
"²",
"⅔"
],
[
"3",
"³",
"¾",
"⅜"
],
[
"4",
"⁴"
],
[
"5",
"⅝"
],
[
"6"
],
[
"7",
"⅞"
],
[
"8"
],
[
"9"
],
[
"0",
"ⁿ",
"∅"
]
],
[
[
"@"
],
[
"#"
],
[
"€",
"¢",
"£",
"$",
"¥",
"₱"
],
[
"%",
"‰"
],
[
"&"
],
[
"-",
"_",
"",
"—",
"·"
],
[
"+",
"±"
],
[
"(",
"<",
"{",
"["
],
[
")",
">",
"}",
"]"
]
],
[
[
"*",
"†",
"‡",
"★"
],
[
"\"",
"“",
"”",
"«",
"»"
],
[
"'",
"",
"",
"",
""
],
[
":"
],
[
";"
],
[
"!",
"¡"
],
[
"?",
"¿"
]
],
[
[
"_"
],
[
"/"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
},
{
"level": "opt+shift",
"mode": "locked",
"rows": [
[
[
"~"
],
[
"`"
],
[
"|"
],
[
"•",
"♪",
"♥",
"♠",
"♦",
"♣"
],
[
"√"
],
[
"Π",
"π"
],
[
"÷"
],
[
"×"
],
[
"¶",
"§"
],
[
"∆"
]
],
[
[
"£"
],
[
"¥"
],
[
"$",
"¢"
],
[
"¢"
],
[
"^",
"↑",
"↓",
"←",
"→"
],
[
"°",
"",
"″"
],
[
"=",
"≠",
"≈",
"∞"
],
[
"{"
],
[
"}"
]
],
[
[
"\\"
],
[
"©"
],
[
"®"
],
[
"™"
],
[
"℅"
],
[
"["
],
[
"]"
]
],
[
[
"<",
"",
"≤",
"«"
],
[
">",
"",
"≥",
"»"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
}
],
"locale": "da",
"name": "Danish"
}

View File

@@ -1,666 +0,0 @@
{
"levels": [
{
"level": "",
"mode": "default",
"rows": [
[
[
"q"
],
[
"w"
],
[
"e",
"ē",
"è",
"ė",
"é",
"ê",
"ë",
"ę",
"ě"
],
[
"r",
"ŗ",
"ř",
"ŕ"
],
[
"t",
"ţ",
"ť"
],
[
"y",
"ý",
"ÿ"
],
[
"u",
"ü",
"ū",
"ų",
"ù",
"ú",
"û",
"ů",
"ű"
],
[
"i",
"ī",
"ì",
"į",
"í",
"î",
"ï",
"ı"
],
[
"o",
"ö",
"õ",
"ò",
"ó",
"ô",
"œ",
"ő",
"ø"
],
[
"p"
],
[
"ü"
]
],
[
[
"a",
"ä",
"ā",
"à",
"á",
"â",
"ã",
"å",
"æ",
"ą"
],
[
"s",
"š",
"ß",
"ś",
"ş"
],
[
"d",
"ď"
],
[
"f"
],
[
"g",
"ģ",
"ğ"
],
[
"h"
],
[
"j"
],
[
"k",
"ķ"
],
[
"l",
"ļ",
"ł",
"ĺ",
"ľ"
],
[
"ö",
"õ"
],
[
"ä"
]
],
[
[
"z",
"ž",
"ż",
"ź"
],
[
"x"
],
[
"c",
"č",
"ç",
"ć"
],
[
"v"
],
[
"b"
],
[
"n",
"ņ",
"ñ",
"ń",
"ń"
],
[
"m"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "shift",
"mode": "latched",
"rows": [
[
[
"Q"
],
[
"W"
],
[
"E",
"Ē",
"È",
"Ė",
"É",
"Ê",
"Ë",
"Ę",
"Ě"
],
[
"R",
"Ŗ",
"Ř",
"Ŕ"
],
[
"T",
"Ţ",
"Ť"
],
[
"Y",
"Ý",
"Ÿ"
],
[
"U",
"Ü",
"Ū",
"Ų",
"Ù",
"Ú",
"Û",
"Ů",
"Ű"
],
[
"I",
"Ī",
"Ì",
"Į",
"Í",
"Î",
"Ï",
"I"
],
[
"O",
"Ö",
"Õ",
"Ò",
"Ó",
"Ô",
"Œ",
"Ő",
"Ø"
],
[
"P"
],
[
"Ü"
]
],
[
[
"A",
"Ä",
"Ā",
"À",
"Á",
"Â",
"Ã",
"Å",
"Æ",
"Ą"
],
[
"S",
"Š",
"SS",
"Ś",
"Ş"
],
[
"D",
"Ď"
],
[
"F"
],
[
"G",
"Ģ",
"Ğ"
],
[
"H"
],
[
"J"
],
[
"K",
"Ķ"
],
[
"L",
"Ļ",
"Ł",
"Ĺ",
"Ľ"
],
[
"Ö",
"Õ"
],
[
"Ä"
]
],
[
[
"Z",
"Ž",
"Ż",
"Ź"
],
[
"X"
],
[
"C",
"Č",
"Ç",
"Ć"
],
[
"V"
],
[
"B"
],
[
"N",
"Ņ",
"Ñ",
"Ń",
"Ń"
],
[
"M"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "opt",
"mode": "locked",
"rows": [
[
[
"1",
"¹",
"½",
"⅓",
"¼",
"⅛"
],
[
"2",
"²",
"⅔"
],
[
"3",
"³",
"¾",
"⅜"
],
[
"4",
"⁴"
],
[
"5",
"⅝"
],
[
"6"
],
[
"7",
"⅞"
],
[
"8"
],
[
"9"
],
[
"0",
"ⁿ",
"∅"
]
],
[
[
"@"
],
[
"#"
],
[
"€",
"¢",
"£",
"$",
"¥",
"₱"
],
[
"%",
"‰"
],
[
"&"
],
[
"-",
"_",
"",
"—",
"·"
],
[
"+",
"±"
],
[
"(",
"<",
"{",
"["
],
[
")",
">",
"}",
"]"
]
],
[
[
"*",
"†",
"‡",
"★"
],
[
"\"",
"“",
"”",
"«",
"»"
],
[
"'",
"",
"",
"",
""
],
[
":"
],
[
";"
],
[
"!",
"¡"
],
[
"?",
"¿"
]
],
[
[
"_"
],
[
"/"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
},
{
"level": "opt+shift",
"mode": "locked",
"rows": [
[
[
"~"
],
[
"`"
],
[
"|"
],
[
"•",
"♪",
"♥",
"♠",
"♦",
"♣"
],
[
"√"
],
[
"Π",
"π"
],
[
"÷"
],
[
"×"
],
[
"¶",
"§"
],
[
"∆"
]
],
[
[
"£"
],
[
"¥"
],
[
"$",
"¢"
],
[
"¢"
],
[
"^",
"↑",
"↓",
"←",
"→"
],
[
"°",
"",
"″"
],
[
"=",
"≠",
"≈",
"∞"
],
[
"{"
],
[
"}"
]
],
[
[
"\\"
],
[
"©"
],
[
"®"
],
[
"™"
],
[
"℅"
],
[
"["
],
[
"]"
]
],
[
[
"<",
"",
"≤",
"«"
],
[
">",
"",
"≥",
"»"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
}
],
"locale": "et",
"name": "Estonian"
}

View File

@@ -1,711 +0,0 @@
{
"levels": [
{
"level": "",
"mode": "default",
"rows": [
[
[
"ŝ",
"q"
],
[
"ĝ",
"w",
"ŵ"
],
[
"e",
"é",
"ě",
"è",
"ê",
"ë",
"ę",
"ė",
"ē"
],
[
"r",
"ř",
"ŕ",
"ŗ"
],
[
"t",
"ť",
"ț",
"ţ",
"ŧ"
],
[
"ŭ",
"y",
"ý",
"ŷ",
"ÿ",
"þ"
],
[
"u",
"ú",
"ů",
"û",
"ü",
"ù",
"ū",
"ũ",
"ű",
"ų",
"µ"
],
[
"i",
"í",
"î",
"ï",
"ĩ",
"ì",
"į",
"ī",
"ı",
"ij"
],
[
"o",
"ó",
"ö",
"ô",
"ò",
"õ",
"œ",
"ø",
"ō",
"ő",
"º"
],
[
"p"
]
],
[
[
"a",
"á",
"à",
"â",
"ä",
"æ",
"ã",
"å",
"ā",
"ă",
"ą",
"ª"
],
[
"s",
"ß",
"š",
"ś",
"ș",
"ş"
],
[
"d",
"ð",
"ď",
"đ"
],
[
"f"
],
[
"g",
"ğ",
"ġ",
"ģ"
],
[
"h",
"ĥ",
"ħ"
],
[
"j"
],
[
"k",
"ķ",
"ĸ"
],
[
"l",
"ĺ",
"ļ",
"ľ",
"ŀ",
"ł"
],
[
"ĵ"
]
],
[
[
"z",
"ź",
"ż",
"ž"
],
[
"ĉ",
"x"
],
[
"c",
"ć",
"č",
"ç",
"ċ"
],
[
"v",
"w",
"ŵ"
],
[
"b"
],
[
"n",
"ñ",
"ń",
"ņ",
"ň",
"ʼn",
"ŋ"
],
[
"m"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "shift",
"mode": "latched",
"rows": [
[
[
"Ŝ",
"Q"
],
[
"Ĝ",
"W",
"Ŵ"
],
[
"E",
"É",
"Ě",
"È",
"Ê",
"Ë",
"Ę",
"Ė",
"Ē"
],
[
"R",
"Ř",
"Ŕ",
"Ŗ"
],
[
"T",
"Ť",
"Ț",
"Ţ",
"Ŧ"
],
[
"Ŭ",
"Y",
"Ý",
"Ŷ",
"Ÿ",
"Þ"
],
[
"U",
"Ú",
"Ů",
"Û",
"Ü",
"Ù",
"Ū",
"Ũ",
"Ű",
"Ų",
"Μ"
],
[
"I",
"Í",
"Î",
"Ï",
"Ĩ",
"Ì",
"Į",
"Ī",
"I",
"IJ"
],
[
"O",
"Ó",
"Ö",
"Ô",
"Ò",
"Õ",
"Œ",
"Ø",
"Ō",
"Ő",
"º"
],
[
"P"
]
],
[
[
"A",
"Á",
"À",
"Â",
"Ä",
"Æ",
"Ã",
"Å",
"Ā",
"Ă",
"Ą",
"ª"
],
[
"S",
"SS",
"Š",
"Ś",
"Ș",
"Ş"
],
[
"D",
"Ð",
"Ď",
"Đ"
],
[
"F"
],
[
"G",
"Ğ",
"Ġ",
"Ģ"
],
[
"H",
"Ĥ",
"Ħ"
],
[
"J"
],
[
"K",
"Ķ",
"ĸ"
],
[
"L",
"Ĺ",
"Ļ",
"Ľ",
"Ŀ",
"Ł"
],
[
"Ĵ"
]
],
[
[
"Z",
"Ź",
"Ż",
"Ž"
],
[
"Ĉ",
"X"
],
[
"C",
"Ć",
"Č",
"Ç",
"Ċ"
],
[
"V",
"W",
"Ŵ"
],
[
"B"
],
[
"N",
"Ñ",
"Ń",
"Ņ",
"Ň",
"ʼN",
"Ŋ"
],
[
"M"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "opt",
"mode": "locked",
"rows": [
[
[
"1",
"¹",
"½",
"⅓",
"¼",
"⅛"
],
[
"2",
"²",
"⅔"
],
[
"3",
"³",
"¾",
"⅜"
],
[
"4",
"⁴"
],
[
"5",
"⅝"
],
[
"6"
],
[
"7",
"⅞"
],
[
"8"
],
[
"9"
],
[
"0",
"ⁿ",
"∅"
]
],
[
[
"@"
],
[
"#"
],
[
"$",
"¢",
"£",
"€",
"¥",
"₱"
],
[
"%",
"‰"
],
[
"&"
],
[
"-",
"_",
"",
"—",
"·"
],
[
"+",
"±"
],
[
"(",
"<",
"{",
"["
],
[
")",
">",
"}",
"]"
]
],
[
[
"*",
"†",
"‡",
"★"
],
[
"\"",
"“",
"”",
"«",
"»"
],
[
"'",
"",
"",
"",
""
],
[
":"
],
[
";"
],
[
"!",
"¡"
],
[
"?",
"¿"
]
],
[
[
"_"
],
[
"/"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
},
{
"level": "opt+shift",
"mode": "locked",
"rows": [
[
[
"~"
],
[
"`"
],
[
"|"
],
[
"•",
"♪",
"♥",
"♠",
"♦",
"♣"
],
[
"√"
],
[
"Π",
"π"
],
[
"÷"
],
[
"×"
],
[
"¶",
"§"
],
[
"∆"
]
],
[
[
"£"
],
[
"¢"
],
[
"€"
],
[
"¥"
],
[
"^",
"↑",
"↓",
"←",
"→"
],
[
"°",
"",
"″"
],
[
"=",
"≠",
"≈",
"∞"
],
[
"{"
],
[
"}"
]
],
[
[
"\\"
],
[
"©"
],
[
"®"
],
[
"™"
],
[
"℅"
],
[
"["
],
[
"]"
]
],
[
[
"<",
"",
"≤",
"«"
],
[
">",
"",
"≥",
"»"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
}
],
"locale": "eo",
"name": "Esperanto"
}

View File

@@ -1,602 +0,0 @@
{
"levels": [
{
"level": "",
"mode": "default",
"rows": [
[
[
"q"
],
[
"w"
],
[
"e",
"è",
"é",
"ë",
"ê",
"ę",
"ė",
"ē"
],
[
"r"
],
[
"t"
],
[
"y"
],
[
"u",
"ú",
"ü",
"ù",
"û",
"ū"
],
[
"i",
"í",
"ï",
"ì",
"î",
"į",
"ī"
],
[
"o",
"ò",
"ó",
"ö",
"ô",
"õ",
"ø",
"œ",
"ō",
"º"
],
[
"p"
]
],
[
[
"a",
"à",
"á",
"ä",
"â",
"ã",
"å",
"ą",
"æ",
"ā",
"ª"
],
[
"s"
],
[
"d"
],
[
"f"
],
[
"g"
],
[
"h"
],
[
"j"
],
[
"k"
],
[
"l",
"l·l",
"ł"
],
[
"ç"
]
],
[
[
"z"
],
[
"x"
],
[
"c",
"ç",
"ć",
"č"
],
[
"v"
],
[
"b"
],
[
"n",
"ñ",
"ń"
],
[
"m"
]
],
[
[
","
],
[
" "
],
[
".",
"·",
"!",
",",
"?",
":",
";",
"@"
]
]
]
},
{
"level": "shift",
"mode": "latched",
"rows": [
[
[
"Q"
],
[
"W"
],
[
"E",
"È",
"É",
"Ë",
"Ê",
"Ę",
"Ė",
"Ē"
],
[
"R"
],
[
"T"
],
[
"Y"
],
[
"U",
"Ú",
"Ü",
"Ù",
"Û",
"Ū"
],
[
"I",
"Í",
"Ï",
"Ì",
"Î",
"Į",
"Ī"
],
[
"O",
"Ò",
"Ó",
"Ö",
"Ô",
"Õ",
"Ø",
"Œ",
"Ō",
"º"
],
[
"P"
]
],
[
[
"A",
"À",
"Á",
"Ä",
"Â",
"Ã",
"Å",
"Ą",
"Æ",
"Ā",
"ª"
],
[
"S"
],
[
"D"
],
[
"F"
],
[
"G"
],
[
"H"
],
[
"J"
],
[
"K"
],
[
"L",
"L·L",
"Ł"
],
[
"Ç"
]
],
[
[
"Z"
],
[
"X"
],
[
"C",
"Ç",
"Ć",
"Č"
],
[
"V"
],
[
"B"
],
[
"N",
"Ñ",
"Ń"
],
[
"M"
]
],
[
[
","
],
[
" "
],
[
".",
"·",
"!",
",",
"?",
":",
";",
"@"
]
]
]
},
{
"level": "opt",
"mode": "locked",
"rows": [
[
[
"1",
"¹",
"½",
"⅓",
"¼",
"⅛"
],
[
"2",
"²",
"⅔"
],
[
"3",
"³",
"¾",
"⅜"
],
[
"4",
"⁴"
],
[
"5",
"⅝"
],
[
"6"
],
[
"7",
"⅞"
],
[
"8"
],
[
"9"
],
[
"0",
"ⁿ",
"∅"
]
],
[
[
"@"
],
[
"#"
],
[
"€",
"¢",
"£",
"$",
"¥",
"₱"
],
[
"%",
"‰"
],
[
"&"
],
[
"-",
"_",
"",
"—",
"·"
],
[
"+",
"±"
],
[
"(",
"<",
"{",
"["
],
[
")",
">",
"}",
"]"
]
],
[
[
"*",
"†",
"‡",
"★"
],
[
"\"",
"“",
"”",
"«",
"»"
],
[
"'",
"",
"",
"",
""
],
[
":"
],
[
";"
],
[
"!",
"¡"
],
[
"?",
"¿"
]
],
[
[
"_"
],
[
"/"
],
[
" "
],
[
","
],
[
".",
"?",
"·"
]
]
]
},
{
"level": "opt+shift",
"mode": "locked",
"rows": [
[
[
"~"
],
[
"`"
],
[
"|"
],
[
"•",
"♪",
"♥",
"♠",
"♦",
"♣"
],
[
"√"
],
[
"Π",
"π"
],
[
"÷"
],
[
"×"
],
[
"¶",
"§"
],
[
"∆"
]
],
[
[
"£"
],
[
"¥"
],
[
"$",
"¢"
],
[
"¢"
],
[
"^",
"↑",
"↓",
"←",
"→"
],
[
"°",
"",
"″"
],
[
"=",
"≠",
"≈",
"∞"
],
[
"{"
],
[
"}"
]
],
[
[
"\\"
],
[
"©"
],
[
"®"
],
[
"™"
],
[
"℅"
],
[
"["
],
[
"]"
]
],
[
[
"<",
"",
"≤",
"«"
],
[
">",
"",
"≥",
"»"
],
[
" "
],
[
","
],
[
".",
"?",
"·"
]
]
]
}
],
"locale": "ca",
"name": "Catalan"
}

View File

@@ -1,604 +0,0 @@
{
"levels": [
{
"level": "",
"mode": "default",
"rows": [
[
[
"q"
],
[
"w"
],
[
"e",
"é",
"è",
"ë",
"ê",
"ę",
"ė",
"ē"
],
[
"r"
],
[
"t"
],
[
"y"
],
[
"u",
"ú",
"ü",
"ù",
"û",
"ū"
],
[
"i",
"í",
"ï",
"ì",
"î",
"į",
"ī"
],
[
"o",
"ó",
"ò",
"ö",
"ô",
"õ",
"ø",
"œ",
"ō",
"º"
],
[
"p"
]
],
[
[
"a",
"á",
"à",
"ä",
"â",
"ã",
"å",
"ą",
"æ",
"ā",
"ª"
],
[
"s"
],
[
"d"
],
[
"f"
],
[
"g"
],
[
"h"
],
[
"j"
],
[
"k"
],
[
"l"
],
[
"ñ"
]
],
[
[
"z"
],
[
"x"
],
[
"c",
"ç",
"ć",
"č"
],
[
"v"
],
[
"b"
],
[
"n",
"ñ",
"ń"
],
[
"m"
]
],
[
[
","
],
[
" "
],
[
".",
";",
"!",
",",
"?",
":",
"¡",
"@",
"¿"
]
]
]
},
{
"level": "shift",
"mode": "latched",
"rows": [
[
[
"Q"
],
[
"W"
],
[
"E",
"É",
"È",
"Ë",
"Ê",
"Ę",
"Ė",
"Ē"
],
[
"R"
],
[
"T"
],
[
"Y"
],
[
"U",
"Ú",
"Ü",
"Ù",
"Û",
"Ū"
],
[
"I",
"Í",
"Ï",
"Ì",
"Î",
"Į",
"Ī"
],
[
"O",
"Ó",
"Ò",
"Ö",
"Ô",
"Õ",
"Ø",
"Œ",
"Ō",
"º"
],
[
"P"
]
],
[
[
"A",
"Á",
"À",
"Ä",
"Â",
"Ã",
"Å",
"Ą",
"Æ",
"Ā",
"ª"
],
[
"S"
],
[
"D"
],
[
"F"
],
[
"G"
],
[
"H"
],
[
"J"
],
[
"K"
],
[
"L"
],
[
"Ñ"
]
],
[
[
"Z"
],
[
"X"
],
[
"C",
"Ç",
"Ć",
"Č"
],
[
"V"
],
[
"B"
],
[
"N",
"Ñ",
"Ń"
],
[
"M"
]
],
[
[
","
],
[
" "
],
[
".",
";",
"!",
",",
"?",
":",
"¡",
"@",
"¿"
]
]
]
},
{
"level": "opt",
"mode": "locked",
"rows": [
[
[
"1",
"¹",
"½",
"⅓",
"¼",
"⅛"
],
[
"2",
"²",
"⅔"
],
[
"3",
"³",
"¾",
"⅜"
],
[
"4",
"⁴"
],
[
"5",
"⅝"
],
[
"6"
],
[
"7",
"⅞"
],
[
"8"
],
[
"9"
],
[
"0",
"ⁿ",
"∅"
]
],
[
[
"@"
],
[
"#"
],
[
"€",
"¢",
"£",
"$",
"¥",
"₱"
],
[
"%",
"‰"
],
[
"&"
],
[
"-",
"_",
"",
"—",
"·"
],
[
"+",
"±"
],
[
"(",
"<",
"{",
"["
],
[
")",
">",
"}",
"]"
]
],
[
[
"*",
"†",
"‡",
"★"
],
[
"\"",
"“",
"”",
"«",
"»"
],
[
"'",
"",
"",
"",
""
],
[
":"
],
[
";"
],
[
"!",
"¡"
],
[
"?",
"¿"
]
],
[
[
"_"
],
[
"/"
],
[
" "
],
[
",",
"!",
"¡"
],
[
".",
"?",
"¿"
]
]
]
},
{
"level": "opt+shift",
"mode": "locked",
"rows": [
[
[
"~"
],
[
"`"
],
[
"|"
],
[
"•",
"♪",
"♥",
"♠",
"♦",
"♣"
],
[
"√"
],
[
"Π",
"π"
],
[
"÷"
],
[
"×"
],
[
"¶",
"§"
],
[
"∆"
]
],
[
[
"£"
],
[
"¥"
],
[
"$",
"¢"
],
[
"¢"
],
[
"^",
"↑",
"↓",
"←",
"→"
],
[
"°",
"",
"″"
],
[
"=",
"≠",
"≈",
"∞"
],
[
"{"
],
[
"}"
]
],
[
[
"\\"
],
[
"©"
],
[
"®"
],
[
"™"
],
[
"℅"
],
[
"["
],
[
"]"
]
],
[
[
"<",
"",
"≤",
"«"
],
[
">",
"",
"≥",
"»"
],
[
" "
],
[
",",
"!",
"¡"
],
[
".",
"?",
"¿"
]
]
]
}
],
"locale": "es",
"name": "Spanish"
}

View File

@@ -1,570 +0,0 @@
{
"levels": [
{
"level": "",
"mode": "default",
"rows": [
[
[
"q"
],
[
"w"
],
[
"e"
],
[
"r"
],
[
"t"
],
[
"y"
],
[
"u",
"ü"
],
[
"i"
],
[
"o",
"ø",
"ô",
"ò",
"ó",
"õ",
"œ",
"ō"
],
[
"p"
],
[
"å"
]
],
[
[
"a",
"æ",
"à",
"á",
"â",
"ã",
"ā"
],
[
"s",
"š",
"ß",
"ś"
],
[
"d"
],
[
"f"
],
[
"g"
],
[
"h"
],
[
"j"
],
[
"k"
],
[
"l"
],
[
"ö",
"ø"
],
[
"ä",
"æ"
]
],
[
[
"z",
"ž",
"ź",
"ż"
],
[
"x"
],
[
"c"
],
[
"v"
],
[
"b"
],
[
"n"
],
[
"m"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "shift",
"mode": "latched",
"rows": [
[
[
"Q"
],
[
"W"
],
[
"E"
],
[
"R"
],
[
"T"
],
[
"Y"
],
[
"U",
"Ü"
],
[
"I"
],
[
"O",
"Ø",
"Ô",
"Ò",
"Ó",
"Õ",
"Œ",
"Ō"
],
[
"P"
],
[
"Å"
]
],
[
[
"A",
"Æ",
"À",
"Á",
"Â",
"Ã",
"Ā"
],
[
"S",
"Š",
"SS",
"Ś"
],
[
"D"
],
[
"F"
],
[
"G"
],
[
"H"
],
[
"J"
],
[
"K"
],
[
"L"
],
[
"Ö",
"Ø"
],
[
"Ä",
"Æ"
]
],
[
[
"Z",
"Ž",
"Ź",
"Ż"
],
[
"X"
],
[
"C"
],
[
"V"
],
[
"B"
],
[
"N"
],
[
"M"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "opt",
"mode": "locked",
"rows": [
[
[
"1",
"¹",
"½",
"⅓",
"¼",
"⅛"
],
[
"2",
"²",
"⅔"
],
[
"3",
"³",
"¾",
"⅜"
],
[
"4",
"⁴"
],
[
"5",
"⅝"
],
[
"6"
],
[
"7",
"⅞"
],
[
"8"
],
[
"9"
],
[
"0",
"ⁿ",
"∅"
]
],
[
[
"@"
],
[
"#"
],
[
"€",
"¢",
"£",
"$",
"¥",
"₱"
],
[
"%",
"‰"
],
[
"&"
],
[
"-",
"_",
"",
"—",
"·"
],
[
"+",
"±"
],
[
"(",
"<",
"{",
"["
],
[
")",
">",
"}",
"]"
]
],
[
[
"*",
"†",
"‡",
"★"
],
[
"\"",
"“",
"”",
"«",
"»"
],
[
"'",
"",
"",
"",
""
],
[
":"
],
[
";"
],
[
"!",
"¡"
],
[
"?",
"¿"
]
],
[
[
"_"
],
[
"/"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
},
{
"level": "opt+shift",
"mode": "locked",
"rows": [
[
[
"~"
],
[
"`"
],
[
"|"
],
[
"•",
"♪",
"♥",
"♠",
"♦",
"♣"
],
[
"√"
],
[
"Π",
"π"
],
[
"÷"
],
[
"×"
],
[
"¶",
"§"
],
[
"∆"
]
],
[
[
"£"
],
[
"¥"
],
[
"$",
"¢"
],
[
"¢"
],
[
"^",
"↑",
"↓",
"←",
"→"
],
[
"°",
"",
"″"
],
[
"=",
"≠",
"≈",
"∞"
],
[
"{"
],
[
"}"
]
],
[
[
"\\"
],
[
"©"
],
[
"®"
],
[
"™"
],
[
"℅"
],
[
"["
],
[
"]"
]
],
[
[
"<",
"",
"≤",
"«"
],
[
">",
"",
"≥",
"»"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
}
],
"locale": "fi",
"name": "Finnish"
}

View File

@@ -1,599 +0,0 @@
{
"levels": [
{
"level": "",
"mode": "default",
"rows": [
[
[
"q"
],
[
"w"
],
[
"e",
"é",
"è",
"ê",
"ë",
"%",
"ę",
"ė",
"ē"
],
[
"r"
],
[
"t"
],
[
"y",
"%",
"ÿ"
],
[
"u",
"ù",
"û",
"%",
"ü",
"ú",
"ū"
],
[
"i",
"î",
"%",
"ï",
"ì",
"í",
"į",
"ī"
],
[
"o",
"ô",
"œ",
"%",
"ö",
"ò",
"ó",
"õ",
"ø",
"ō",
"º"
],
[
"p"
]
],
[
[
"a",
"à",
"â",
"%",
"æ",
"á",
"ä",
"ã",
"å",
"ā",
"ª"
],
[
"s"
],
[
"d"
],
[
"f"
],
[
"g"
],
[
"h"
],
[
"j"
],
[
"k"
],
[
"l"
]
],
[
[
"z"
],
[
"x"
],
[
"c",
"ç",
"ć",
"č"
],
[
"v"
],
[
"b"
],
[
"n"
],
[
"m"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "shift",
"mode": "latched",
"rows": [
[
[
"Q"
],
[
"W"
],
[
"E",
"É",
"È",
"Ê",
"Ë",
"%",
"Ę",
"Ė",
"Ē"
],
[
"R"
],
[
"T"
],
[
"Y",
"%",
"Ÿ"
],
[
"U",
"Ù",
"Û",
"%",
"Ü",
"Ú",
"Ū"
],
[
"I",
"Î",
"%",
"Ï",
"Ì",
"Í",
"Į",
"Ī"
],
[
"O",
"Ô",
"Œ",
"%",
"Ö",
"Ò",
"Ó",
"Õ",
"Ø",
"Ō",
"º"
],
[
"P"
]
],
[
[
"A",
"À",
"Â",
"%",
"Æ",
"Á",
"Ä",
"Ã",
"Å",
"Ā",
"ª"
],
[
"S"
],
[
"D"
],
[
"F"
],
[
"G"
],
[
"H"
],
[
"J"
],
[
"K"
],
[
"L"
]
],
[
[
"Z"
],
[
"X"
],
[
"C",
"Ç",
"Ć",
"Č"
],
[
"V"
],
[
"B"
],
[
"N"
],
[
"M"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "opt",
"mode": "locked",
"rows": [
[
[
"1",
"¹",
"½",
"⅓",
"¼",
"⅛"
],
[
"2",
"²",
"⅔"
],
[
"3",
"³",
"¾",
"⅜"
],
[
"4",
"⁴"
],
[
"5",
"⅝"
],
[
"6"
],
[
"7",
"⅞"
],
[
"8"
],
[
"9"
],
[
"0",
"ⁿ",
"∅"
]
],
[
[
"@"
],
[
"#"
],
[
"$",
"¢",
"£",
"€",
"¥",
"₱"
],
[
"%",
"‰"
],
[
"&"
],
[
"-",
"_",
"",
"—",
"·"
],
[
"+",
"±"
],
[
"(",
"<",
"{",
"["
],
[
")",
">",
"}",
"]"
]
],
[
[
"*",
"†",
"‡",
"★"
],
[
"\"",
"“",
"”",
"«",
"»"
],
[
"'",
"",
"",
"",
""
],
[
":"
],
[
";"
],
[
"!",
"¡"
],
[
"?",
"¿"
]
],
[
[
"_"
],
[
"/"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
},
{
"level": "opt+shift",
"mode": "locked",
"rows": [
[
[
"~"
],
[
"`"
],
[
"|"
],
[
"•",
"♪",
"♥",
"♠",
"♦",
"♣"
],
[
"√"
],
[
"Π",
"π"
],
[
"÷"
],
[
"×"
],
[
"¶",
"§"
],
[
"∆"
]
],
[
[
"£"
],
[
"¢"
],
[
"€"
],
[
"¥"
],
[
"^",
"↑",
"↓",
"←",
"→"
],
[
"°",
"",
"″"
],
[
"=",
"≠",
"≈",
"∞"
],
[
"{"
],
[
"}"
]
],
[
[
"\\"
],
[
"©"
],
[
"®"
],
[
"™"
],
[
"℅"
],
[
"["
],
[
"]"
]
],
[
[
"<",
"",
"≤",
"«"
],
[
">",
"",
"≥",
"»"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
}
],
"locale": "fr-CA",
"name": "French Canada"
}

View File

@@ -1,409 +0,0 @@
{
"levels": [
{
"level": "",
"mode": "default",
"rows": [
[
[
"ქ"
],
[
"წ"
],
[
"ე",
"ჱ"
],
[
"რ"
],
[
"ტ"
],
[
"",
"ჸ"
],
[
"უ"
],
[
"ი",
"ჲ"
],
[
"ო"
],
[
"პ"
]
],
[
[
"ა",
"ჺ"
],
[
"ს"
],
[
"დ"
],
[
"ფ",
"ჶ"
],
[
"გ",
"ჹ"
],
[
"ჰ",
"ჵ"
],
[
"ჯ",
"ჷ"
],
[
"კ"
],
[
"ლ"
]
],
[
[
"ზ"
],
[
"ხ",
"ჴ"
],
[
"ც"
],
[
"ვ",
"ჳ"
],
[
"ბ"
],
[
"ნ",
"ჼ"
],
[
"მ"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "opt",
"mode": "locked",
"rows": [
[
[
"1",
"¹",
"½",
"⅓",
"¼",
"⅛"
],
[
"2",
"²",
"⅔"
],
[
"3",
"³",
"¾",
"⅜"
],
[
"4",
"⁴"
],
[
"5",
"⅝"
],
[
"6"
],
[
"7",
"⅞"
],
[
"8"
],
[
"9"
],
[
"0",
"ⁿ",
"∅"
]
],
[
[
"@"
],
[
"#"
],
[
"$",
"¢",
"£",
"€",
"¥",
"₱"
],
[
"%",
"‰"
],
[
"&"
],
[
"-",
"_",
"",
"—",
"·"
],
[
"+",
"±"
],
[
"(",
"<",
"{",
"["
],
[
")",
">",
"}",
"]"
]
],
[
[
"*",
"†",
"‡",
"★"
],
[
"\"",
"“",
"”",
"«",
"»"
],
[
"'",
"",
"",
"",
""
],
[
":"
],
[
";"
],
[
"!",
"¡"
],
[
"?",
"¿"
]
],
[
[
"_"
],
[
"/"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
},
{
"level": "opt+shift",
"mode": "locked",
"rows": [
[
[
"~"
],
[
"`"
],
[
"|"
],
[
"•",
"♪",
"♥",
"♠",
"♦",
"♣"
],
[
"√"
],
[
"Π",
"π"
],
[
"÷"
],
[
"×"
],
[
"¶",
"§"
],
[
"∆"
]
],
[
[
"£"
],
[
"¢"
],
[
"€"
],
[
"¥"
],
[
"^",
"↑",
"↓",
"←",
"→"
],
[
"°",
"",
"″"
],
[
"=",
"≠",
"≈",
"∞"
],
[
"{"
],
[
"}"
]
],
[
[
"\\"
],
[
"©"
],
[
"®"
],
[
"™"
],
[
"℅"
],
[
"["
],
[
"]"
]
],
[
[
"<",
"",
"≤",
"«"
],
[
">",
"",
"≥",
"»"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
}
],
"locale": "ka",
"name": "Georgian"
}

View File

@@ -1,532 +0,0 @@
{
"levels": [
{
"level": "",
"mode": "default",
"rows": [
[
[
";",
":"
],
[
"ς"
],
[
"ε",
"έ"
],
[
"ρ"
],
[
"τ"
],
[
"υ",
"ύ",
"ϋ",
"ΰ"
],
[
"θ"
],
[
"ι",
"ί",
"ϊ",
"ΐ"
],
[
"ο",
"ό"
],
[
"π"
]
],
[
[
"α",
"ά"
],
[
"σ"
],
[
"δ"
],
[
"φ"
],
[
"γ"
],
[
"η",
"ή"
],
[
"ξ"
],
[
"κ"
],
[
"λ"
]
],
[
[
"ζ"
],
[
"χ"
],
[
"ψ"
],
[
"ω",
"ώ"
],
[
"β"
],
[
"ν"
],
[
"μ"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "shift",
"mode": "latched",
"rows": [
[
[
";",
":"
],
[
"Σ"
],
[
"Ε",
"Έ"
],
[
"Ρ"
],
[
"Τ"
],
[
"Υ",
"Ύ",
"Ϋ",
"Ϋ́"
],
[
"Θ"
],
[
"Ι",
"Ί",
"Ϊ",
"Ϊ́"
],
[
"Ο",
"Ό"
],
[
"Π"
]
],
[
[
"Α",
"Ά"
],
[
"Σ"
],
[
"Δ"
],
[
"Φ"
],
[
"Γ"
],
[
"Η",
"Ή"
],
[
"Ξ"
],
[
"Κ"
],
[
"Λ"
]
],
[
[
"Ζ"
],
[
"Χ"
],
[
"Ψ"
],
[
"Ω",
"Ώ"
],
[
"Β"
],
[
"Ν"
],
[
"Μ"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "opt",
"mode": "locked",
"rows": [
[
[
"1",
"¹",
"½",
"⅓",
"¼",
"⅛"
],
[
"2",
"²",
"⅔"
],
[
"3",
"³",
"¾",
"⅜"
],
[
"4",
"⁴"
],
[
"5",
"⅝"
],
[
"6"
],
[
"7",
"⅞"
],
[
"8"
],
[
"9"
],
[
"0",
"ⁿ",
"∅"
]
],
[
[
"@"
],
[
"#"
],
[
"€",
"¢",
"£",
"$",
"¥",
"₱"
],
[
"%",
"‰"
],
[
"&"
],
[
"-",
"_",
"",
"—",
"·"
],
[
"+",
"±"
],
[
"(",
"<",
"{",
"["
],
[
")",
">",
"}",
"]"
]
],
[
[
"*",
"†",
"‡",
"★"
],
[
"\"",
"“",
"”",
"«",
"»"
],
[
"'",
"",
"",
"",
""
],
[
":"
],
[
";"
],
[
"!",
"¡"
],
[
"?",
"¿"
]
],
[
[
"_"
],
[
"/"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
},
{
"level": "opt+shift",
"mode": "locked",
"rows": [
[
[
"~"
],
[
"`"
],
[
"|"
],
[
"•",
"♪",
"♥",
"♠",
"♦",
"♣"
],
[
"√"
],
[
"Π",
"π"
],
[
"÷"
],
[
"×"
],
[
"¶",
"§"
],
[
"∆"
]
],
[
[
"£"
],
[
"¥"
],
[
"$",
"¢"
],
[
"¢"
],
[
"^",
"↑",
"↓",
"←",
"→"
],
[
"°",
"",
"″"
],
[
"=",
"≠",
"≈",
"∞"
],
[
"{"
],
[
"}"
]
],
[
[
"\\"
],
[
"©"
],
[
"®"
],
[
"™"
],
[
"℅"
],
[
"["
],
[
"]"
]
],
[
[
"<",
"",
"≤",
"«"
],
[
">",
"",
"≥",
"»"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
}
],
"locale": "el",
"name": "Greek"
}

View File

@@ -1,531 +0,0 @@
{
"levels": [
{
"level": "",
"mode": "default",
"rows": [
[
[
"q"
],
[
"w"
],
[
"e"
],
[
"r"
],
[
"t"
],
[
"z",
"ž",
"ź",
"ż"
],
[
"u"
],
[
"i"
],
[
"o"
],
[
"p"
]
],
[
[
"a"
],
[
"s",
"š",
"ś",
"ß"
],
[
"d",
"đ"
],
[
"f"
],
[
"g"
],
[
"h"
],
[
"j"
],
[
"k"
],
[
"l"
]
],
[
[
"y"
],
[
"x"
],
[
"c",
"č",
"ć",
"ç"
],
[
"v"
],
[
"b"
],
[
"n",
"ñ",
"ń"
],
[
"m"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "shift",
"mode": "latched",
"rows": [
[
[
"Q"
],
[
"W"
],
[
"E"
],
[
"R"
],
[
"T"
],
[
"Z",
"Ž",
"Ź",
"Ż"
],
[
"U"
],
[
"I"
],
[
"O"
],
[
"P"
]
],
[
[
"A"
],
[
"S",
"Š",
"Ś",
"SS"
],
[
"D",
"Đ"
],
[
"F"
],
[
"G"
],
[
"H"
],
[
"J"
],
[
"K"
],
[
"L"
]
],
[
[
"Y"
],
[
"X"
],
[
"C",
"Č",
"Ć",
"Ç"
],
[
"V"
],
[
"B"
],
[
"N",
"Ñ",
"Ń"
],
[
"M"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "opt",
"mode": "locked",
"rows": [
[
[
"1",
"¹",
"½",
"⅓",
"¼",
"⅛"
],
[
"2",
"²",
"⅔"
],
[
"3",
"³",
"¾",
"⅜"
],
[
"4",
"⁴"
],
[
"5",
"⅝"
],
[
"6"
],
[
"7",
"⅞"
],
[
"8"
],
[
"9"
],
[
"0",
"ⁿ",
"∅"
]
],
[
[
"@"
],
[
"#"
],
[
"$",
"¢",
"£",
"€",
"¥",
"₱"
],
[
"%",
"‰"
],
[
"&"
],
[
"-",
"_",
"",
"—",
"·"
],
[
"+",
"±"
],
[
"(",
"<",
"{",
"["
],
[
")",
">",
"}",
"]"
]
],
[
[
"*",
"†",
"‡",
"★"
],
[
"\"",
"“",
"”",
"«",
"»"
],
[
"'",
"",
"",
"",
""
],
[
":"
],
[
";"
],
[
"!",
"¡"
],
[
"?",
"¿"
]
],
[
[
"_"
],
[
"/"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
},
{
"level": "opt+shift",
"mode": "locked",
"rows": [
[
[
"~"
],
[
"`"
],
[
"|"
],
[
"•",
"♪",
"♥",
"♠",
"♦",
"♣"
],
[
"√"
],
[
"Π",
"π"
],
[
"÷"
],
[
"×"
],
[
"¶",
"§"
],
[
"∆"
]
],
[
[
"£"
],
[
"¢"
],
[
"€"
],
[
"¥"
],
[
"^",
"↑",
"↓",
"←",
"→"
],
[
"°",
"",
"″"
],
[
"=",
"≠",
"≈",
"∞"
],
[
"{"
],
[
"}"
]
],
[
[
"\\"
],
[
"©"
],
[
"®"
],
[
"™"
],
[
"℅"
],
[
"["
],
[
"]"
]
],
[
[
"<",
"",
"≤",
"«"
],
[
">",
"",
"≥",
"»"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
}
],
"locale": "hr",
"name": "Croatian"
}

View File

@@ -1,579 +0,0 @@
{
"levels": [
{
"level": "",
"mode": "default",
"rows": [
[
[
"q"
],
[
"w"
],
[
"e",
"é",
"è",
"ê",
"ë",
"ę",
"ė",
"ē"
],
[
"r"
],
[
"t"
],
[
"z"
],
[
"u",
"ú",
"ü",
"ű",
"û",
"ù",
"ū"
],
[
"i",
"í",
"î",
"ï",
"ì",
"į",
"ī"
],
[
"o",
"ó",
"ö",
"ő",
"ô",
"ò",
"õ",
"œ",
"ø",
"ō"
],
[
"p"
]
],
[
[
"a",
"á",
"à",
"â",
"ä",
"æ",
"ã",
"å",
"ā"
],
[
"s"
],
[
"d"
],
[
"f"
],
[
"g"
],
[
"h"
],
[
"j"
],
[
"k"
],
[
"l"
]
],
[
[
"y"
],
[
"x"
],
[
"c"
],
[
"v"
],
[
"b"
],
[
"n"
],
[
"m"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "shift",
"mode": "latched",
"rows": [
[
[
"Q"
],
[
"W"
],
[
"E",
"É",
"È",
"Ê",
"Ë",
"Ę",
"Ė",
"Ē"
],
[
"R"
],
[
"T"
],
[
"Z"
],
[
"U",
"Ú",
"Ü",
"Ű",
"Û",
"Ù",
"Ū"
],
[
"I",
"Í",
"Î",
"Ï",
"Ì",
"Į",
"Ī"
],
[
"O",
"Ó",
"Ö",
"Ő",
"Ô",
"Ò",
"Õ",
"Œ",
"Ø",
"Ō"
],
[
"P"
]
],
[
[
"A",
"Á",
"À",
"Â",
"Ä",
"Æ",
"Ã",
"Å",
"Ā"
],
[
"S"
],
[
"D"
],
[
"F"
],
[
"G"
],
[
"H"
],
[
"J"
],
[
"K"
],
[
"L"
]
],
[
[
"Y"
],
[
"X"
],
[
"C"
],
[
"V"
],
[
"B"
],
[
"N"
],
[
"M"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "opt",
"mode": "locked",
"rows": [
[
[
"1",
"¹",
"½",
"⅓",
"¼",
"⅛"
],
[
"2",
"²",
"⅔"
],
[
"3",
"³",
"¾",
"⅜"
],
[
"4",
"⁴"
],
[
"5",
"⅝"
],
[
"6"
],
[
"7",
"⅞"
],
[
"8"
],
[
"9"
],
[
"0",
"ⁿ",
"∅"
]
],
[
[
"@"
],
[
"#"
],
[
"$",
"¢",
"£",
"€",
"¥",
"₱"
],
[
"%",
"‰"
],
[
"&"
],
[
"-",
"_",
"",
"—",
"·"
],
[
"+",
"±"
],
[
"(",
"<",
"{",
"["
],
[
")",
">",
"}",
"]"
]
],
[
[
"*",
"†",
"‡",
"★"
],
[
"\"",
"“",
"”",
"«",
"»"
],
[
"'",
"",
"",
"",
""
],
[
":"
],
[
";"
],
[
"!",
"¡"
],
[
"?",
"¿"
]
],
[
[
"_"
],
[
"/"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
},
{
"level": "opt+shift",
"mode": "locked",
"rows": [
[
[
"~"
],
[
"`"
],
[
"|"
],
[
"•",
"♪",
"♥",
"♠",
"♦",
"♣"
],
[
"√"
],
[
"Π",
"π"
],
[
"÷"
],
[
"×"
],
[
"¶",
"§"
],
[
"∆"
]
],
[
[
"£"
],
[
"¢"
],
[
"€"
],
[
"¥"
],
[
"^",
"↑",
"↓",
"←",
"→"
],
[
"°",
"",
"″"
],
[
"=",
"≠",
"≈",
"∞"
],
[
"{"
],
[
"}"
]
],
[
[
"\\"
],
[
"©"
],
[
"®"
],
[
"™"
],
[
"℅"
],
[
"["
],
[
"]"
]
],
[
[
"<",
"",
"≤",
"«"
],
[
">",
"",
"≥",
"»"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
}
],
"locale": "hu",
"name": "Hungarian"
}

View File

@@ -1,507 +0,0 @@
{
"levels": [
{
"level": "",
"mode": "default",
"rows": [
[
[
"q"
],
[
"w"
],
[
"e"
],
[
"r"
],
[
"t"
],
[
"y"
],
[
"u"
],
[
"i"
],
[
"o"
],
[
"p"
]
],
[
[
"a"
],
[
"s"
],
[
"d"
],
[
"f"
],
[
"g"
],
[
"h"
],
[
"j"
],
[
"k"
],
[
"l"
]
],
[
[
"z"
],
[
"x"
],
[
"c"
],
[
"v"
],
[
"b"
],
[
"n"
],
[
"m"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "shift",
"mode": "latched",
"rows": [
[
[
"Q"
],
[
"W"
],
[
"E"
],
[
"R"
],
[
"T"
],
[
"Y"
],
[
"U"
],
[
"I"
],
[
"O"
],
[
"P"
]
],
[
[
"A"
],
[
"S"
],
[
"D"
],
[
"F"
],
[
"G"
],
[
"H"
],
[
"J"
],
[
"K"
],
[
"L"
]
],
[
[
"Z"
],
[
"X"
],
[
"C"
],
[
"V"
],
[
"B"
],
[
"N"
],
[
"M"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "opt",
"mode": "locked",
"rows": [
[
[
"1",
"¹",
"½",
"⅓",
"¼",
"⅛"
],
[
"2",
"²",
"⅔"
],
[
"3",
"³",
"¾",
"⅜"
],
[
"4",
"⁴"
],
[
"5",
"⅝"
],
[
"6"
],
[
"7",
"⅞"
],
[
"8"
],
[
"9"
],
[
"0",
"ⁿ",
"∅"
]
],
[
[
"@"
],
[
"#"
],
[
"$",
"¢",
"£",
"€",
"¥",
"₱"
],
[
"%",
"‰"
],
[
"&"
],
[
"-",
"_",
"",
"—",
"·"
],
[
"+",
"±"
],
[
"(",
"<",
"{",
"["
],
[
")",
">",
"}",
"]"
]
],
[
[
"*",
"†",
"‡",
"★"
],
[
"\"",
"“",
"”",
"«",
"»"
],
[
"'",
"",
"",
"",
""
],
[
":"
],
[
";"
],
[
"!",
"¡"
],
[
"?",
"¿"
]
],
[
[
"_"
],
[
"/"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
},
{
"level": "opt+shift",
"mode": "locked",
"rows": [
[
[
"~"
],
[
"`"
],
[
"|"
],
[
"•",
"♪",
"♥",
"♠",
"♦",
"♣"
],
[
"√"
],
[
"Π",
"π"
],
[
"÷"
],
[
"×"
],
[
"¶",
"§"
],
[
"∆"
]
],
[
[
"£"
],
[
"¢"
],
[
"€"
],
[
"¥"
],
[
"^",
"↑",
"↓",
"←",
"→"
],
[
"°",
"",
"″"
],
[
"=",
"≠",
"≈",
"∞"
],
[
"{"
],
[
"}"
]
],
[
[
"\\"
],
[
"©"
],
[
"®"
],
[
"™"
],
[
"℅"
],
[
"["
],
[
"]"
]
],
[
[
"<",
"",
"≤",
"«"
],
[
">",
"",
"≥",
"»"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
}
],
"locale": "id",
"name": "Indonesian"
}

View File

@@ -1,419 +0,0 @@
{
"levels": [
{
"level": "",
"mode": "default",
"rows": [
[
[
"'",
"\""
],
[
"-",
"_"
],
[
"ק"
],
[
"ר"
],
[
"א"
],
[
"ט"
],
[
"ו"
],
[
"ן"
],
[
"ם"
],
[
"פ"
]
],
[
[
"ש"
],
[
"ד"
],
[
"ג",
"ג׳"
],
[
"כ"
],
[
"ע"
],
[
"י",
"ײַ"
],
[
"ח",
"ח׳"
],
[
"ל"
],
[
"ך"
],
[
"ף"
]
],
[
[
"ז",
"ז׳"
],
[
"ס"
],
[
"ב"
],
[
"ה"
],
[
"נ"
],
[
"מ"
],
[
"צ",
"צ׳"
],
[
"ת",
"ת׳"
],
[
"ץ",
"ץ׳"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "opt",
"mode": "locked",
"rows": [
[
[
"1",
"¹",
"½",
"⅓",
"¼",
"⅛"
],
[
"2",
"²",
"⅔"
],
[
"3",
"³",
"¾",
"⅜"
],
[
"4",
"⁴"
],
[
"5",
"⅝"
],
[
"6"
],
[
"7",
"⅞"
],
[
"8"
],
[
"9"
],
[
"0",
"ⁿ",
"∅"
]
],
[
[
"@"
],
[
"#"
],
[
"₪",
"$",
"¢",
"€",
"£",
"¥",
"₱"
],
[
"%",
"‰"
],
[
"&"
],
[
"-",
"_",
"",
"—",
"·"
],
[
"+",
"±",
"﬩"
],
[
"(",
">",
"}",
"]"
],
[
")",
"<",
"{",
"["
]
],
[
[
"*",
"★"
],
[
"\"",
"“",
"”",
"«",
"»"
],
[
"'",
"",
"",
"",
""
],
[
":"
],
[
";"
],
[
"!",
"¡"
],
[
"?",
"¿"
]
],
[
[
"_"
],
[
"/"
],
[
" "
],
[
",",
"!"
],
[
".",
"?"
]
]
]
},
{
"level": "opt+shift",
"mode": "locked",
"rows": [
[
[
"~"
],
[
"`"
],
[
"|"
],
[
"•",
"♪",
"♥",
"♠",
"♦",
"♣"
],
[
"√"
],
[
"Π",
"π"
],
[
"÷"
],
[
"×"
],
[
"¶",
"§"
],
[
"∆"
]
],
[
[
"£"
],
[
"€"
],
[
"$",
"¢"
],
[
"¢"
],
[
"^",
"↑",
"↓",
"←",
"→"
],
[
"°",
"",
"″"
],
[
"=",
"≠",
"≈",
"∞"
],
[
"{"
],
[
"}"
]
],
[
[
"\\"
],
[
"©"
],
[
"®"
],
[
"™"
],
[
"℅"
],
[
"["
],
[
"]"
]
],
[
[
"<",
"",
"≥",
"»"
],
[
">",
"",
"≤",
"«"
],
[
" "
],
[
",",
"!"
],
[
".",
"?"
]
]
]
}
],
"locale": "he",
"name": "Hebrew"
}

View File

@@ -1,439 +0,0 @@
{
"levels": [
{
"level": "",
"mode": "default",
"rows": [
[
[
"◌ौ"
],
[
"◌ै"
],
[
"◌ा"
],
[
"◌ी"
],
[
"◌ू"
],
[
"ब",
"ब॒",
"%"
],
[
"ह"
],
[
"ग",
"ज्ञ",
"ग़",
"ग॒",
"%"
],
[
"द"
],
[
"ज",
"ज॒",
"ज्ञ",
"ज़",
"%"
],
[
"ड",
"ड॒",
"ड़"
]
],
[
[
"◌ो"
],
[
"◌े"
],
[
"◌्"
],
[
"◌ि"
],
[
"◌ु"
],
[
"प"
],
[
"र",
"ऋ",
"ऱ",
"ॠ"
],
[
"क",
"क़"
],
[
"त",
"त्र"
],
[
"च"
],
[
"ट"
]
],
[
[
"◌ॉ"
],
[
"◌ं"
],
[
"म",
"ॐ"
],
[
"न",
"ञ",
"ङ",
"ऩ"
],
[
"व"
],
[
"ल",
"ऌ",
"ॡ"
],
[
"स"
],
[
"य",
"य़"
],
[
"◌़"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "opt",
"mode": "locked",
"rows": [
[
[
"१",
"¹",
"½",
"⅓",
"¼",
"⅛"
],
[
"२",
"²",
"⅔"
],
[
"३",
"³",
"¾",
"⅜"
],
[
"४",
"⁴"
],
[
"५",
"⅝"
],
[
"६"
],
[
"७",
"⅞"
],
[
"८"
],
[
"९"
],
[
"",
"ⁿ",
"∅"
]
],
[
[
"@"
],
[
"#"
],
[
"₹",
"$",
"¢",
"€",
"£",
"¥",
"₱"
],
[
"%",
"‰"
],
[
"&"
],
[
"-",
"_",
"",
"—",
"·"
],
[
"+",
"±"
],
[
"(",
"<",
"{",
"["
],
[
")",
">",
"}",
"]"
]
],
[
[
"*",
"†",
"‡",
"★"
],
[
"\"",
"“",
"”",
"«",
"»"
],
[
"'",
"",
"",
"",
""
],
[
":"
],
[
";"
],
[
"!",
"¡"
],
[
"?",
"¿"
]
],
[
[
"_"
],
[
"/"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
},
{
"level": "opt+shift",
"mode": "locked",
"rows": [
[
[
"~"
],
[
"`"
],
[
"|"
],
[
"•",
"♪",
"♥",
"♠",
"♦",
"♣"
],
[
"√"
],
[
"Π",
"π"
],
[
"÷"
],
[
"×"
],
[
"¶",
"§"
],
[
"∆"
]
],
[
[
"£"
],
[
"€"
],
[
"$",
"¢"
],
[
"¢"
],
[
"^",
"↑",
"↓",
"←",
"→"
],
[
"°",
"",
"″"
],
[
"=",
"≠",
"≈",
"∞"
],
[
"{"
],
[
"}"
]
],
[
[
"\\"
],
[
"©"
],
[
"®"
],
[
"™"
],
[
"℅"
],
[
"["
],
[
"]"
]
],
[
[
"<",
"",
"≤",
"«"
],
[
">",
"",
"≥",
"»"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
}
],
"locale": "hi",
"name": "Hindi"
}

View File

@@ -1,495 +0,0 @@
{
"levels": [
{
"level": "",
"mode": "default",
"rows": [
[
[
"ض"
],
[
"ص"
],
[
"ث"
],
[
"ق",
"ڨ"
],
[
"ف",
"ڤ",
"ڢ",
"ڥ"
],
[
"غ"
],
[
"ع"
],
[
"ه",
"ه"
],
[
"خ"
],
[
"ح"
],
[
"ج",
"چ"
]
],
[
[
"ش",
"ڜ"
],
[
"س"
],
[
"ي",
"ئ",
"ى"
],
[
"ب",
"پ"
],
[
"ل",
"لا",
"لأ",
"لإ",
"لآ"
],
[
"ا",
"آ",
"ء",
"أ",
"إ",
"ٱ"
],
[
"ت"
],
[
"ن"
],
[
"م"
],
[
"ك",
"گ",
"ک"
],
[
"ط"
]
],
[
[
"ذ"
],
[
"ء"
],
[
"ؤ"
],
[
"ر"
],
[
"ى",
"ئ"
],
[
"ة"
],
[
"و"
],
[
"ز",
"ژ"
],
[
"ظ"
],
[
"د"
]
],
[
[
"،"
],
[
" "
],
[
" "
],
[
".",
"\"",
"'",
"#",
"-",
":",
"!",
"،",
"؟",
"@",
"&",
"%",
"+",
"؛",
"/",
")",
"("
]
]
]
},
{
"level": "opt",
"mode": "locked",
"rows": [
[
[
"۱",
"¹",
"½",
"⅓",
"¼",
"⅛"
],
[
"۲",
"²",
"⅔"
],
[
"۳",
"³",
"¾",
"⅜"
],
[
"۴",
"⁴"
],
[
"۵",
"⅝"
],
[
"۶"
],
[
"۷",
"⅞"
],
[
"۸"
],
[
"۹"
],
[
"۰",
"ⁿ",
"∅"
]
],
[
[
"٬",
"@"
],
[
"٫",
"#"
],
[
"﷼",
"$",
"¢",
"€",
"£",
"¥",
"₱"
],
[
"٪",
"%",
"‰"
],
[
"&"
],
[
"-",
"_",
"",
"—",
"·"
],
[
"+",
"±"
],
[
"(",
"﴿",
">",
"}",
"]"
],
[
")",
"",
"<",
"{",
"["
]
],
[
[
"*",
"★",
"٭"
],
[
"«",
"“",
"”",
"«",
"»"
],
[
"»",
"",
"",
"",
""
],
[
":"
],
[
"؛",
";"
],
[
"!",
"¡"
],
[
"؟",
"?"
]
],
[
[
"_"
],
[
"/"
],
[
" "
],
[
"،",
":",
"!",
"؟",
"؛",
"-",
"/",
"»",
"«"
],
[
".",
"ٕ",
"ٔ",
"ْ",
"ٍ",
"ٌ",
"ً",
"ّ",
"ٖ",
"ٰ",
"ٓ",
"ِ",
"ُ",
"َ",
"ـ"
]
]
]
},
{
"level": "opt+shift",
"mode": "locked",
"rows": [
[
[
"~"
],
[
"`"
],
[
"|"
],
[
"•",
"♪"
],
[
"√"
],
[
"Π",
"π"
],
[
"÷"
],
[
"×"
],
[
"¶",
"§"
],
[
"∆"
]
],
[
[
"£"
],
[
"€"
],
[
"$",
"¢"
],
[
"¢"
],
[
"^",
"↑",
"↓",
"←",
"→"
],
[
"°",
"",
"″"
],
[
"=",
"≠",
"≈",
"∞"
],
[
"{"
],
[
"}"
]
],
[
[
"\\"
],
[
"©"
],
[
"®"
],
[
"™"
],
[
"℅"
],
[
"["
],
[
"]"
]
],
[
[
"«",
"",
"≥",
">"
],
[
"»",
"",
"≤",
"<"
],
[
" "
],
[
"،",
":",
"!",
"؟",
"؛",
"-",
"/",
"»",
"«"
],
[
".",
"ٕ",
"ٔ",
"ْ",
"ٍ",
"ٌ",
"ً",
"ّ",
"ٖ",
"ٰ",
"ٓ",
"ِ",
"ُ",
"َ",
"ـ"
]
]
]
}
],
"locale": "fa",
"name": "Persian"
}

View File

@@ -1,583 +0,0 @@
{
"levels": [
{
"level": "",
"mode": "default",
"rows": [
[
[
"q"
],
[
"w"
],
[
"e",
"é",
"ë",
"è",
"ê",
"ę",
"ė",
"ē"
],
[
"r"
],
[
"t",
"þ"
],
[
"y",
"ý",
"ÿ"
],
[
"u",
"ú",
"ü",
"û",
"ù",
"ū"
],
[
"i",
"í",
"ï",
"î",
"ì",
"į",
"ī"
],
[
"o",
"ó",
"ö",
"ô",
"ò",
"õ",
"œ",
"ø",
"ō"
],
[
"p"
]
],
[
[
"a",
"á",
"ä",
"æ",
"å",
"à",
"â",
"ã",
"ā"
],
[
"s"
],
[
"d",
"ð"
],
[
"f"
],
[
"g"
],
[
"h"
],
[
"j"
],
[
"k"
],
[
"l"
]
],
[
[
"z"
],
[
"x"
],
[
"c"
],
[
"v"
],
[
"b"
],
[
"n"
],
[
"m"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "shift",
"mode": "latched",
"rows": [
[
[
"Q"
],
[
"W"
],
[
"E",
"É",
"Ë",
"È",
"Ê",
"Ę",
"Ė",
"Ē"
],
[
"R"
],
[
"T",
"Þ"
],
[
"Y",
"Ý",
"Ÿ"
],
[
"U",
"Ú",
"Ü",
"Û",
"Ù",
"Ū"
],
[
"I",
"Í",
"Ï",
"Î",
"Ì",
"Į",
"Ī"
],
[
"O",
"Ó",
"Ö",
"Ô",
"Ò",
"Õ",
"Œ",
"Ø",
"Ō"
],
[
"P"
]
],
[
[
"A",
"Á",
"Ä",
"Æ",
"Å",
"À",
"Â",
"Ã",
"Ā"
],
[
"S"
],
[
"D",
"Ð"
],
[
"F"
],
[
"G"
],
[
"H"
],
[
"J"
],
[
"K"
],
[
"L"
]
],
[
[
"Z"
],
[
"X"
],
[
"C"
],
[
"V"
],
[
"B"
],
[
"N"
],
[
"M"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "opt",
"mode": "locked",
"rows": [
[
[
"1",
"¹",
"½",
"⅓",
"¼",
"⅛"
],
[
"2",
"²",
"⅔"
],
[
"3",
"³",
"¾",
"⅜"
],
[
"4",
"⁴"
],
[
"5",
"⅝"
],
[
"6"
],
[
"7",
"⅞"
],
[
"8"
],
[
"9"
],
[
"0",
"ⁿ",
"∅"
]
],
[
[
"@"
],
[
"#"
],
[
"$",
"¢",
"£",
"€",
"¥",
"₱"
],
[
"%",
"‰"
],
[
"&"
],
[
"-",
"_",
"",
"—",
"·"
],
[
"+",
"±"
],
[
"(",
"<",
"{",
"["
],
[
")",
">",
"}",
"]"
]
],
[
[
"*",
"†",
"‡",
"★"
],
[
"\"",
"“",
"”",
"«",
"»"
],
[
"'",
"",
"",
"",
""
],
[
":"
],
[
";"
],
[
"!",
"¡"
],
[
"?",
"¿"
]
],
[
[
"_"
],
[
"/"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
},
{
"level": "opt+shift",
"mode": "locked",
"rows": [
[
[
"~"
],
[
"`"
],
[
"|"
],
[
"•",
"♪",
"♥",
"♠",
"♦",
"♣"
],
[
"√"
],
[
"Π",
"π"
],
[
"÷"
],
[
"×"
],
[
"¶",
"§"
],
[
"∆"
]
],
[
[
"£"
],
[
"¢"
],
[
"€"
],
[
"¥"
],
[
"^",
"↑",
"↓",
"←",
"→"
],
[
"°",
"",
"″"
],
[
"=",
"≠",
"≈",
"∞"
],
[
"{"
],
[
"}"
]
],
[
[
"\\"
],
[
"©"
],
[
"®"
],
[
"™"
],
[
"℅"
],
[
"["
],
[
"]"
]
],
[
[
"<",
"",
"≤",
"«"
],
[
">",
"",
"≥",
"»"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
}
],
"locale": "is",
"name": "Icelandic"
}

View File

@@ -1,580 +0,0 @@
{
"levels": [
{
"level": "",
"mode": "default",
"rows": [
[
[
"q"
],
[
"w"
],
[
"e",
"è",
"é",
"ê",
"ë",
"ę",
"ė",
"ē"
],
[
"r"
],
[
"t"
],
[
"y"
],
[
"u",
"ù",
"ú",
"û",
"ü",
"ū"
],
[
"i",
"ì",
"í",
"î",
"ï",
"į",
"ī"
],
[
"o",
"ò",
"ó",
"ô",
"ö",
"õ",
"œ",
"ø",
"ō",
"º"
],
[
"p"
]
],
[
[
"a",
"à",
"á",
"â",
"ä",
"æ",
"ã",
"å",
"ā",
"ª"
],
[
"s"
],
[
"d"
],
[
"f"
],
[
"g"
],
[
"h"
],
[
"j"
],
[
"k"
],
[
"l"
]
],
[
[
"z"
],
[
"x"
],
[
"c"
],
[
"v"
],
[
"b"
],
[
"n"
],
[
"m"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "shift",
"mode": "latched",
"rows": [
[
[
"Q"
],
[
"W"
],
[
"E",
"È",
"É",
"Ê",
"Ë",
"Ę",
"Ė",
"Ē"
],
[
"R"
],
[
"T"
],
[
"Y"
],
[
"U",
"Ù",
"Ú",
"Û",
"Ü",
"Ū"
],
[
"I",
"Ì",
"Í",
"Î",
"Ï",
"Į",
"Ī"
],
[
"O",
"Ò",
"Ó",
"Ô",
"Ö",
"Õ",
"Œ",
"Ø",
"Ō",
"º"
],
[
"P"
]
],
[
[
"A",
"À",
"Á",
"Â",
"Ä",
"Æ",
"Ã",
"Å",
"Ā",
"ª"
],
[
"S"
],
[
"D"
],
[
"F"
],
[
"G"
],
[
"H"
],
[
"J"
],
[
"K"
],
[
"L"
]
],
[
[
"Z"
],
[
"X"
],
[
"C"
],
[
"V"
],
[
"B"
],
[
"N"
],
[
"M"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "opt",
"mode": "locked",
"rows": [
[
[
"1",
"¹",
"½",
"⅓",
"¼",
"⅛"
],
[
"2",
"²",
"⅔"
],
[
"3",
"³",
"¾",
"⅜"
],
[
"4",
"⁴"
],
[
"5",
"⅝"
],
[
"6"
],
[
"7",
"⅞"
],
[
"8"
],
[
"9"
],
[
"0",
"ⁿ",
"∅"
]
],
[
[
"@"
],
[
"#"
],
[
"€",
"¢",
"£",
"$",
"¥",
"₱"
],
[
"%",
"‰"
],
[
"&"
],
[
"-",
"_",
"",
"—",
"·"
],
[
"+",
"±"
],
[
"(",
"<",
"{",
"["
],
[
")",
">",
"}",
"]"
]
],
[
[
"*",
"†",
"‡",
"★"
],
[
"\"",
"“",
"”",
"«",
"»"
],
[
"'",
"",
"",
"",
""
],
[
":"
],
[
";"
],
[
"!",
"¡"
],
[
"?",
"¿"
]
],
[
[
"_"
],
[
"/"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
},
{
"level": "opt+shift",
"mode": "locked",
"rows": [
[
[
"~"
],
[
"`"
],
[
"|"
],
[
"•",
"♪",
"♥",
"♠",
"♦",
"♣"
],
[
"√"
],
[
"Π",
"π"
],
[
"÷"
],
[
"×"
],
[
"¶",
"§"
],
[
"∆"
]
],
[
[
"£"
],
[
"¥"
],
[
"$",
"¢"
],
[
"¢"
],
[
"^",
"↑",
"↓",
"←",
"→"
],
[
"°",
"",
"″"
],
[
"=",
"≠",
"≈",
"∞"
],
[
"{"
],
[
"}"
]
],
[
[
"\\"
],
[
"©"
],
[
"®"
],
[
"™"
],
[
"℅"
],
[
"["
],
[
"]"
]
],
[
[
"<",
"",
"≤",
"«"
],
[
">",
"",
"≥",
"»"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
}
],
"locale": "it",
"name": "Italian"
}

View File

@@ -1,577 +0,0 @@
{
"levels": [
{
"level": "",
"mode": "default",
"rows": [
[
[
"q"
],
[
"w"
],
[
"e",
"è",
"é",
"ê",
"ë",
"ē"
],
[
"r"
],
[
"t"
],
[
"y"
],
[
"u",
"û",
"ü",
"ù",
"ú",
"ū"
],
[
"i",
"î",
"ï",
"í",
"ī",
"ì"
],
[
"o",
"ô",
"ö",
"ò",
"ó",
"œ",
"ø",
"ō",
"õ"
],
[
"p"
]
],
[
[
"a",
"à",
"á",
"â",
"ä",
"æ",
"ã",
"å",
"ā"
],
[
"s",
"ß"
],
[
"d"
],
[
"f"
],
[
"g",
"g'"
],
[
"h"
],
[
"j"
],
[
"k"
],
[
"l"
]
],
[
[
"z"
],
[
"x"
],
[
"c",
"ç"
],
[
"v"
],
[
"b"
],
[
"n",
"ñ"
],
[
"m"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "shift",
"mode": "latched",
"rows": [
[
[
"Q"
],
[
"W"
],
[
"E",
"È",
"É",
"Ê",
"Ë",
"Ē"
],
[
"R"
],
[
"T"
],
[
"Y"
],
[
"U",
"Û",
"Ü",
"Ù",
"Ú",
"Ū"
],
[
"I",
"Î",
"Ï",
"Í",
"Ī",
"Ì"
],
[
"O",
"Ô",
"Ö",
"Ò",
"Ó",
"Œ",
"Ø",
"Ō",
"Õ"
],
[
"P"
]
],
[
[
"A",
"À",
"Á",
"Â",
"Ä",
"Æ",
"Ã",
"Å",
"Ā"
],
[
"S",
"SS"
],
[
"D"
],
[
"F"
],
[
"G",
"G'"
],
[
"H"
],
[
"J"
],
[
"K"
],
[
"L"
]
],
[
[
"Z"
],
[
"X"
],
[
"C",
"Ç"
],
[
"V"
],
[
"B"
],
[
"N",
"Ñ"
],
[
"M"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "opt",
"mode": "locked",
"rows": [
[
[
"1",
"¹",
"½",
"⅓",
"¼",
"⅛"
],
[
"2",
"²",
"⅔"
],
[
"3",
"³",
"¾",
"⅜"
],
[
"4",
"⁴"
],
[
"5",
"⅝"
],
[
"6"
],
[
"7",
"⅞"
],
[
"8"
],
[
"9"
],
[
"0",
"ⁿ",
"∅"
]
],
[
[
"@"
],
[
"#"
],
[
"$",
"¢",
"£",
"€",
"¥",
"₱"
],
[
"%",
"‰"
],
[
"&"
],
[
"-",
"_",
"",
"—",
"·"
],
[
"+",
"±"
],
[
"(",
"<",
"{",
"["
],
[
")",
">",
"}",
"]"
]
],
[
[
"*",
"†",
"‡",
"★"
],
[
"\"",
"“",
"”",
"«",
"»"
],
[
"'",
"",
"",
"",
""
],
[
":"
],
[
";"
],
[
"!",
"¡"
],
[
"?",
"¿"
]
],
[
[
"_"
],
[
"/"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
},
{
"level": "opt+shift",
"mode": "locked",
"rows": [
[
[
"~"
],
[
"`"
],
[
"|"
],
[
"•",
"♪",
"♥",
"♠",
"♦",
"♣"
],
[
"√"
],
[
"Π",
"π"
],
[
"÷"
],
[
"×"
],
[
"¶",
"§"
],
[
"∆"
]
],
[
[
"£"
],
[
"¢"
],
[
"€"
],
[
"¥"
],
[
"^",
"↑",
"↓",
"←",
"→"
],
[
"°",
"",
"″"
],
[
"=",
"≠",
"≈",
"∞"
],
[
"{"
],
[
"}"
]
],
[
[
"\\"
],
[
"©"
],
[
"®"
],
[
"™"
],
[
"℅"
],
[
"["
],
[
"]"
]
],
[
[
"<",
"",
"≤",
"«"
],
[
">",
"",
"≥",
"»"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
}
],
"locale": "sw",
"name": "Swahili"
}

View File

@@ -1,547 +0,0 @@
{
"levels": [
{
"level": "",
"mode": "default",
"rows": [
[
[
"й"
],
[
"ц"
],
[
"у",
"ү"
],
[
"к"
],
[
"е",
"ё"
],
[
"н",
"ң"
],
[
"г"
],
[
"ш"
],
[
"щ"
],
[
"з"
],
[
"х"
]
],
[
[
"ф"
],
[
"ы"
],
[
"в"
],
[
"а"
],
[
"п"
],
[
"р"
],
[
"о",
"ө"
],
[
"л"
],
[
"д"
],
[
"ж"
],
[
"э"
]
],
[
[
"я"
],
[
"ч"
],
[
"с"
],
[
"м"
],
[
"и"
],
[
"т"
],
[
"ь",
"ъ"
],
[
"б"
],
[
"ю"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "shift",
"mode": "latched",
"rows": [
[
[
"Й"
],
[
"Ц"
],
[
"У",
"Ү"
],
[
"К"
],
[
"Е",
"Ё"
],
[
"Н",
"Ң"
],
[
"Г"
],
[
"Ш"
],
[
"Щ"
],
[
"З"
],
[
"Х"
]
],
[
[
"Ф"
],
[
"Ы"
],
[
"В"
],
[
"А"
],
[
"П"
],
[
"Р"
],
[
"О",
"Ө"
],
[
"Л"
],
[
"Д"
],
[
"Ж"
],
[
"Э"
]
],
[
[
"Я"
],
[
"Ч"
],
[
"С"
],
[
"М"
],
[
"И"
],
[
"Т"
],
[
"Ь",
"Ъ"
],
[
"Б"
],
[
"Ю"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "opt",
"mode": "locked",
"rows": [
[
[
"1",
"¹",
"½",
"⅓",
"¼",
"⅛"
],
[
"2",
"²",
"⅔"
],
[
"3",
"³",
"¾",
"⅜"
],
[
"4",
"⁴"
],
[
"5",
"⅝"
],
[
"6"
],
[
"7",
"⅞"
],
[
"8"
],
[
"9"
],
[
"0",
"ⁿ",
"∅"
]
],
[
[
"@"
],
[
"#"
],
[
"$",
"¢",
"£",
"€",
"¥",
"₱"
],
[
"%",
"‰"
],
[
"&"
],
[
"-",
"_",
"",
"—",
"·"
],
[
"+",
"±"
],
[
"(",
"<",
"{",
"["
],
[
")",
">",
"}",
"]"
]
],
[
[
"*",
"†",
"‡",
"★"
],
[
"\"",
"“",
"”",
"«",
"»"
],
[
"'",
"",
"",
"",
""
],
[
":"
],
[
";"
],
[
"!",
"¡"
],
[
"?",
"¿"
]
],
[
[
"_"
],
[
"/"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
},
{
"level": "opt+shift",
"mode": "locked",
"rows": [
[
[
"~"
],
[
"`"
],
[
"|"
],
[
"•",
"♪",
"♥",
"♠",
"♦",
"♣"
],
[
"√"
],
[
"Π",
"π"
],
[
"÷"
],
[
"×"
],
[
"¶",
"§"
],
[
"∆"
]
],
[
[
"£"
],
[
"¢"
],
[
"€"
],
[
"¥"
],
[
"^",
"↑",
"↓",
"←",
"→"
],
[
"°",
"",
"″"
],
[
"=",
"≠",
"≈",
"∞"
],
[
"{"
],
[
"}"
]
],
[
[
"\\"
],
[
"©"
],
[
"®"
],
[
"™"
],
[
"℅"
],
[
"["
],
[
"]"
]
],
[
[
"<",
"",
"≤",
"«"
],
[
">",
"",
"≥",
"»"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
}
],
"locale": "ky",
"name": "Kirghiz"
}

View File

@@ -1,481 +0,0 @@
{
"levels": [
{
"level": "",
"mode": "default",
"rows": [
[
[
"១",
"៱"
],
[
"២",
"៲"
],
[
"៣",
"៳"
],
[
"៤",
"៴"
],
[
"៥",
"៵"
],
[
"៦",
"៶"
],
[
"៧",
"៷"
],
[
"៨",
"៸"
],
[
"៩",
"៹"
],
[
"០",
"៰"
],
[
"ឥ",
"",
"ឦ"
],
[
"ឲ",
"ឱ"
]
],
[
[
"ឆ"
],
[
"ឹ"
],
[
"េ"
],
[
"រ"
],
[
"ត"
],
[
"យ"
],
[
"ុ"
],
[
"ិ"
],
[
"ោ"
],
[
"ផ"
],
[
"ៀ"
],
[
"ឪ",
"ឧ",
"ឱ",
"ឳ",
"ឩ",
"ឨ"
]
],
[
[
"ា"
],
[
"ស"
],
[
"ដ"
],
[
"ថ"
],
[
"ង"
],
[
"ហ"
],
[
"្"
],
[
"ក"
],
[
"ល"
],
[
"ើ"
],
[
"់"
],
[
"ឮ",
"ឭ",
"ឰ"
]
],
[
[
"ឋ"
],
[
"ខ"
],
[
"ច"
],
[
"វ"
],
[
"ប"
],
[
"ន"
],
[
"ម"
],
[
"ុំ"
],
[
"។"
],
[
"៊"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "opt",
"mode": "locked",
"rows": [
[
[
"1",
"¹",
"½",
"⅓",
"¼",
"⅛"
],
[
"2",
"²",
"⅔"
],
[
"3",
"³",
"¾",
"⅜"
],
[
"4",
"⁴"
],
[
"5",
"⅝"
],
[
"6"
],
[
"7",
"⅞"
],
[
"8"
],
[
"9"
],
[
"0",
"ⁿ",
"∅"
]
],
[
[
"@"
],
[
"#"
],
[
"$",
"៛",
"¢",
"£",
"€",
"¥",
"₱"
],
[
"%",
"‰"
],
[
"&"
],
[
"-",
"_",
"",
"—",
"·"
],
[
"+",
"±"
],
[
"(",
"<",
"{",
"["
],
[
")",
">",
"}",
"]"
]
],
[
[
"*",
"†",
"‡",
"★"
],
[
"\"",
"“",
"”",
"«",
"»"
],
[
"'",
"",
"",
"",
""
],
[
":"
],
[
";"
],
[
"!",
"¡"
],
[
"?",
"¿"
]
],
[
[
"_"
],
[
"/"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
},
{
"level": "opt+shift",
"mode": "locked",
"rows": [
[
[
"~"
],
[
"`"
],
[
"|"
],
[
"•",
"♪",
"♥",
"♠",
"♦",
"♣"
],
[
"√"
],
[
"Π",
"π"
],
[
"÷"
],
[
"×"
],
[
"¶",
"§"
],
[
"∆"
]
],
[
[
"£"
],
[
"¢"
],
[
"€"
],
[
"¥"
],
[
"^",
"↑",
"↓",
"←",
"→"
],
[
"°",
"",
"″"
],
[
"=",
"≠",
"≈",
"∞"
],
[
"{"
],
[
"}"
]
],
[
[
"\\"
],
[
"©"
],
[
"®"
],
[
"™"
],
[
"℅"
],
[
"["
],
[
"]"
]
],
[
[
"<",
"",
"≤",
"«"
],
[
">",
"",
"≥",
"»"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
}
],
"locale": "km",
"name": "Khmer"
}

View File

@@ -1,472 +0,0 @@
{
"levels": [
{
"level": "",
"mode": "default",
"rows": [
[
[
"ຢ",
"໑"
],
[
"ຟ",
"໒"
],
[
"ໂ",
"໓"
],
[
"ຖ",
"໔"
],
[
"ຸ"
],
[
"ູ"
],
[
"ຄ",
"໕"
],
[
"ຕ",
"໖"
],
[
"ຈ",
"໗"
],
[
"ຂ",
"໘"
],
[
"ຊ",
"໙"
],
[
"ໍ"
]
],
[
[
"ົ"
],
[
"ໄ",
""
],
[
"ຳ"
],
[
"ພ"
],
[
"ະ"
],
[
"ິ"
],
[
"ີ"
],
[
"ຮ"
],
[
"ນ"
],
[
"ຍ"
],
[
"ບ"
],
[
"ລ"
]
],
[
[
"ັ"
],
[
"ຫ"
],
[
"ກ"
],
[
"ດ"
],
[
"ເ"
],
[
"້"
],
[
"່"
],
[
"າ"
],
[
"ສ"
],
[
"ວ"
],
[
"ງ"
],
[
"“"
]
],
[
[
"ຜ"
],
[
"ປ"
],
[
"ແ"
],
[
"ອ"
],
[
"ຶ"
],
[
"ື"
],
[
"ທ"
],
[
"ມ"
],
[
"ໃ"
],
[
"ຝ"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "opt",
"mode": "locked",
"rows": [
[
[
"1",
"¹",
"½",
"⅓",
"¼",
"⅛"
],
[
"2",
"²",
"⅔"
],
[
"3",
"³",
"¾",
"⅜"
],
[
"4",
"⁴"
],
[
"5",
"⅝"
],
[
"6"
],
[
"7",
"⅞"
],
[
"8"
],
[
"9"
],
[
"0",
"ⁿ",
"∅"
]
],
[
[
"@"
],
[
"#"
],
[
"₭",
"$",
"¢",
"€",
"£",
"¥",
"₱"
],
[
"%",
"‰"
],
[
"&"
],
[
"-",
"_",
"",
"—",
"·"
],
[
"+",
"±"
],
[
"(",
"<",
"{",
"["
],
[
")",
">",
"}",
"]"
]
],
[
[
"*",
"†",
"‡",
"★"
],
[
"\"",
"“",
"”",
"«",
"»"
],
[
"'",
"",
"",
"",
""
],
[
":"
],
[
";"
],
[
"!",
"¡"
],
[
"?",
"¿"
]
],
[
[
"_"
],
[
"/"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
},
{
"level": "opt+shift",
"mode": "locked",
"rows": [
[
[
"~"
],
[
"`"
],
[
"|"
],
[
"•",
"♪",
"♥",
"♠",
"♦",
"♣"
],
[
"√"
],
[
"Π",
"π"
],
[
"÷"
],
[
"×"
],
[
"¶",
"§"
],
[
"∆"
]
],
[
[
"£"
],
[
"€"
],
[
"$",
"¢"
],
[
"¢"
],
[
"^",
"↑",
"↓",
"←",
"→"
],
[
"°",
"",
"″"
],
[
"=",
"≠",
"≈",
"∞"
],
[
"{"
],
[
"}"
]
],
[
[
"\\"
],
[
"©"
],
[
"®"
],
[
"™"
],
[
"℅"
],
[
"["
],
[
"]"
]
],
[
[
"<",
"",
"≤",
"«"
],
[
">",
"",
"≥",
"»"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
}
],
"locale": "lo",
"name": "Lao"
}

View File

@@ -1,603 +0,0 @@
{
"levels": [
{
"level": "",
"mode": "default",
"rows": [
[
[
"q"
],
[
"w"
],
[
"e",
"é",
"è",
"ë",
"ê",
"ę",
"ė",
"ē"
],
[
"r"
],
[
"t"
],
[
"y"
],
[
"u",
"ú",
"ü",
"ù",
"û",
"ū"
],
[
"i",
"í",
"ï",
"ì",
"î",
"į",
"ī"
],
[
"o",
"ó",
"ò",
"ö",
"ô",
"õ",
"ø",
"œ",
"ō",
"º"
],
[
"p"
]
],
[
[
"a",
"á",
"à",
"ä",
"â",
"ã",
"å",
"ą",
"æ",
"ā",
"ª"
],
[
"s"
],
[
"d"
],
[
"f"
],
[
"g"
],
[
"h"
],
[
"j"
],
[
"k"
],
[
"l"
],
[
"ñ"
]
],
[
[
"z"
],
[
"x"
],
[
"c",
"ç",
"ć",
"č"
],
[
"v"
],
[
"b"
],
[
"n",
"ñ",
"ń"
],
[
"m"
]
],
[
[
","
],
[
" "
],
[
".",
";",
"!",
",",
"?",
":",
"¡",
"@",
"¿"
]
]
]
},
{
"level": "shift",
"mode": "latched",
"rows": [
[
[
"Q"
],
[
"W"
],
[
"E",
"É",
"È",
"Ë",
"Ê",
"Ę",
"Ė",
"Ē"
],
[
"R"
],
[
"T"
],
[
"Y"
],
[
"U",
"Ú",
"Ü",
"Ù",
"Û",
"Ū"
],
[
"I",
"Í",
"Ï",
"Ì",
"Î",
"Į",
"Ī"
],
[
"O",
"Ó",
"Ò",
"Ö",
"Ô",
"Õ",
"Ø",
"Œ",
"Ō",
"º"
],
[
"P"
]
],
[
[
"A",
"Á",
"À",
"Ä",
"Â",
"Ã",
"Å",
"Ą",
"Æ",
"Ā",
"ª"
],
[
"S"
],
[
"D"
],
[
"F"
],
[
"G"
],
[
"H"
],
[
"J"
],
[
"K"
],
[
"L"
],
[
"Ñ"
]
],
[
[
"Z"
],
[
"X"
],
[
"C",
"Ç",
"Ć",
"Č"
],
[
"V"
],
[
"B"
],
[
"N",
"Ñ",
"Ń"
],
[
"M"
]
],
[
[
","
],
[
" "
],
[
".",
";",
"!",
",",
"?",
":",
"¡",
"@",
"¿"
]
]
]
},
{
"level": "opt",
"mode": "locked",
"rows": [
[
[
"1",
"¹",
"½",
"⅓",
"¼",
"⅛"
],
[
"2",
"²",
"⅔"
],
[
"3",
"³",
"¾",
"⅜"
],
[
"4",
"⁴"
],
[
"5",
"⅝"
],
[
"6"
],
[
"7",
"⅞"
],
[
"8"
],
[
"9"
],
[
"0",
"ⁿ",
"∅"
]
],
[
[
"@"
],
[
"#"
],
[
"$",
"¢",
"£",
"€",
"¥",
"₱"
],
[
"%",
"‰"
],
[
"&"
],
[
"-",
"_",
"",
"—",
"·"
],
[
"+",
"±"
],
[
"(",
"<",
"{",
"["
],
[
")",
">",
"}",
"]"
]
],
[
[
"*",
"†",
"‡",
"★"
],
[
"\"",
"“",
"”",
"«",
"»"
],
[
"'",
"",
"",
"",
""
],
[
":"
],
[
";"
],
[
"!",
"¡"
],
[
"?",
"¿"
]
],
[
[
"_"
],
[
"/"
],
[
" "
],
[
",",
"!",
"¡"
],
[
".",
"?",
"¿"
]
]
]
},
{
"level": "opt+shift",
"mode": "locked",
"rows": [
[
[
"~"
],
[
"`"
],
[
"|"
],
[
"•",
"♪",
"♥",
"♠",
"♦",
"♣"
],
[
"√"
],
[
"Π",
"π"
],
[
"÷"
],
[
"×"
],
[
"¶",
"§"
],
[
"∆"
]
],
[
[
"£"
],
[
"¢"
],
[
"€"
],
[
"¥"
],
[
"^",
"↑",
"↓",
"←",
"→"
],
[
"°",
"",
"″"
],
[
"=",
"≠",
"≈",
"∞"
],
[
"{"
],
[
"}"
]
],
[
[
"\\"
],
[
"©"
],
[
"®"
],
[
"™"
],
[
"℅"
],
[
"["
],
[
"]"
]
],
[
[
"<",
"",
"≤",
"«"
],
[
">",
"",
"≥",
"»"
],
[
" "
],
[
",",
"!",
"¡"
],
[
".",
"?",
"¿"
]
]
]
}
],
"locale": "es-US",
"name": "Spanish United States"
}

View File

@@ -1,647 +0,0 @@
{
"levels": [
{
"level": "",
"mode": "default",
"rows": [
[
[
"q"
],
[
"w"
],
[
"e",
"ė",
"ę",
"ē",
"è",
"é",
"ê",
"ë",
"ě"
],
[
"r",
"ŗ",
"ř",
"ŕ"
],
[
"t",
"ţ",
"ť"
],
[
"y",
"ý",
"ÿ"
],
[
"u",
"ū",
"ų",
"ü",
"ū",
"ù",
"ú",
"û",
"ů",
"ű"
],
[
"i",
"į",
"ī",
"ì",
"í",
"î",
"ï",
"ı"
],
[
"o",
"ö",
"õ",
"ò",
"ó",
"ô",
"œ",
"ő",
"ø"
],
[
"p"
]
],
[
[
"a",
"ą",
"ä",
"ā",
"à",
"á",
"â",
"ã",
"å",
"æ"
],
[
"s",
"š",
"ß",
"ś",
"ş"
],
[
"d",
"ď"
],
[
"f"
],
[
"g",
"ģ",
"ğ"
],
[
"h"
],
[
"j"
],
[
"k",
"ķ"
],
[
"l",
"ļ",
"ł",
"ĺ",
"ľ"
]
],
[
[
"z",
"ž",
"ż",
"ź"
],
[
"x"
],
[
"c",
"č",
"ç",
"ć"
],
[
"v"
],
[
"b"
],
[
"n",
"ņ",
"ñ",
"ń",
"ń"
],
[
"m"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "shift",
"mode": "latched",
"rows": [
[
[
"Q"
],
[
"W"
],
[
"E",
"Ė",
"Ę",
"Ē",
"È",
"É",
"Ê",
"Ë",
"Ě"
],
[
"R",
"Ŗ",
"Ř",
"Ŕ"
],
[
"T",
"Ţ",
"Ť"
],
[
"Y",
"Ý",
"Ÿ"
],
[
"U",
"Ū",
"Ų",
"Ü",
"Ū",
"Ù",
"Ú",
"Û",
"Ů",
"Ű"
],
[
"I",
"Į",
"Ī",
"Ì",
"Í",
"Î",
"Ï",
"I"
],
[
"O",
"Ö",
"Õ",
"Ò",
"Ó",
"Ô",
"Œ",
"Ő",
"Ø"
],
[
"P"
]
],
[
[
"A",
"Ą",
"Ä",
"Ā",
"À",
"Á",
"Â",
"Ã",
"Å",
"Æ"
],
[
"S",
"Š",
"SS",
"Ś",
"Ş"
],
[
"D",
"Ď"
],
[
"F"
],
[
"G",
"Ģ",
"Ğ"
],
[
"H"
],
[
"J"
],
[
"K",
"Ķ"
],
[
"L",
"Ļ",
"Ł",
"Ĺ",
"Ľ"
]
],
[
[
"Z",
"Ž",
"Ż",
"Ź"
],
[
"X"
],
[
"C",
"Č",
"Ç",
"Ć"
],
[
"V"
],
[
"B"
],
[
"N",
"Ņ",
"Ñ",
"Ń",
"Ń"
],
[
"M"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "opt",
"mode": "locked",
"rows": [
[
[
"1",
"¹",
"½",
"⅓",
"¼",
"⅛"
],
[
"2",
"²",
"⅔"
],
[
"3",
"³",
"¾",
"⅜"
],
[
"4",
"⁴"
],
[
"5",
"⅝"
],
[
"6"
],
[
"7",
"⅞"
],
[
"8"
],
[
"9"
],
[
"0",
"ⁿ",
"∅"
]
],
[
[
"@"
],
[
"#"
],
[
"$",
"¢",
"£",
"€",
"¥",
"₱"
],
[
"%",
"‰"
],
[
"&"
],
[
"-",
"_",
"",
"—",
"·"
],
[
"+",
"±"
],
[
"(",
"<",
"{",
"["
],
[
")",
">",
"}",
"]"
]
],
[
[
"*",
"†",
"‡",
"★"
],
[
"\"",
"“",
"”",
"«",
"»"
],
[
"'",
"",
"",
"",
""
],
[
":"
],
[
";"
],
[
"!",
"¡"
],
[
"?",
"¿"
]
],
[
[
"_"
],
[
"/"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
},
{
"level": "opt+shift",
"mode": "locked",
"rows": [
[
[
"~"
],
[
"`"
],
[
"|"
],
[
"•",
"♪",
"♥",
"♠",
"♦",
"♣"
],
[
"√"
],
[
"Π",
"π"
],
[
"÷"
],
[
"×"
],
[
"¶",
"§"
],
[
"∆"
]
],
[
[
"£"
],
[
"¢"
],
[
"€"
],
[
"¥"
],
[
"^",
"↑",
"↓",
"←",
"→"
],
[
"°",
"",
"″"
],
[
"=",
"≠",
"≈",
"∞"
],
[
"{"
],
[
"}"
]
],
[
[
"\\"
],
[
"©"
],
[
"®"
],
[
"™"
],
[
"℅"
],
[
"["
],
[
"]"
]
],
[
[
"<",
"",
"≤",
"«"
],
[
">",
"",
"≥",
"»"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
}
],
"locale": "lt",
"name": "Lithuanian"
}

View File

@@ -1,645 +0,0 @@
{
"levels": [
{
"level": "",
"mode": "default",
"rows": [
[
[
"q"
],
[
"w"
],
[
"e",
"ē",
"ė",
"è",
"é",
"ê",
"ë",
"ę",
"ě"
],
[
"r",
"ŗ",
"ř",
"ŕ"
],
[
"t",
"ţ",
"ť"
],
[
"y",
"ý",
"ÿ"
],
[
"u",
"ū",
"ų",
"ù",
"ú",
"û",
"ü",
"ů",
"ű"
],
[
"i",
"ī",
"į",
"ì",
"í",
"î",
"ï",
"ı"
],
[
"o",
"ò",
"ó",
"ô",
"õ",
"ö",
"œ",
"ő",
"ø"
],
[
"p"
]
],
[
[
"a",
"ā",
"à",
"á",
"â",
"ã",
"ä",
"å",
"æ",
"ą"
],
[
"s",
"š",
"ß",
"ś",
"ş"
],
[
"d",
"ď"
],
[
"f"
],
[
"g",
"ģ",
"ğ"
],
[
"h"
],
[
"j"
],
[
"k",
"ķ"
],
[
"l",
"ļ",
"ł",
"ĺ",
"ľ"
]
],
[
[
"z",
"ž",
"ż",
"ź"
],
[
"x"
],
[
"c",
"č",
"ç",
"ć"
],
[
"v"
],
[
"b"
],
[
"n",
"ņ",
"ñ",
"ń",
"ń"
],
[
"m"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "shift",
"mode": "latched",
"rows": [
[
[
"Q"
],
[
"W"
],
[
"E",
"Ē",
"Ė",
"È",
"É",
"Ê",
"Ë",
"Ę",
"Ě"
],
[
"R",
"Ŗ",
"Ř",
"Ŕ"
],
[
"T",
"Ţ",
"Ť"
],
[
"Y",
"Ý",
"Ÿ"
],
[
"U",
"Ū",
"Ų",
"Ù",
"Ú",
"Û",
"Ü",
"Ů",
"Ű"
],
[
"I",
"Ī",
"Į",
"Ì",
"Í",
"Î",
"Ï",
"I"
],
[
"O",
"Ò",
"Ó",
"Ô",
"Õ",
"Ö",
"Œ",
"Ő",
"Ø"
],
[
"P"
]
],
[
[
"A",
"Ā",
"À",
"Á",
"Â",
"Ã",
"Ä",
"Å",
"Æ",
"Ą"
],
[
"S",
"Š",
"SS",
"Ś",
"Ş"
],
[
"D",
"Ď"
],
[
"F"
],
[
"G",
"Ģ",
"Ğ"
],
[
"H"
],
[
"J"
],
[
"K",
"Ķ"
],
[
"L",
"Ļ",
"Ł",
"Ĺ",
"Ľ"
]
],
[
[
"Z",
"Ž",
"Ż",
"Ź"
],
[
"X"
],
[
"C",
"Č",
"Ç",
"Ć"
],
[
"V"
],
[
"B"
],
[
"N",
"Ņ",
"Ñ",
"Ń",
"Ń"
],
[
"M"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "opt",
"mode": "locked",
"rows": [
[
[
"1",
"¹",
"½",
"⅓",
"¼",
"⅛"
],
[
"2",
"²",
"⅔"
],
[
"3",
"³",
"¾",
"⅜"
],
[
"4",
"⁴"
],
[
"5",
"⅝"
],
[
"6"
],
[
"7",
"⅞"
],
[
"8"
],
[
"9"
],
[
"0",
"ⁿ",
"∅"
]
],
[
[
"@"
],
[
"#"
],
[
"$",
"¢",
"£",
"€",
"¥",
"₱"
],
[
"%",
"‰"
],
[
"&"
],
[
"-",
"_",
"",
"—",
"·"
],
[
"+",
"±"
],
[
"(",
"<",
"{",
"["
],
[
")",
">",
"}",
"]"
]
],
[
[
"*",
"†",
"‡",
"★"
],
[
"\"",
"“",
"”",
"«",
"»"
],
[
"'",
"",
"",
"",
""
],
[
":"
],
[
";"
],
[
"!",
"¡"
],
[
"?",
"¿"
]
],
[
[
"_"
],
[
"/"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
},
{
"level": "opt+shift",
"mode": "locked",
"rows": [
[
[
"~"
],
[
"`"
],
[
"|"
],
[
"•",
"♪",
"♥",
"♠",
"♦",
"♣"
],
[
"√"
],
[
"Π",
"π"
],
[
"÷"
],
[
"×"
],
[
"¶",
"§"
],
[
"∆"
]
],
[
[
"£"
],
[
"¢"
],
[
"€"
],
[
"¥"
],
[
"^",
"↑",
"↓",
"←",
"→"
],
[
"°",
"",
"″"
],
[
"=",
"≠",
"≈",
"∞"
],
[
"{"
],
[
"}"
]
],
[
[
"\\"
],
[
"©"
],
[
"®"
],
[
"™"
],
[
"℅"
],
[
"["
],
[
"]"
]
],
[
[
"<",
"",
"≤",
"«"
],
[
">",
"",
"≥",
"»"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
}
],
"locale": "lv",
"name": "Latvian"
}

View File

@@ -1,541 +0,0 @@
{
"levels": [
{
"level": "",
"mode": "default",
"rows": [
[
[
"љ"
],
[
"њ"
],
[
"е",
"ѐ"
],
[
"р"
],
[
"т"
],
[
"ѕ"
],
[
"у"
],
[
"и",
"ѝ"
],
[
"о"
],
[
"п"
],
[
"ш"
]
],
[
[
"а"
],
[
"с"
],
[
"д"
],
[
"ф"
],
[
"г"
],
[
"х"
],
[
"ј"
],
[
"к"
],
[
"л"
],
[
"ч"
],
[
"ќ"
]
],
[
[
"з"
],
[
"џ"
],
[
"ц"
],
[
"в"
],
[
"б"
],
[
"н"
],
[
"м"
],
[
"ѓ"
],
[
"ж"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "shift",
"mode": "latched",
"rows": [
[
[
"Љ"
],
[
"Њ"
],
[
"Е",
"Ѐ"
],
[
"Р"
],
[
"Т"
],
[
"Ѕ"
],
[
"У"
],
[
"И",
"Ѝ"
],
[
"О"
],
[
"П"
],
[
"Ш"
]
],
[
[
"А"
],
[
"С"
],
[
"Д"
],
[
"Ф"
],
[
"Г"
],
[
"Х"
],
[
"Ј"
],
[
"К"
],
[
"Л"
],
[
"Ч"
],
[
"Ќ"
]
],
[
[
"З"
],
[
"Џ"
],
[
"Ц"
],
[
"В"
],
[
"Б"
],
[
"Н"
],
[
"М"
],
[
"Ѓ"
],
[
"Ж"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "opt",
"mode": "locked",
"rows": [
[
[
"1",
"¹",
"½",
"⅓",
"¼",
"⅛"
],
[
"2",
"²",
"⅔"
],
[
"3",
"³",
"¾",
"⅜"
],
[
"4",
"⁴"
],
[
"5",
"⅝"
],
[
"6"
],
[
"7",
"⅞"
],
[
"8"
],
[
"9"
],
[
"0",
"ⁿ",
"∅"
]
],
[
[
"@"
],
[
"#"
],
[
"$",
"¢",
"£",
"€",
"¥",
"₱"
],
[
"%",
"‰"
],
[
"&"
],
[
"-",
"_",
"",
"—",
"·"
],
[
"+",
"±"
],
[
"(",
"<",
"{",
"["
],
[
")",
">",
"}",
"]"
]
],
[
[
"*",
"†",
"‡",
"★"
],
[
"\"",
"“",
"”",
"«",
"»"
],
[
"'",
"",
"",
"",
""
],
[
":"
],
[
";"
],
[
"!",
"¡"
],
[
"?",
"¿"
]
],
[
[
"_"
],
[
"/"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
},
{
"level": "opt+shift",
"mode": "locked",
"rows": [
[
[
"~"
],
[
"`"
],
[
"|"
],
[
"•",
"♪",
"♥",
"♠",
"♦",
"♣"
],
[
"√"
],
[
"Π",
"π"
],
[
"÷"
],
[
"×"
],
[
"¶",
"§"
],
[
"∆"
]
],
[
[
"£"
],
[
"¢"
],
[
"€"
],
[
"¥"
],
[
"^",
"↑",
"↓",
"←",
"→"
],
[
"°",
"",
"″"
],
[
"=",
"≠",
"≈",
"∞"
],
[
"{"
],
[
"}"
]
],
[
[
"\\"
],
[
"©"
],
[
"®"
],
[
"™"
],
[
"℅"
],
[
"["
],
[
"]"
]
],
[
[
"<",
"",
"≤",
"«"
],
[
">",
"",
"≥",
"»"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
}
],
"locale": "mk",
"name": "Macedonian"
}

View File

@@ -1,547 +0,0 @@
{
"levels": [
{
"level": "",
"mode": "default",
"rows": [
[
[
"ф"
],
[
"ц"
],
[
"у"
],
[
"ж"
],
[
"э"
],
[
"н"
],
[
"г"
],
[
"ш",
"щ"
],
[
"ү"
],
[
"з"
],
[
"к"
]
],
[
[
"й"
],
[
"ы"
],
[
"б"
],
[
"ө"
],
[
"а"
],
[
"х"
],
[
"р"
],
[
"о"
],
[
"л"
],
[
"д"
],
[
"п"
]
],
[
[
"я"
],
[
"ч"
],
[
"ё",
"е"
],
[
"с"
],
[
"м"
],
[
"и"
],
[
"т"
],
[
"ь",
"ъ"
],
[
"в",
"ю"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "shift",
"mode": "latched",
"rows": [
[
[
"Ф"
],
[
"Ц"
],
[
"У"
],
[
"Ж"
],
[
"Э"
],
[
"Н"
],
[
"Г"
],
[
"Ш",
"Щ"
],
[
"Ү"
],
[
"З"
],
[
"К"
]
],
[
[
"Й"
],
[
"Ы"
],
[
"Б"
],
[
"Ө"
],
[
"А"
],
[
"Х"
],
[
"Р"
],
[
"О"
],
[
"Л"
],
[
"Д"
],
[
"П"
]
],
[
[
"Я"
],
[
"Ч"
],
[
"Ё",
"Е"
],
[
"С"
],
[
"М"
],
[
"И"
],
[
"Т"
],
[
"Ь",
"Ъ"
],
[
"В",
"Ю"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "opt",
"mode": "locked",
"rows": [
[
[
"1",
"¹",
"½",
"⅓",
"¼",
"⅛"
],
[
"2",
"²",
"⅔"
],
[
"3",
"³",
"¾",
"⅜"
],
[
"4",
"⁴"
],
[
"5",
"⅝"
],
[
"6"
],
[
"7",
"⅞"
],
[
"8"
],
[
"9"
],
[
"0",
"ⁿ",
"∅"
]
],
[
[
"@"
],
[
"#"
],
[
"₮",
"$",
"¢",
"€",
"£",
"¥",
"₱"
],
[
"%",
"‰"
],
[
"&"
],
[
"-",
"_",
"",
"—",
"·"
],
[
"+",
"±"
],
[
"(",
"<",
"{",
"["
],
[
")",
">",
"}",
"]"
]
],
[
[
"*",
"†",
"‡",
"★"
],
[
"\"",
"“",
"”",
"«",
"»"
],
[
"'",
"",
"",
"",
""
],
[
":"
],
[
";"
],
[
"!",
"¡"
],
[
"?",
"¿"
]
],
[
[
"_"
],
[
"/"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
},
{
"level": "opt+shift",
"mode": "locked",
"rows": [
[
[
"~"
],
[
"`"
],
[
"|"
],
[
"•",
"♪",
"♥",
"♠",
"♦",
"♣"
],
[
"√"
],
[
"Π",
"π"
],
[
"÷"
],
[
"×"
],
[
"¶",
"§"
],
[
"∆"
]
],
[
[
"£"
],
[
"€"
],
[
"$",
"¢"
],
[
"¢"
],
[
"^",
"↑",
"↓",
"←",
"→"
],
[
"°",
"",
"″"
],
[
"=",
"≠",
"≈",
"∞"
],
[
"{"
],
[
"}"
]
],
[
[
"\\"
],
[
"©"
],
[
"®"
],
[
"™"
],
[
"℅"
],
[
"["
],
[
"]"
]
],
[
[
"<",
"",
"≤",
"«"
],
[
">",
"",
"≥",
"»"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
}
],
"locale": "mn",
"name": "Mongolian"
}

View File

@@ -1,507 +0,0 @@
{
"levels": [
{
"level": "",
"mode": "default",
"rows": [
[
[
"q"
],
[
"w"
],
[
"e"
],
[
"r"
],
[
"t"
],
[
"y"
],
[
"u"
],
[
"i"
],
[
"o"
],
[
"p"
]
],
[
[
"a"
],
[
"s"
],
[
"d"
],
[
"f"
],
[
"g"
],
[
"h"
],
[
"j"
],
[
"k"
],
[
"l"
]
],
[
[
"z"
],
[
"x"
],
[
"c"
],
[
"v"
],
[
"b"
],
[
"n"
],
[
"m"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "shift",
"mode": "latched",
"rows": [
[
[
"Q"
],
[
"W"
],
[
"E"
],
[
"R"
],
[
"T"
],
[
"Y"
],
[
"U"
],
[
"I"
],
[
"O"
],
[
"P"
]
],
[
[
"A"
],
[
"S"
],
[
"D"
],
[
"F"
],
[
"G"
],
[
"H"
],
[
"J"
],
[
"K"
],
[
"L"
]
],
[
[
"Z"
],
[
"X"
],
[
"C"
],
[
"V"
],
[
"B"
],
[
"N"
],
[
"M"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "opt",
"mode": "locked",
"rows": [
[
[
"1",
"¹",
"½",
"⅓",
"¼",
"⅛"
],
[
"2",
"²",
"⅔"
],
[
"3",
"³",
"¾",
"⅜"
],
[
"4",
"⁴"
],
[
"5",
"⅝"
],
[
"6"
],
[
"7",
"⅞"
],
[
"8"
],
[
"9"
],
[
"0",
"ⁿ",
"∅"
]
],
[
[
"@"
],
[
"#"
],
[
"$",
"¢",
"£",
"€",
"¥",
"₱"
],
[
"%",
"‰"
],
[
"&"
],
[
"-",
"_",
"",
"—",
"·"
],
[
"+",
"±"
],
[
"(",
"<",
"{",
"["
],
[
")",
">",
"}",
"]"
]
],
[
[
"*",
"†",
"‡",
"★"
],
[
"\"",
"“",
"”",
"«",
"»"
],
[
"'",
"",
"",
"",
""
],
[
":"
],
[
";"
],
[
"!",
"¡"
],
[
"?",
"¿"
]
],
[
[
"_"
],
[
"/"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
},
{
"level": "opt+shift",
"mode": "locked",
"rows": [
[
[
"~"
],
[
"`"
],
[
"|"
],
[
"•",
"♪",
"♥",
"♠",
"♦",
"♣"
],
[
"√"
],
[
"Π",
"π"
],
[
"÷"
],
[
"×"
],
[
"¶",
"§"
],
[
"∆"
]
],
[
[
"£"
],
[
"¢"
],
[
"€"
],
[
"¥"
],
[
"^",
"↑",
"↓",
"←",
"→"
],
[
"°",
"",
"″"
],
[
"=",
"≠",
"≈",
"∞"
],
[
"{"
],
[
"}"
]
],
[
[
"\\"
],
[
"©"
],
[
"®"
],
[
"™"
],
[
"℅"
],
[
"["
],
[
"]"
]
],
[
[
"<",
"",
"≤",
"«"
],
[
">",
"",
"≥",
"»"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
}
],
"locale": "ms",
"name": "Malay"
}

View File

@@ -1,584 +0,0 @@
{
"levels": [
{
"level": "",
"mode": "default",
"rows": [
[
[
"q"
],
[
"w"
],
[
"e",
"é",
"ë",
"ê",
"è",
"ę",
"ė",
"ē"
],
[
"r"
],
[
"t"
],
[
"y",
"ij"
],
[
"u",
"ú",
"ü",
"û",
"ù",
"ū"
],
[
"i",
"í",
"ï",
"ì",
"î",
"į",
"ī",
"ij"
],
[
"o",
"ó",
"ö",
"ô",
"ò",
"õ",
"œ",
"ø",
"ō"
],
[
"p"
]
],
[
[
"a",
"á",
"ä",
"â",
"à",
"æ",
"ã",
"å",
"ā"
],
[
"s"
],
[
"d"
],
[
"f"
],
[
"g"
],
[
"h"
],
[
"j"
],
[
"k"
],
[
"l"
]
],
[
[
"z"
],
[
"x"
],
[
"c"
],
[
"v"
],
[
"b"
],
[
"n",
"ñ",
"ń"
],
[
"m"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "shift",
"mode": "latched",
"rows": [
[
[
"Q"
],
[
"W"
],
[
"E",
"É",
"Ë",
"Ê",
"È",
"Ę",
"Ė",
"Ē"
],
[
"R"
],
[
"T"
],
[
"Y",
"IJ"
],
[
"U",
"Ú",
"Ü",
"Û",
"Ù",
"Ū"
],
[
"I",
"Í",
"Ï",
"Ì",
"Î",
"Į",
"Ī",
"IJ"
],
[
"O",
"Ó",
"Ö",
"Ô",
"Ò",
"Õ",
"Œ",
"Ø",
"Ō"
],
[
"P"
]
],
[
[
"A",
"Á",
"Ä",
"Â",
"À",
"Æ",
"Ã",
"Å",
"Ā"
],
[
"S"
],
[
"D"
],
[
"F"
],
[
"G"
],
[
"H"
],
[
"J"
],
[
"K"
],
[
"L"
]
],
[
[
"Z"
],
[
"X"
],
[
"C"
],
[
"V"
],
[
"B"
],
[
"N",
"Ñ",
"Ń"
],
[
"M"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "opt",
"mode": "locked",
"rows": [
[
[
"1",
"¹",
"½",
"⅓",
"¼",
"⅛"
],
[
"2",
"²",
"⅔"
],
[
"3",
"³",
"¾",
"⅜"
],
[
"4",
"⁴"
],
[
"5",
"⅝"
],
[
"6"
],
[
"7",
"⅞"
],
[
"8"
],
[
"9"
],
[
"0",
"ⁿ",
"∅"
]
],
[
[
"@"
],
[
"#"
],
[
"€",
"¢",
"£",
"$",
"¥",
"₱"
],
[
"%",
"‰"
],
[
"&"
],
[
"-",
"_",
"",
"—",
"·"
],
[
"+",
"±"
],
[
"(",
"<",
"{",
"["
],
[
")",
">",
"}",
"]"
]
],
[
[
"*",
"†",
"‡",
"★"
],
[
"\"",
"“",
"”",
"«",
"»"
],
[
"'",
"",
"",
"",
""
],
[
":"
],
[
";"
],
[
"!",
"¡"
],
[
"?",
"¿"
]
],
[
[
"_"
],
[
"/"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
},
{
"level": "opt+shift",
"mode": "locked",
"rows": [
[
[
"~"
],
[
"`"
],
[
"|"
],
[
"•",
"♪",
"♥",
"♠",
"♦",
"♣"
],
[
"√"
],
[
"Π",
"π"
],
[
"÷"
],
[
"×"
],
[
"¶",
"§"
],
[
"∆"
]
],
[
[
"£"
],
[
"¥"
],
[
"$",
"¢"
],
[
"¢"
],
[
"^",
"↑",
"↓",
"←",
"→"
],
[
"°",
"",
"″"
],
[
"=",
"≠",
"≈",
"∞"
],
[
"{"
],
[
"}"
]
],
[
[
"\\"
],
[
"©"
],
[
"®"
],
[
"™"
],
[
"℅"
],
[
"["
],
[
"]"
]
],
[
[
"<",
"",
"≤",
"«"
],
[
">",
"",
"≥",
"»"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
}
],
"locale": "nl",
"name": "Dutch"
}

View File

@@ -1,507 +0,0 @@
{
"levels": [
{
"level": "",
"mode": "default",
"rows": [
[
[
"q"
],
[
"w"
],
[
"e"
],
[
"r"
],
[
"t"
],
[
"y"
],
[
"u"
],
[
"i"
],
[
"o"
],
[
"p"
]
],
[
[
"a"
],
[
"s"
],
[
"d"
],
[
"f"
],
[
"g"
],
[
"h"
],
[
"j"
],
[
"k"
],
[
"l"
]
],
[
[
"z"
],
[
"x"
],
[
"c"
],
[
"v"
],
[
"b"
],
[
"n"
],
[
"m"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "shift",
"mode": "latched",
"rows": [
[
[
"Q"
],
[
"W"
],
[
"E"
],
[
"R"
],
[
"T"
],
[
"Y"
],
[
"U"
],
[
"I"
],
[
"O"
],
[
"P"
]
],
[
[
"A"
],
[
"S"
],
[
"D"
],
[
"F"
],
[
"G"
],
[
"H"
],
[
"J"
],
[
"K"
],
[
"L"
]
],
[
[
"Z"
],
[
"X"
],
[
"C"
],
[
"V"
],
[
"B"
],
[
"N"
],
[
"M"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "opt",
"mode": "locked",
"rows": [
[
[
"1",
"¹",
"½",
"⅓",
"¼",
"⅛"
],
[
"2",
"²",
"⅔"
],
[
"3",
"³",
"¾",
"⅜"
],
[
"4",
"⁴"
],
[
"5",
"⅝"
],
[
"6"
],
[
"7",
"⅞"
],
[
"8"
],
[
"9"
],
[
"0",
"ⁿ",
"∅"
]
],
[
[
"@"
],
[
"#"
],
[
"$",
"¢",
"£",
"€",
"¥",
"₱"
],
[
"%",
"‰"
],
[
"&"
],
[
"-",
"_",
"",
"—",
"·"
],
[
"+",
"±"
],
[
"(",
"<",
"{",
"["
],
[
")",
">",
"}",
"]"
]
],
[
[
"*",
"†",
"‡",
"★"
],
[
"\"",
"“",
"”",
"«",
"»"
],
[
"'",
"",
"",
"",
""
],
[
":"
],
[
";"
],
[
"!",
"¡"
],
[
"?",
"¿"
]
],
[
[
"_"
],
[
"/"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
},
{
"level": "opt+shift",
"mode": "locked",
"rows": [
[
[
"~"
],
[
"`"
],
[
"|"
],
[
"•",
"♪",
"♥",
"♠",
"♦",
"♣"
],
[
"√"
],
[
"Π",
"π"
],
[
"÷"
],
[
"×"
],
[
"¶",
"§"
],
[
"∆"
]
],
[
[
"£"
],
[
"¢"
],
[
"€"
],
[
"¥"
],
[
"^",
"↑",
"↓",
"←",
"→"
],
[
"°",
"",
"″"
],
[
"=",
"≠",
"≈",
"∞"
],
[
"{"
],
[
"}"
]
],
[
[
"\\"
],
[
"©"
],
[
"®"
],
[
"™"
],
[
"℅"
],
[
"["
],
[
"]"
]
],
[
[
"<",
"",
"≤",
"«"
],
[
">",
"",
"≥",
"»"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
}
],
"locale": "nb",
"name": "Norwegian Bokmål"
}

View File

@@ -1,507 +0,0 @@
{
"levels": [
{
"level": "",
"mode": "default",
"rows": [
[
[
"q"
],
[
"w"
],
[
"e"
],
[
"r"
],
[
"t"
],
[
"y"
],
[
"u"
],
[
"i"
],
[
"o"
],
[
"p"
]
],
[
[
"a"
],
[
"s"
],
[
"d"
],
[
"f"
],
[
"g"
],
[
"h"
],
[
"j"
],
[
"k"
],
[
"l"
]
],
[
[
"z"
],
[
"x"
],
[
"c"
],
[
"v"
],
[
"b"
],
[
"n"
],
[
"m"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "shift",
"mode": "latched",
"rows": [
[
[
"Q"
],
[
"W"
],
[
"E"
],
[
"R"
],
[
"T"
],
[
"Y"
],
[
"U"
],
[
"I"
],
[
"O"
],
[
"P"
]
],
[
[
"A"
],
[
"S"
],
[
"D"
],
[
"F"
],
[
"G"
],
[
"H"
],
[
"J"
],
[
"K"
],
[
"L"
]
],
[
[
"Z"
],
[
"X"
],
[
"C"
],
[
"V"
],
[
"B"
],
[
"N"
],
[
"M"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "opt",
"mode": "locked",
"rows": [
[
[
"1",
"¹",
"½",
"⅓",
"¼",
"⅛"
],
[
"2",
"²",
"⅔"
],
[
"3",
"³",
"¾",
"⅜"
],
[
"4",
"⁴"
],
[
"5",
"⅝"
],
[
"6"
],
[
"7",
"⅞"
],
[
"8"
],
[
"9"
],
[
"0",
"ⁿ",
"∅"
]
],
[
[
"@"
],
[
"#"
],
[
"$",
"¢",
"£",
"€",
"¥",
"₱"
],
[
"%",
"‰"
],
[
"&"
],
[
"-",
"_",
"",
"—",
"·"
],
[
"+",
"±"
],
[
"(",
"<",
"{",
"["
],
[
")",
">",
"}",
"]"
]
],
[
[
"*",
"†",
"‡",
"★"
],
[
"\"",
"“",
"”",
"«",
"»"
],
[
"'",
"",
"",
"",
""
],
[
":"
],
[
";"
],
[
"!",
"¡"
],
[
"?",
"¿"
]
],
[
[
"_"
],
[
"/"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
},
{
"level": "opt+shift",
"mode": "locked",
"rows": [
[
[
"~"
],
[
"`"
],
[
"|"
],
[
"•",
"♪",
"♥",
"♠",
"♦",
"♣"
],
[
"√"
],
[
"Π",
"π"
],
[
"÷"
],
[
"×"
],
[
"¶",
"§"
],
[
"∆"
]
],
[
[
"£"
],
[
"¢"
],
[
"€"
],
[
"¥"
],
[
"^",
"↑",
"↓",
"←",
"→"
],
[
"°",
"",
"″"
],
[
"=",
"≠",
"≈",
"∞"
],
[
"{"
],
[
"}"
]
],
[
[
"\\"
],
[
"©"
],
[
"®"
],
[
"™"
],
[
"℅"
],
[
"["
],
[
"]"
]
],
[
[
"<",
"",
"≤",
"«"
],
[
">",
"",
"≥",
"»"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
}
],
"locale": "fil",
"name": "Filipino"
}

View File

@@ -1,579 +0,0 @@
{
"levels": [
{
"level": "",
"mode": "default",
"rows": [
[
[
"q"
],
[
"w"
],
[
"e",
"ę",
"è",
"é",
"ê",
"ë",
"ė",
"ē"
],
[
"r"
],
[
"t"
],
[
"y"
],
[
"u"
],
[
"i"
],
[
"o",
"ó",
"ö",
"ô",
"ò",
"õ",
"œ",
"ø",
"ō"
],
[
"p"
]
],
[
[
"a",
"ą",
"á",
"à",
"â",
"ä",
"æ",
"ã",
"å",
"ā"
],
[
"s",
"ś",
"ß",
"š"
],
[
"d"
],
[
"f"
],
[
"g"
],
[
"h"
],
[
"j"
],
[
"k"
],
[
"l",
"ł"
]
],
[
[
"z",
"ż",
"ź",
"ž"
],
[
"x"
],
[
"c",
"ć",
"ç",
"č"
],
[
"v"
],
[
"b"
],
[
"n",
"ń",
"ñ"
],
[
"m"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "shift",
"mode": "latched",
"rows": [
[
[
"Q"
],
[
"W"
],
[
"E",
"Ę",
"È",
"É",
"Ê",
"Ë",
"Ė",
"Ē"
],
[
"R"
],
[
"T"
],
[
"Y"
],
[
"U"
],
[
"I"
],
[
"O",
"Ó",
"Ö",
"Ô",
"Ò",
"Õ",
"Œ",
"Ø",
"Ō"
],
[
"P"
]
],
[
[
"A",
"Ą",
"Á",
"À",
"Â",
"Ä",
"Æ",
"Ã",
"Å",
"Ā"
],
[
"S",
"Ś",
"SS",
"Š"
],
[
"D"
],
[
"F"
],
[
"G"
],
[
"H"
],
[
"J"
],
[
"K"
],
[
"L",
"Ł"
]
],
[
[
"Z",
"Ż",
"Ź",
"Ž"
],
[
"X"
],
[
"C",
"Ć",
"Ç",
"Č"
],
[
"V"
],
[
"B"
],
[
"N",
"Ń",
"Ñ"
],
[
"M"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "opt",
"mode": "locked",
"rows": [
[
[
"1",
"¹",
"½",
"⅓",
"¼",
"⅛"
],
[
"2",
"²",
"⅔"
],
[
"3",
"³",
"¾",
"⅜"
],
[
"4",
"⁴"
],
[
"5",
"⅝"
],
[
"6"
],
[
"7",
"⅞"
],
[
"8"
],
[
"9"
],
[
"0",
"ⁿ",
"∅"
]
],
[
[
"@"
],
[
"#"
],
[
"$",
"¢",
"£",
"€",
"¥",
"₱"
],
[
"%",
"‰"
],
[
"&"
],
[
"-",
"_",
"",
"—",
"·"
],
[
"+",
"±"
],
[
"(",
"<",
"{",
"["
],
[
")",
">",
"}",
"]"
]
],
[
[
"*",
"†",
"‡",
"★"
],
[
"\"",
"“",
"”",
"«",
"»"
],
[
"'",
"",
"",
"",
""
],
[
":"
],
[
";"
],
[
"!",
"¡"
],
[
"?",
"¿"
]
],
[
[
"_"
],
[
"/"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
},
{
"level": "opt+shift",
"mode": "locked",
"rows": [
[
[
"~"
],
[
"`"
],
[
"|"
],
[
"•",
"♪",
"♥",
"♠",
"♦",
"♣"
],
[
"√"
],
[
"Π",
"π"
],
[
"÷"
],
[
"×"
],
[
"¶",
"§"
],
[
"∆"
]
],
[
[
"£"
],
[
"¢"
],
[
"€"
],
[
"¥"
],
[
"^",
"↑",
"↓",
"←",
"→"
],
[
"°",
"",
"″"
],
[
"=",
"≠",
"≈",
"∞"
],
[
"{"
],
[
"}"
]
],
[
[
"\\"
],
[
"©"
],
[
"®"
],
[
"™"
],
[
"℅"
],
[
"["
],
[
"]"
]
],
[
[
"<",
"",
"≤",
"«"
],
[
">",
"",
"≥",
"»"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
}
],
"locale": "pl",
"name": "Polish"
}

View File

@@ -1,584 +0,0 @@
{
"levels": [
{
"level": "",
"mode": "default",
"rows": [
[
[
"q"
],
[
"w"
],
[
"e",
"é",
"ê",
"è",
"ę",
"ė",
"ē",
"ë"
],
[
"r"
],
[
"t"
],
[
"y"
],
[
"u",
"ú",
"ü",
"ù",
"û",
"ū"
],
[
"i",
"í",
"î",
"ì",
"ï",
"į",
"ī"
],
[
"o",
"ó",
"õ",
"ô",
"ò",
"ö",
"œ",
"ø",
"ō",
"º"
],
[
"p"
]
],
[
[
"a",
"á",
"ã",
"à",
"â",
"ä",
"å",
"æ",
"ª"
],
[
"s"
],
[
"d"
],
[
"f"
],
[
"g"
],
[
"h"
],
[
"j"
],
[
"k"
],
[
"l"
]
],
[
[
"z"
],
[
"x"
],
[
"c",
"ç",
"č",
"ć"
],
[
"v"
],
[
"b"
],
[
"n"
],
[
"m"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "shift",
"mode": "latched",
"rows": [
[
[
"Q"
],
[
"W"
],
[
"E",
"É",
"Ê",
"È",
"Ę",
"Ė",
"Ē",
"Ë"
],
[
"R"
],
[
"T"
],
[
"Y"
],
[
"U",
"Ú",
"Ü",
"Ù",
"Û",
"Ū"
],
[
"I",
"Í",
"Î",
"Ì",
"Ï",
"Į",
"Ī"
],
[
"O",
"Ó",
"Õ",
"Ô",
"Ò",
"Ö",
"Œ",
"Ø",
"Ō",
"º"
],
[
"P"
]
],
[
[
"A",
"Á",
"Ã",
"À",
"Â",
"Ä",
"Å",
"Æ",
"ª"
],
[
"S"
],
[
"D"
],
[
"F"
],
[
"G"
],
[
"H"
],
[
"J"
],
[
"K"
],
[
"L"
]
],
[
[
"Z"
],
[
"X"
],
[
"C",
"Ç",
"Č",
"Ć"
],
[
"V"
],
[
"B"
],
[
"N"
],
[
"M"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "opt",
"mode": "locked",
"rows": [
[
[
"1",
"¹",
"½",
"⅓",
"¼",
"⅛"
],
[
"2",
"²",
"⅔"
],
[
"3",
"³",
"¾",
"⅜"
],
[
"4",
"⁴"
],
[
"5",
"⅝"
],
[
"6"
],
[
"7",
"⅞"
],
[
"8"
],
[
"9"
],
[
"0",
"ⁿ",
"∅"
]
],
[
[
"@"
],
[
"#"
],
[
"€",
"¢",
"£",
"$",
"¥",
"₱"
],
[
"%",
"‰"
],
[
"&"
],
[
"-",
"_",
"",
"—",
"·"
],
[
"+",
"±"
],
[
"(",
"<",
"{",
"["
],
[
")",
">",
"}",
"]"
]
],
[
[
"*",
"†",
"‡",
"★"
],
[
"\"",
"“",
"”",
"«",
"»"
],
[
"'",
"",
"",
"",
""
],
[
":"
],
[
";"
],
[
"!",
"¡"
],
[
"?",
"¿"
]
],
[
[
"_"
],
[
"/"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
},
{
"level": "opt+shift",
"mode": "locked",
"rows": [
[
[
"~"
],
[
"`"
],
[
"|"
],
[
"•",
"♪",
"♥",
"♠",
"♦",
"♣"
],
[
"√"
],
[
"Π",
"π"
],
[
"÷"
],
[
"×"
],
[
"¶",
"§"
],
[
"∆"
]
],
[
[
"£"
],
[
"¥"
],
[
"$",
"¢"
],
[
"¢"
],
[
"^",
"↑",
"↓",
"←",
"→"
],
[
"°",
"",
"″"
],
[
"=",
"≠",
"≈",
"∞"
],
[
"{"
],
[
"}"
]
],
[
[
"\\"
],
[
"©"
],
[
"®"
],
[
"™"
],
[
"℅"
],
[
"["
],
[
"]"
]
],
[
[
"<",
"",
"≤",
"«"
],
[
">",
"",
"≥",
"»"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
}
],
"locale": "pt-PT",
"name": "Portuguese Portugal"
}

View File

@@ -1,547 +0,0 @@
{
"levels": [
{
"level": "",
"mode": "default",
"rows": [
[
[
"q"
],
[
"w"
],
[
"e"
],
[
"r"
],
[
"t",
"ț"
],
[
"y"
],
[
"u"
],
[
"i",
"î",
"ï",
"ì",
"í",
"į",
"ī"
],
[
"o"
],
[
"p"
]
],
[
[
"a",
"â",
"ã",
"ă",
"à",
"á",
"ä",
"æ",
"å",
"ā"
],
[
"s",
"ș",
"ß",
"ś",
"š"
],
[
"d"
],
[
"f"
],
[
"g"
],
[
"h"
],
[
"j"
],
[
"k"
],
[
"l"
]
],
[
[
"z"
],
[
"x"
],
[
"c"
],
[
"v"
],
[
"b"
],
[
"n"
],
[
"m"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "shift",
"mode": "latched",
"rows": [
[
[
"Q"
],
[
"W"
],
[
"E"
],
[
"R"
],
[
"T",
"Ț"
],
[
"Y"
],
[
"U"
],
[
"I",
"Î",
"Ï",
"Ì",
"Í",
"Į",
"Ī"
],
[
"O"
],
[
"P"
]
],
[
[
"A",
"Â",
"Ã",
"Ă",
"À",
"Á",
"Ä",
"Æ",
"Å",
"Ā"
],
[
"S",
"Ș",
"SS",
"Ś",
"Š"
],
[
"D"
],
[
"F"
],
[
"G"
],
[
"H"
],
[
"J"
],
[
"K"
],
[
"L"
]
],
[
[
"Z"
],
[
"X"
],
[
"C"
],
[
"V"
],
[
"B"
],
[
"N"
],
[
"M"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "opt",
"mode": "locked",
"rows": [
[
[
"1",
"¹",
"½",
"⅓",
"¼",
"⅛"
],
[
"2",
"²",
"⅔"
],
[
"3",
"³",
"¾",
"⅜"
],
[
"4",
"⁴"
],
[
"5",
"⅝"
],
[
"6"
],
[
"7",
"⅞"
],
[
"8"
],
[
"9"
],
[
"0",
"ⁿ",
"∅"
]
],
[
[
"@"
],
[
"#"
],
[
"$",
"¢",
"£",
"€",
"¥",
"₱"
],
[
"%",
"‰"
],
[
"&"
],
[
"-",
"_",
"",
"—",
"·"
],
[
"+",
"±"
],
[
"(",
"<",
"{",
"["
],
[
")",
">",
"}",
"]"
]
],
[
[
"*",
"†",
"‡",
"★"
],
[
"\"",
"“",
"”",
"«",
"»"
],
[
"'",
"",
"",
"",
""
],
[
":"
],
[
";"
],
[
"!",
"¡"
],
[
"?",
"¿"
]
],
[
[
"_"
],
[
"/"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
},
{
"level": "opt+shift",
"mode": "locked",
"rows": [
[
[
"~"
],
[
"`"
],
[
"|"
],
[
"•",
"♪",
"♥",
"♠",
"♦",
"♣"
],
[
"√"
],
[
"Π",
"π"
],
[
"÷"
],
[
"×"
],
[
"¶",
"§"
],
[
"∆"
]
],
[
[
"£"
],
[
"¢"
],
[
"€"
],
[
"¥"
],
[
"^",
"↑",
"↓",
"←",
"→"
],
[
"°",
"",
"″"
],
[
"=",
"≠",
"≈",
"∞"
],
[
"{"
],
[
"}"
]
],
[
[
"\\"
],
[
"©"
],
[
"®"
],
[
"™"
],
[
"℅"
],
[
"["
],
[
"]"
]
],
[
[
"<",
"",
"≤",
"«"
],
[
">",
"",
"≥",
"»"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
}
],
"locale": "ro",
"name": "Romanian"
}

View File

@@ -1,541 +0,0 @@
{
"levels": [
{
"level": "",
"mode": "default",
"rows": [
[
[
"љ"
],
[
"њ"
],
[
"е",
"ѐ"
],
[
"р"
],
[
"т"
],
[
"з"
],
[
"у"
],
[
"и",
"ѝ"
],
[
"о"
],
[
"п"
],
[
"ш"
]
],
[
[
"а"
],
[
"с"
],
[
"д"
],
[
"ф"
],
[
"г"
],
[
"х"
],
[
"ј"
],
[
"к"
],
[
"л"
],
[
"ч"
],
[
"ћ"
]
],
[
[
"ѕ"
],
[
"џ"
],
[
"ц"
],
[
"в"
],
[
"б"
],
[
"н"
],
[
"м"
],
[
"ђ"
],
[
"ж"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "shift",
"mode": "latched",
"rows": [
[
[
"Љ"
],
[
"Њ"
],
[
"Е",
"Ѐ"
],
[
"Р"
],
[
"Т"
],
[
"З"
],
[
"У"
],
[
"И",
"Ѝ"
],
[
"О"
],
[
"П"
],
[
"Ш"
]
],
[
[
"А"
],
[
"С"
],
[
"Д"
],
[
"Ф"
],
[
"Г"
],
[
"Х"
],
[
"Ј"
],
[
"К"
],
[
"Л"
],
[
"Ч"
],
[
"Ћ"
]
],
[
[
"Ѕ"
],
[
"Џ"
],
[
"Ц"
],
[
"В"
],
[
"Б"
],
[
"Н"
],
[
"М"
],
[
"Ђ"
],
[
"Ж"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "opt",
"mode": "locked",
"rows": [
[
[
"1",
"¹",
"½",
"⅓",
"¼",
"⅛"
],
[
"2",
"²",
"⅔"
],
[
"3",
"³",
"¾",
"⅜"
],
[
"4",
"⁴"
],
[
"5",
"⅝"
],
[
"6"
],
[
"7",
"⅞"
],
[
"8"
],
[
"9"
],
[
"0",
"ⁿ",
"∅"
]
],
[
[
"@"
],
[
"#"
],
[
"$",
"¢",
"£",
"€",
"¥",
"₱"
],
[
"%",
"‰"
],
[
"&"
],
[
"-",
"_",
"",
"—",
"·"
],
[
"+",
"±"
],
[
"(",
"<",
"{",
"["
],
[
")",
">",
"}",
"]"
]
],
[
[
"*",
"†",
"‡",
"★"
],
[
"\"",
"“",
"”",
"«",
"»"
],
[
"'",
"",
"",
"",
""
],
[
":"
],
[
";"
],
[
"!",
"¡"
],
[
"?",
"¿"
]
],
[
[
"_"
],
[
"/"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
},
{
"level": "opt+shift",
"mode": "locked",
"rows": [
[
[
"~"
],
[
"`"
],
[
"|"
],
[
"•",
"♪",
"♥",
"♠",
"♦",
"♣"
],
[
"√"
],
[
"Π",
"π"
],
[
"÷"
],
[
"×"
],
[
"¶",
"§"
],
[
"∆"
]
],
[
[
"£"
],
[
"¢"
],
[
"€"
],
[
"¥"
],
[
"^",
"↑",
"↓",
"←",
"→"
],
[
"°",
"",
"″"
],
[
"=",
"≠",
"≈",
"∞"
],
[
"{"
],
[
"}"
]
],
[
[
"\\"
],
[
"©"
],
[
"®"
],
[
"™"
],
[
"℅"
],
[
"["
],
[
"]"
]
],
[
[
"<",
"",
"≤",
"«"
],
[
">",
"",
"≥",
"»"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
}
],
"locale": "sr",
"name": "Serbian"
}

View File

@@ -1,541 +0,0 @@
{
"levels": [
{
"level": "",
"mode": "default",
"rows": [
[
[
"й"
],
[
"ц"
],
[
"у"
],
[
"к"
],
[
"е",
"ё"
],
[
"н"
],
[
"г"
],
[
"ш"
],
[
"щ"
],
[
"з"
],
[
"х"
]
],
[
[
"ф"
],
[
"ы"
],
[
"в"
],
[
"а"
],
[
"п"
],
[
"р"
],
[
"о"
],
[
"л"
],
[
"д"
],
[
"ж"
],
[
"э"
]
],
[
[
"я"
],
[
"ч"
],
[
"с"
],
[
"м"
],
[
"и"
],
[
"т"
],
[
"ь",
"ъ"
],
[
"б"
],
[
"ю"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "shift",
"mode": "latched",
"rows": [
[
[
"Й"
],
[
"Ц"
],
[
"У"
],
[
"К"
],
[
"Е",
"Ё"
],
[
"Н"
],
[
"Г"
],
[
"Ш"
],
[
"Щ"
],
[
"З"
],
[
"Х"
]
],
[
[
"Ф"
],
[
"Ы"
],
[
"В"
],
[
"А"
],
[
"П"
],
[
"Р"
],
[
"О"
],
[
"Л"
],
[
"Д"
],
[
"Ж"
],
[
"Э"
]
],
[
[
"Я"
],
[
"Ч"
],
[
"С"
],
[
"М"
],
[
"И"
],
[
"Т"
],
[
"Ь",
"Ъ"
],
[
"Б"
],
[
"Ю"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "opt",
"mode": "locked",
"rows": [
[
[
"1",
"¹",
"½",
"⅓",
"¼",
"⅛"
],
[
"2",
"²",
"⅔"
],
[
"3",
"³",
"¾",
"⅜"
],
[
"4",
"⁴"
],
[
"5",
"⅝"
],
[
"6"
],
[
"7",
"⅞"
],
[
"8"
],
[
"9"
],
[
"0",
"ⁿ",
"∅"
]
],
[
[
"@"
],
[
"#"
],
[
"$",
"¢",
"£",
"€",
"¥",
"₱"
],
[
"%",
"‰"
],
[
"&"
],
[
"-",
"_",
"",
"—",
"·"
],
[
"+",
"±"
],
[
"(",
"<",
"{",
"["
],
[
")",
">",
"}",
"]"
]
],
[
[
"*",
"†",
"‡",
"★"
],
[
"\"",
"“",
"”",
"«",
"»"
],
[
"'",
"",
"",
"",
""
],
[
":"
],
[
";"
],
[
"!",
"¡"
],
[
"?",
"¿"
]
],
[
[
"_"
],
[
"/"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
},
{
"level": "opt+shift",
"mode": "locked",
"rows": [
[
[
"~"
],
[
"`"
],
[
"|"
],
[
"•",
"♪",
"♥",
"♠",
"♦",
"♣"
],
[
"√"
],
[
"Π",
"π"
],
[
"÷"
],
[
"×"
],
[
"¶",
"§"
],
[
"∆"
]
],
[
[
"£"
],
[
"¢"
],
[
"€"
],
[
"¥"
],
[
"^",
"↑",
"↓",
"←",
"→"
],
[
"°",
"",
"″"
],
[
"=",
"≠",
"≈",
"∞"
],
[
"{"
],
[
"}"
]
],
[
[
"\\"
],
[
"©"
],
[
"®"
],
[
"™"
],
[
"℅"
],
[
"["
],
[
"]"
]
],
[
[
"<",
"",
"≤",
"«"
],
[
">",
"",
"≥",
"»"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
}
],
"locale": "ru",
"name": "Russian"
}

View File

@@ -1,624 +0,0 @@
{
"levels": [
{
"level": "",
"mode": "default",
"rows": [
[
[
"q"
],
[
"w"
],
[
"e",
"é",
"è",
"ê",
"ë",
"ę"
],
[
"r",
"ř"
],
[
"t",
"ť",
"þ"
],
[
"y",
"ý",
"ÿ",
"ü"
],
[
"u",
"ü",
"ú",
"ù",
"û",
"ū"
],
[
"i",
"í",
"ì",
"î",
"ï"
],
[
"o",
"ó",
"ò",
"ô",
"õ",
"ō"
],
[
"p"
],
[
"å"
]
],
[
[
"a",
"á",
"à",
"â",
"ą",
"ã"
],
[
"s",
"ś",
"š",
"ş",
"ß"
],
[
"d",
"ð",
"ď"
],
[
"f"
],
[
"g"
],
[
"h"
],
[
"j"
],
[
"k"
],
[
"l",
"ł"
],
[
"ö",
"ø",
"œ"
],
[
"ä",
"æ"
]
],
[
[
"z",
"ź",
"ž",
"ż"
],
[
"x"
],
[
"c",
"ç",
"ć",
"č"
],
[
"v"
],
[
"b"
],
[
"n",
"ń",
"ñ",
"ň"
],
[
"m"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "shift",
"mode": "latched",
"rows": [
[
[
"Q"
],
[
"W"
],
[
"E",
"É",
"È",
"Ê",
"Ë",
"Ę"
],
[
"R",
"Ř"
],
[
"T",
"Ť",
"Þ"
],
[
"Y",
"Ý",
"Ÿ",
"Ü"
],
[
"U",
"Ü",
"Ú",
"Ù",
"Û",
"Ū"
],
[
"I",
"Í",
"Ì",
"Î",
"Ï"
],
[
"O",
"Ó",
"Ò",
"Ô",
"Õ",
"Ō"
],
[
"P"
],
[
"Å"
]
],
[
[
"A",
"Á",
"À",
"Â",
"Ą",
"Ã"
],
[
"S",
"Ś",
"Š",
"Ş",
"SS"
],
[
"D",
"Ð",
"Ď"
],
[
"F"
],
[
"G"
],
[
"H"
],
[
"J"
],
[
"K"
],
[
"L",
"Ł"
],
[
"Ö",
"Ø",
"Œ"
],
[
"Ä",
"Æ"
]
],
[
[
"Z",
"Ź",
"Ž",
"Ż"
],
[
"X"
],
[
"C",
"Ç",
"Ć",
"Č"
],
[
"V"
],
[
"B"
],
[
"N",
"Ń",
"Ñ",
"Ň"
],
[
"M"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "opt",
"mode": "locked",
"rows": [
[
[
"1",
"¹",
"½",
"⅓",
"¼",
"⅛"
],
[
"2",
"²",
"⅔"
],
[
"3",
"³",
"¾",
"⅜"
],
[
"4",
"⁴"
],
[
"5",
"⅝"
],
[
"6"
],
[
"7",
"⅞"
],
[
"8"
],
[
"9"
],
[
"0",
"ⁿ",
"∅"
]
],
[
[
"@"
],
[
"#"
],
[
"€",
"¢",
"£",
"$",
"¥",
"₱"
],
[
"%",
"‰"
],
[
"&"
],
[
"-",
"_",
"",
"—",
"·"
],
[
"+",
"±"
],
[
"(",
"<",
"{",
"["
],
[
")",
">",
"}",
"]"
]
],
[
[
"*",
"†",
"‡",
"★"
],
[
"\"",
"“",
"”",
"«",
"»"
],
[
"'",
"",
"",
"",
""
],
[
":"
],
[
";"
],
[
"!",
"¡"
],
[
"?",
"¿"
]
],
[
[
"_"
],
[
"/"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
},
{
"level": "opt+shift",
"mode": "locked",
"rows": [
[
[
"~"
],
[
"`"
],
[
"|"
],
[
"•",
"♪",
"♥",
"♠",
"♦",
"♣"
],
[
"√"
],
[
"Π",
"π"
],
[
"÷"
],
[
"×"
],
[
"¶",
"§"
],
[
"∆"
]
],
[
[
"£"
],
[
"¥"
],
[
"$",
"¢"
],
[
"¢"
],
[
"^",
"↑",
"↓",
"←",
"→"
],
[
"°",
"",
"″"
],
[
"=",
"≠",
"≈",
"∞"
],
[
"{"
],
[
"}"
]
],
[
[
"\\"
],
[
"©"
],
[
"®"
],
[
"™"
],
[
"℅"
],
[
"["
],
[
"]"
]
],
[
[
"<",
"",
"≤",
"«"
],
[
">",
"",
"≥",
"»"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
}
],
"locale": "sv",
"name": "Swedish"
}

View File

@@ -1,518 +0,0 @@
{
"levels": [
{
"level": "",
"mode": "default",
"rows": [
[
[
"q"
],
[
"w"
],
[
"e"
],
[
"r"
],
[
"t"
],
[
"y"
],
[
"u"
],
[
"i"
],
[
"o"
],
[
"p"
]
],
[
[
"a"
],
[
"s",
"š"
],
[
"d",
"đ"
],
[
"f"
],
[
"g"
],
[
"h"
],
[
"j"
],
[
"k"
],
[
"l"
]
],
[
[
"z",
"ž"
],
[
"x"
],
[
"c",
"č",
"ć"
],
[
"v"
],
[
"b"
],
[
"n"
],
[
"m"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "shift",
"mode": "latched",
"rows": [
[
[
"Q"
],
[
"W"
],
[
"E"
],
[
"R"
],
[
"T"
],
[
"Y"
],
[
"U"
],
[
"I"
],
[
"O"
],
[
"P"
]
],
[
[
"A"
],
[
"S",
"Š"
],
[
"D",
"Đ"
],
[
"F"
],
[
"G"
],
[
"H"
],
[
"J"
],
[
"K"
],
[
"L"
]
],
[
[
"Z",
"Ž"
],
[
"X"
],
[
"C",
"Č",
"Ć"
],
[
"V"
],
[
"B"
],
[
"N"
],
[
"M"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "opt",
"mode": "locked",
"rows": [
[
[
"1",
"¹",
"½",
"⅓",
"¼",
"⅛"
],
[
"2",
"²",
"⅔"
],
[
"3",
"³",
"¾",
"⅜"
],
[
"4",
"⁴"
],
[
"5",
"⅝"
],
[
"6"
],
[
"7",
"⅞"
],
[
"8"
],
[
"9"
],
[
"0",
"ⁿ",
"∅"
]
],
[
[
"@"
],
[
"#"
],
[
"€",
"¢",
"£",
"$",
"¥",
"₱"
],
[
"%",
"‰"
],
[
"&"
],
[
"-",
"_",
"",
"—",
"·"
],
[
"+",
"±"
],
[
"(",
"<",
"{",
"["
],
[
")",
">",
"}",
"]"
]
],
[
[
"*",
"†",
"‡",
"★"
],
[
"\"",
"“",
"”",
"«",
"»"
],
[
"'",
"",
"",
"",
""
],
[
":"
],
[
";"
],
[
"!",
"¡"
],
[
"?",
"¿"
]
],
[
[
"_"
],
[
"/"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
},
{
"level": "opt+shift",
"mode": "locked",
"rows": [
[
[
"~"
],
[
"`"
],
[
"|"
],
[
"•",
"♪",
"♥",
"♠",
"♦",
"♣"
],
[
"√"
],
[
"Π",
"π"
],
[
"÷"
],
[
"×"
],
[
"¶",
"§"
],
[
"∆"
]
],
[
[
"£"
],
[
"¥"
],
[
"$",
"¢"
],
[
"¢"
],
[
"^",
"↑",
"↓",
"←",
"→"
],
[
"°",
"",
"″"
],
[
"=",
"≠",
"≈",
"∞"
],
[
"{"
],
[
"}"
]
],
[
[
"\\"
],
[
"©"
],
[
"®"
],
[
"™"
],
[
"℅"
],
[
"["
],
[
"]"
]
],
[
[
"<",
"",
"≤",
"«"
],
[
">",
"",
"≥",
"»"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
}
],
"locale": "sl",
"name": "Slovenian"
}

View File

@@ -1,648 +0,0 @@
{
"levels": [
{
"level": "",
"mode": "default",
"rows": [
[
[
"q"
],
[
"w"
],
[
"e",
"é",
"ě",
"ē",
"ė",
"è",
"ê",
"ë",
"ę"
],
[
"r",
"ŕ",
"ř",
"ŗ"
],
[
"t",
"ť",
"ţ"
],
[
"y",
"ý",
"ÿ"
],
[
"u",
"ú",
"ů",
"ü",
"ū",
"ų",
"ù",
"û",
"ű"
],
[
"i",
"í",
"ī",
"į",
"ì",
"î",
"ï",
"ı"
],
[
"o",
"ô",
"ó",
"ö",
"ò",
"õ",
"œ",
"ő",
"ø"
],
[
"p"
]
],
[
[
"a",
"á",
"ä",
"ā",
"à",
"â",
"ã",
"å",
"æ",
"ą"
],
[
"s",
"š",
"ß",
"ś",
"ş"
],
[
"d",
"ď"
],
[
"f"
],
[
"g",
"ģ",
"ğ"
],
[
"h"
],
[
"j"
],
[
"k",
"ķ"
],
[
"l",
"ľ",
"ĺ",
"ļ",
"ł"
]
],
[
[
"z",
"ž",
"ż",
"ź"
],
[
"x"
],
[
"c",
"č",
"ç",
"ć"
],
[
"v"
],
[
"b"
],
[
"n",
"ň",
"ņ",
"ñ",
"ń",
"ń"
],
[
"m"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "shift",
"mode": "latched",
"rows": [
[
[
"Q"
],
[
"W"
],
[
"E",
"É",
"Ě",
"Ē",
"Ė",
"È",
"Ê",
"Ë",
"Ę"
],
[
"R",
"Ŕ",
"Ř",
"Ŗ"
],
[
"T",
"Ť",
"Ţ"
],
[
"Y",
"Ý",
"Ÿ"
],
[
"U",
"Ú",
"Ů",
"Ü",
"Ū",
"Ų",
"Ù",
"Û",
"Ű"
],
[
"I",
"Í",
"Ī",
"Į",
"Ì",
"Î",
"Ï",
"I"
],
[
"O",
"Ô",
"Ó",
"Ö",
"Ò",
"Õ",
"Œ",
"Ő",
"Ø"
],
[
"P"
]
],
[
[
"A",
"Á",
"Ä",
"Ā",
"À",
"Â",
"Ã",
"Å",
"Æ",
"Ą"
],
[
"S",
"Š",
"SS",
"Ś",
"Ş"
],
[
"D",
"Ď"
],
[
"F"
],
[
"G",
"Ģ",
"Ğ"
],
[
"H"
],
[
"J"
],
[
"K",
"Ķ"
],
[
"L",
"Ľ",
"Ĺ",
"Ļ",
"Ł"
]
],
[
[
"Z",
"Ž",
"Ż",
"Ź"
],
[
"X"
],
[
"C",
"Č",
"Ç",
"Ć"
],
[
"V"
],
[
"B"
],
[
"N",
"Ň",
"Ņ",
"Ñ",
"Ń",
"Ń"
],
[
"M"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "opt",
"mode": "locked",
"rows": [
[
[
"1",
"¹",
"½",
"⅓",
"¼",
"⅛"
],
[
"2",
"²",
"⅔"
],
[
"3",
"³",
"¾",
"⅜"
],
[
"4",
"⁴"
],
[
"5",
"⅝"
],
[
"6"
],
[
"7",
"⅞"
],
[
"8"
],
[
"9"
],
[
"0",
"ⁿ",
"∅"
]
],
[
[
"@"
],
[
"#"
],
[
"€",
"¢",
"£",
"$",
"¥",
"₱"
],
[
"%",
"‰"
],
[
"&"
],
[
"-",
"_",
"",
"—",
"·"
],
[
"+",
"±"
],
[
"(",
"<",
"{",
"["
],
[
")",
">",
"}",
"]"
]
],
[
[
"*",
"†",
"‡",
"★"
],
[
"\"",
"“",
"”",
"«",
"»"
],
[
"'",
"",
"",
"",
""
],
[
":"
],
[
";"
],
[
"!",
"¡"
],
[
"?",
"¿"
]
],
[
[
"_"
],
[
"/"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
},
{
"level": "opt+shift",
"mode": "locked",
"rows": [
[
[
"~"
],
[
"`"
],
[
"|"
],
[
"•",
"♪",
"♥",
"♠",
"♦",
"♣"
],
[
"√"
],
[
"Π",
"π"
],
[
"÷"
],
[
"×"
],
[
"¶",
"§"
],
[
"∆"
]
],
[
[
"£"
],
[
"¥"
],
[
"$",
"¢"
],
[
"¢"
],
[
"^",
"↑",
"↓",
"←",
"→"
],
[
"°",
"",
"″"
],
[
"=",
"≠",
"≈",
"∞"
],
[
"{"
],
[
"}"
]
],
[
[
"\\"
],
[
"©"
],
[
"®"
],
[
"™"
],
[
"℅"
],
[
"["
],
[
"]"
]
],
[
[
"<",
"",
"≤",
"«"
],
[
">",
"",
"≥",
"»"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
}
],
"locale": "sk",
"name": "Slovak"
}

View File

@@ -1,472 +0,0 @@
{
"levels": [
{
"level": "",
"mode": "default",
"rows": [
[
[
"ๅ"
],
[
"/",
"๑"
],
[
"_",
"๒"
],
[
"ภ",
"๓"
],
[
"ถ",
"๔"
],
[
"ุ"
],
[
"ึ"
],
[
"ค",
"๕"
],
[
"ต",
"๖"
],
[
"จ",
"๗"
],
[
"ข",
"๘"
],
[
"ช",
"๙"
]
],
[
[
"ๆ",
""
],
[
"ไ"
],
[
"ำ"
],
[
"พ"
],
[
"ะ"
],
[
"ั"
],
[
"ี"
],
[
"ร"
],
[
"น"
],
[
"ย"
],
[
"บ"
],
[
"ล"
]
],
[
[
"ฟ"
],
[
"ห"
],
[
"ก"
],
[
"ด"
],
[
"เ"
],
[
"้"
],
[
"่"
],
[
"า"
],
[
"ส"
],
[
"ว"
],
[
"ง"
],
[
"ฃ"
]
],
[
[
"ผ"
],
[
"ป"
],
[
"แ"
],
[
"อ"
],
[
"ิ"
],
[
"ื"
],
[
"ท"
],
[
"ม"
],
[
"ใ"
],
[
"ฝ"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "opt",
"mode": "locked",
"rows": [
[
[
"1",
"¹",
"½",
"⅓",
"¼",
"⅛"
],
[
"2",
"²",
"⅔"
],
[
"3",
"³",
"¾",
"⅜"
],
[
"4",
"⁴"
],
[
"5",
"⅝"
],
[
"6"
],
[
"7",
"⅞"
],
[
"8"
],
[
"9"
],
[
"0",
"ⁿ",
"∅"
]
],
[
[
"@"
],
[
"#"
],
[
"฿",
"$",
"¢",
"€",
"£",
"¥",
"₱"
],
[
"%",
"‰"
],
[
"&"
],
[
"-",
"_",
"",
"—",
"·"
],
[
"+",
"±"
],
[
"(",
"<",
"{",
"["
],
[
")",
">",
"}",
"]"
]
],
[
[
"*",
"†",
"‡",
"★"
],
[
"\"",
"“",
"”",
"«",
"»"
],
[
"'",
"",
"",
"",
""
],
[
":"
],
[
";"
],
[
"!",
"¡"
],
[
"?",
"¿"
]
],
[
[
"_"
],
[
"/"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
},
{
"level": "opt+shift",
"mode": "locked",
"rows": [
[
[
"~"
],
[
"`"
],
[
"|"
],
[
"•",
"♪",
"♥",
"♠",
"♦",
"♣"
],
[
"√"
],
[
"Π",
"π"
],
[
"÷"
],
[
"×"
],
[
"¶",
"§"
],
[
"∆"
]
],
[
[
"£"
],
[
"€"
],
[
"$",
"¢"
],
[
"¢"
],
[
"^",
"↑",
"↓",
"←",
"→"
],
[
"°",
"",
"″"
],
[
"=",
"≠",
"≈",
"∞"
],
[
"{"
],
[
"}"
]
],
[
[
"\\"
],
[
"©"
],
[
"®"
],
[
"™"
],
[
"℅"
],
[
"["
],
[
"]"
]
],
[
[
"<",
"",
"≤",
"«"
],
[
">",
"",
"≥",
"»"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
}
],
"locale": "th",
"name": "Thai"
}

View File

@@ -1,566 +0,0 @@
{
"levels": [
{
"level": "",
"mode": "default",
"rows": [
[
[
"q"
],
[
"w"
],
[
"e"
],
[
"r"
],
[
"t"
],
[
"y"
],
[
"u",
"ü",
"û",
"ù",
"ú",
"ū"
],
[
"i",
"ı",
"î",
"ï",
"ì",
"í",
"į",
"ī"
],
[
"o",
"ö",
"ô",
"œ",
"ò",
"ó",
"õ",
"ø",
"ō"
],
[
"p"
]
],
[
[
"a",
"â"
],
[
"s",
"ş",
"ß",
"ś",
"š"
],
[
"d"
],
[
"f"
],
[
"g",
"ğ"
],
[
"h"
],
[
"j"
],
[
"k"
],
[
"l"
]
],
[
[
"z"
],
[
"x"
],
[
"c",
"ç",
"ć",
"č"
],
[
"v"
],
[
"b"
],
[
"n"
],
[
"m"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "shift",
"mode": "latched",
"rows": [
[
[
"Q"
],
[
"W"
],
[
"E"
],
[
"R"
],
[
"T"
],
[
"Y"
],
[
"U",
"Ü",
"Û",
"Ù",
"Ú",
"Ū"
],
[
"İ",
"I",
"Î",
"Ï",
"Ì",
"Í",
"Į",
"Ī"
],
[
"O",
"Ö",
"Ô",
"Œ",
"Ò",
"Ó",
"Õ",
"Ø",
"Ō"
],
[
"P"
]
],
[
[
"A",
"Â"
],
[
"S",
"Ş",
"SS",
"Ś",
"Š"
],
[
"D"
],
[
"F"
],
[
"G",
"Ğ"
],
[
"H"
],
[
"J"
],
[
"K"
],
[
"L"
]
],
[
[
"Z"
],
[
"X"
],
[
"C",
"Ç",
"Ć",
"Č"
],
[
"V"
],
[
"B"
],
[
"N"
],
[
"M"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "opt",
"mode": "locked",
"rows": [
[
[
"1",
"¹",
"½",
"⅓",
"¼",
"⅛"
],
[
"2",
"²",
"⅔"
],
[
"3",
"³",
"¾",
"⅜"
],
[
"4",
"⁴"
],
[
"5",
"⅝"
],
[
"6"
],
[
"7",
"⅞"
],
[
"8"
],
[
"9"
],
[
"0",
"ⁿ",
"∅"
]
],
[
[
"@"
],
[
"#"
],
[
"€",
"¢",
"£",
"$",
"¥",
"₱"
],
[
"%",
"‰"
],
[
"&"
],
[
"-",
"_",
"",
"—",
"·"
],
[
"+",
"±"
],
[
"(",
"<",
"{",
"["
],
[
")",
">",
"}",
"]"
]
],
[
[
"*",
"†",
"‡",
"★"
],
[
"\"",
"“",
"”",
"«",
"»"
],
[
"'",
"",
"",
"",
""
],
[
":"
],
[
";"
],
[
"!",
"¡"
],
[
"?",
"¿"
]
],
[
[
"_"
],
[
"/"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
},
{
"level": "opt+shift",
"mode": "locked",
"rows": [
[
[
"~"
],
[
"`"
],
[
"|"
],
[
"•",
"♪",
"♥",
"♠",
"♦",
"♣"
],
[
"√"
],
[
"Π",
"π"
],
[
"÷"
],
[
"×"
],
[
"¶",
"§"
],
[
"∆"
]
],
[
[
"£"
],
[
"¥"
],
[
"$",
"¢"
],
[
"¢"
],
[
"^",
"↑",
"↓",
"←",
"→"
],
[
"°",
"",
"″"
],
[
"=",
"≠",
"≈",
"∞"
],
[
"{"
],
[
"}"
]
],
[
[
"\\"
],
[
"©"
],
[
"®"
],
[
"™"
],
[
"℅"
],
[
"["
],
[
"]"
]
],
[
[
"<",
"",
"≤",
"«"
],
[
">",
"",
"≥",
"»"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
}
],
"locale": "tr",
"name": "Turkish"
}

View File

@@ -1,545 +0,0 @@
{
"levels": [
{
"level": "",
"mode": "default",
"rows": [
[
[
"й"
],
[
"ц"
],
[
"у"
],
[
"к"
],
[
"е"
],
[
"н"
],
[
"г",
"ґ"
],
[
"ш"
],
[
"щ"
],
[
"з"
],
[
"х"
]
],
[
[
"ф"
],
[
"і",
"ї"
],
[
"в"
],
[
"а"
],
[
"п"
],
[
"р"
],
[
"о"
],
[
"л"
],
[
"д"
],
[
"ж"
],
[
"є"
]
],
[
[
"я"
],
[
"ч"
],
[
"с"
],
[
"м"
],
[
"и"
],
[
"т"
],
[
"ь",
"ъ"
],
[
"б"
],
[
"ю"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "shift",
"mode": "latched",
"rows": [
[
[
"Й"
],
[
"Ц"
],
[
"У"
],
[
"К"
],
[
"Е"
],
[
"Н"
],
[
"Г",
"Ґ"
],
[
"Ш"
],
[
"Щ"
],
[
"З"
],
[
"Х"
]
],
[
[
"Ф"
],
[
"І",
"Ї"
],
[
"В"
],
[
"А"
],
[
"П"
],
[
"Р"
],
[
"О"
],
[
"Л"
],
[
"Д"
],
[
"Ж"
],
[
"Є"
]
],
[
[
"Я"
],
[
"Ч"
],
[
"С"
],
[
"М"
],
[
"И"
],
[
"Т"
],
[
"Ь",
"Ъ"
],
[
"Б"
],
[
"Ю"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "opt",
"mode": "locked",
"rows": [
[
[
"1",
"¹",
"½",
"⅓",
"¼",
"⅛"
],
[
"2",
"²",
"⅔"
],
[
"3",
"³",
"¾",
"⅜"
],
[
"4",
"⁴"
],
[
"5",
"⅝"
],
[
"6"
],
[
"7",
"⅞"
],
[
"8"
],
[
"9"
],
[
"0",
"ⁿ",
"∅"
]
],
[
[
"@"
],
[
"#"
],
[
"₴",
"$",
"¢",
"€",
"£",
"¥",
"₱"
],
[
"%",
"‰"
],
[
"&"
],
[
"-",
"_",
"",
"—",
"·"
],
[
"+",
"±"
],
[
"(",
"<",
"{",
"["
],
[
")",
">",
"}",
"]"
]
],
[
[
"*",
"†",
"‡",
"★"
],
[
"\"",
"“",
"”",
"«",
"»"
],
[
"'",
"",
"",
"",
""
],
[
":"
],
[
";"
],
[
"!",
"¡"
],
[
"?",
"¿"
]
],
[
[
"_"
],
[
"/"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
},
{
"level": "opt+shift",
"mode": "locked",
"rows": [
[
[
"~"
],
[
"`"
],
[
"|"
],
[
"•",
"♪",
"♥",
"♠",
"♦",
"♣"
],
[
"√"
],
[
"Π",
"π"
],
[
"÷"
],
[
"×"
],
[
"¶",
"§"
],
[
"∆"
]
],
[
[
"£"
],
[
"€"
],
[
"$",
"¢"
],
[
"¢"
],
[
"^",
"↑",
"↓",
"←",
"→"
],
[
"°",
"",
"″"
],
[
"=",
"≠",
"≈",
"∞"
],
[
"{"
],
[
"}"
]
],
[
[
"\\"
],
[
"©"
],
[
"®"
],
[
"™"
],
[
"℅"
],
[
"["
],
[
"]"
]
],
[
[
"<",
"",
"≤",
"«"
],
[
">",
"",
"≥",
"»"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
}
],
"locale": "uk",
"name": "Ukrainian"
}

View File

@@ -1,576 +0,0 @@
{
"levels": [
{
"level": "",
"mode": "default",
"rows": [
[
[
"q"
],
[
"w"
],
[
"e",
"è",
"é",
"ê",
"ë",
"ē"
],
[
"r"
],
[
"t"
],
[
"y"
],
[
"u",
"û",
"ü",
"ù",
"ú",
"ū"
],
[
"i",
"î",
"ï",
"í",
"ī",
"ì"
],
[
"o",
"ô",
"ö",
"ò",
"ó",
"œ",
"ø",
"ō",
"õ"
],
[
"p"
]
],
[
[
"a",
"à",
"á",
"â",
"ä",
"æ",
"ã",
"å",
"ā"
],
[
"s",
"ß"
],
[
"d"
],
[
"f"
],
[
"g"
],
[
"h"
],
[
"j"
],
[
"k"
],
[
"l"
]
],
[
[
"z"
],
[
"x"
],
[
"c",
"ç"
],
[
"v"
],
[
"b"
],
[
"n",
"ñ"
],
[
"m"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "shift",
"mode": "latched",
"rows": [
[
[
"Q"
],
[
"W"
],
[
"E",
"È",
"É",
"Ê",
"Ë",
"Ē"
],
[
"R"
],
[
"T"
],
[
"Y"
],
[
"U",
"Û",
"Ü",
"Ù",
"Ú",
"Ū"
],
[
"I",
"Î",
"Ï",
"Í",
"Ī",
"Ì"
],
[
"O",
"Ô",
"Ö",
"Ò",
"Ó",
"Œ",
"Ø",
"Ō",
"Õ"
],
[
"P"
]
],
[
[
"A",
"À",
"Á",
"Â",
"Ä",
"Æ",
"Ã",
"Å",
"Ā"
],
[
"S",
"SS"
],
[
"D"
],
[
"F"
],
[
"G"
],
[
"H"
],
[
"J"
],
[
"K"
],
[
"L"
]
],
[
[
"Z"
],
[
"X"
],
[
"C",
"Ç"
],
[
"V"
],
[
"B"
],
[
"N",
"Ñ"
],
[
"M"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "opt",
"mode": "locked",
"rows": [
[
[
"1",
"¹",
"½",
"⅓",
"¼",
"⅛"
],
[
"2",
"²",
"⅔"
],
[
"3",
"³",
"¾",
"⅜"
],
[
"4",
"⁴"
],
[
"5",
"⅝"
],
[
"6"
],
[
"7",
"⅞"
],
[
"8"
],
[
"9"
],
[
"0",
"ⁿ",
"∅"
]
],
[
[
"@"
],
[
"#"
],
[
"£",
"¢",
"$",
"€",
"¥",
"₱"
],
[
"%",
"‰"
],
[
"&"
],
[
"-",
"_",
"",
"—",
"·"
],
[
"+",
"±"
],
[
"(",
"<",
"{",
"["
],
[
")",
">",
"}",
"]"
]
],
[
[
"*",
"†",
"‡",
"★"
],
[
"\"",
"“",
"”",
"«",
"»"
],
[
"'",
"",
"",
"",
""
],
[
":"
],
[
";"
],
[
"!",
"¡"
],
[
"?",
"¿"
]
],
[
[
"_"
],
[
"/"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
},
{
"level": "opt+shift",
"mode": "locked",
"rows": [
[
[
"~"
],
[
"`"
],
[
"|"
],
[
"•",
"♪",
"♥",
"♠",
"♦",
"♣"
],
[
"√"
],
[
"Π",
"π"
],
[
"÷"
],
[
"×"
],
[
"¶",
"§"
],
[
"∆"
]
],
[
[
"€"
],
[
"¥"
],
[
"$",
"¢"
],
[
"¢"
],
[
"^",
"↑",
"↓",
"←",
"→"
],
[
"°",
"",
"″"
],
[
"=",
"≠",
"≈",
"∞"
],
[
"{"
],
[
"}"
]
],
[
[
"\\"
],
[
"©"
],
[
"®"
],
[
"™"
],
[
"℅"
],
[
"["
],
[
"]"
]
],
[
[
"<",
"",
"≤",
"«"
],
[
">",
"",
"≥",
"»"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
}
],
"locale": "en-GB",
"name": "English Great Britain"
}

View File

@@ -1,575 +0,0 @@
{
"levels": [
{
"level": "",
"mode": "default",
"rows": [
[
[
"q"
],
[
"w"
],
[
"e",
"è",
"é",
"ê",
"ë",
"ē"
],
[
"r"
],
[
"t"
],
[
"y"
],
[
"u",
"û",
"ü",
"ù",
"ú",
"ū"
],
[
"i",
"î",
"ï",
"í",
"ī",
"ì"
],
[
"o",
"ô",
"ö",
"ò",
"ó",
"œ",
"ø",
"ō",
"õ"
],
[
"p"
]
],
[
[
"a",
"à",
"á",
"â",
"ä",
"æ",
"ã",
"å",
"ā"
],
[
"s",
"ß"
],
[
"d"
],
[
"f"
],
[
"g"
],
[
"h"
],
[
"j"
],
[
"k"
],
[
"l"
]
],
[
[
"z"
],
[
"x"
],
[
"c",
"ç"
],
[
"v"
],
[
"b"
],
[
"n",
"ñ"
],
[
"m"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "shift",
"mode": "latched",
"rows": [
[
[
"Q"
],
[
"W"
],
[
"E",
"È",
"É",
"Ê",
"Ë",
"Ē"
],
[
"R"
],
[
"T"
],
[
"Y"
],
[
"U",
"Û",
"Ü",
"Ù",
"Ú",
"Ū"
],
[
"I",
"Î",
"Ï",
"Í",
"Ī",
"Ì"
],
[
"O",
"Ô",
"Ö",
"Ò",
"Ó",
"Œ",
"Ø",
"Ō",
"Õ"
],
[
"P"
]
],
[
[
"A",
"À",
"Á",
"Â",
"Ä",
"Æ",
"Ã",
"Å",
"Ā"
],
[
"S",
"SS"
],
[
"D"
],
[
"F"
],
[
"G"
],
[
"H"
],
[
"J"
],
[
"K"
],
[
"L"
]
],
[
[
"Z"
],
[
"X"
],
[
"C",
"Ç"
],
[
"V"
],
[
"B"
],
[
"N",
"Ñ"
],
[
"M"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "opt",
"mode": "locked",
"rows": [
[
[
"1",
"¹",
"½",
"⅓",
"¼",
"⅛"
],
[
"2",
"²",
"⅔"
],
[
"3",
"³",
"¾",
"⅜"
],
[
"4",
"⁴"
],
[
"5",
"⅝"
],
[
"6"
],
[
"7",
"⅞"
],
[
"8"
],
[
"9"
],
[
"0",
"ⁿ",
"∅"
]
],
[
[
"@"
],
[
"#"
],
[
"$",
"¢",
"£",
"€",
"¥",
"₱"
],
[
"%",
"‰"
],
[
"&"
],
[
"-",
"_",
"",
"—",
"·"
],
[
"+",
"±"
],
[
"(",
"<",
"{",
"["
],
[
")",
">",
"}",
"]"
]
],
[
[
"*",
"†",
"‡",
"★"
],
[
"\"",
"“",
"”",
"«",
"»"
],
[
"'",
"",
"",
"",
""
],
[
":"
],
[
";"
],
[
"!",
"¡"
],
[
"?",
"¿"
]
],
[
[
"_"
],
[
"/"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
},
{
"level": "opt+shift",
"mode": "locked",
"rows": [
[
[
"~"
],
[
"`"
],
[
"|"
],
[
"•",
"♪",
"♥",
"♠",
"♦",
"♣"
],
[
"√"
],
[
"Π",
"π"
],
[
"÷"
],
[
"×"
],
[
"¶",
"§"
],
[
"∆"
]
],
[
[
"£"
],
[
"¢"
],
[
"€"
],
[
"¥"
],
[
"^",
"↑",
"↓",
"←",
"→"
],
[
"°",
"",
"″"
],
[
"=",
"≠",
"≈",
"∞"
],
[
"{"
],
[
"}"
]
],
[
[
"\\"
],
[
"©"
],
[
"®"
],
[
"™"
],
[
"℅"
],
[
"["
],
[
"]"
]
],
[
[
"<",
"",
"≤",
"«"
],
[
">",
"",
"≥",
"»"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
}
],
"locale": "en",
"name": "English United States"
}

View File

@@ -1,643 +0,0 @@
{
"levels": [
{
"level": "",
"mode": "default",
"rows": [
[
[
"q"
],
[
"w"
],
[
"e",
"è",
"é",
"ẻ",
"ẽ",
"ẹ",
"ê",
"ề",
"ế",
"ể",
"ễ",
"ệ"
],
[
"r"
],
[
"t"
],
[
"y",
"ỳ",
"ý",
"ỷ",
"ỹ",
"ỵ"
],
[
"u",
"ù",
"ú",
"ủ",
"ũ",
"ụ",
"ư",
"ừ",
"ứ",
"ử",
"ữ",
"ự"
],
[
"i",
"ì",
"í",
"ỉ",
"ĩ",
"ị"
],
[
"o",
"ò",
"ó",
"ỏ",
"õ",
"ọ",
"ô",
"ồ",
"ố",
"ổ",
"ỗ",
"ộ",
"ơ",
"ờ",
"ớ",
"ở",
"ỡ",
"ợ"
],
[
"p"
]
],
[
[
"a",
"à",
"á",
"ả",
"ã",
"ạ",
"ă",
"ằ",
"ắ",
"ẳ",
"ẵ",
"ặ",
"â",
"ầ",
"ấ",
"ẩ",
"ẫ",
"ậ"
],
[
"s"
],
[
"d",
"đ"
],
[
"f"
],
[
"g"
],
[
"h"
],
[
"j"
],
[
"k"
],
[
"l"
]
],
[
[
"z"
],
[
"x"
],
[
"c"
],
[
"v"
],
[
"b"
],
[
"n"
],
[
"m"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "shift",
"mode": "latched",
"rows": [
[
[
"Q"
],
[
"W"
],
[
"E",
"È",
"É",
"Ẻ",
"Ẽ",
"Ẹ",
"Ê",
"Ề",
"Ế",
"Ể",
"Ễ",
"Ệ"
],
[
"R"
],
[
"T"
],
[
"Y",
"Ỳ",
"Ý",
"Ỷ",
"Ỹ",
"Ỵ"
],
[
"U",
"Ù",
"Ú",
"Ủ",
"Ũ",
"Ụ",
"Ư",
"Ừ",
"Ứ",
"Ử",
"Ữ",
"Ự"
],
[
"I",
"Ì",
"Í",
"Ỉ",
"Ĩ",
"Ị"
],
[
"O",
"Ò",
"Ó",
"Ỏ",
"Õ",
"Ọ",
"Ô",
"Ồ",
"Ố",
"Ổ",
"Ỗ",
"Ộ",
"Ơ",
"Ờ",
"Ớ",
"Ở",
"Ỡ",
"Ợ"
],
[
"P"
]
],
[
[
"A",
"À",
"Á",
"Ả",
"Ã",
"Ạ",
"Ă",
"Ằ",
"Ắ",
"Ẳ",
"Ẵ",
"Ặ",
"Â",
"Ầ",
"Ấ",
"Ẩ",
"Ẫ",
"Ậ"
],
[
"S"
],
[
"D",
"Đ"
],
[
"F"
],
[
"G"
],
[
"H"
],
[
"J"
],
[
"K"
],
[
"L"
]
],
[
[
"Z"
],
[
"X"
],
[
"C"
],
[
"V"
],
[
"B"
],
[
"N"
],
[
"M"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "opt",
"mode": "locked",
"rows": [
[
[
"1",
"¹",
"½",
"⅓",
"¼",
"⅛"
],
[
"2",
"²",
"⅔"
],
[
"3",
"³",
"¾",
"⅜"
],
[
"4",
"⁴"
],
[
"5",
"⅝"
],
[
"6"
],
[
"7",
"⅞"
],
[
"8"
],
[
"9"
],
[
"0",
"ⁿ",
"∅"
]
],
[
[
"@"
],
[
"#"
],
[
"₫",
"$",
"¢",
"€",
"£",
"¥",
"₱"
],
[
"%",
"‰"
],
[
"&"
],
[
"-",
"_",
"",
"—",
"·"
],
[
"+",
"±"
],
[
"(",
"<",
"{",
"["
],
[
")",
">",
"}",
"]"
]
],
[
[
"*",
"†",
"‡",
"★"
],
[
"\"",
"“",
"”",
"«",
"»"
],
[
"'",
"",
"",
"",
""
],
[
":"
],
[
";"
],
[
"!",
"¡"
],
[
"?",
"¿"
]
],
[
[
"_"
],
[
"/"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
},
{
"level": "opt+shift",
"mode": "locked",
"rows": [
[
[
"~"
],
[
"`"
],
[
"|"
],
[
"•",
"♪",
"♥",
"♠",
"♦",
"♣"
],
[
"√"
],
[
"Π",
"π"
],
[
"÷"
],
[
"×"
],
[
"¶",
"§"
],
[
"∆"
]
],
[
[
"£"
],
[
"€"
],
[
"$",
"¢"
],
[
"¢"
],
[
"^",
"↑",
"↓",
"←",
"→"
],
[
"°",
"",
"″"
],
[
"=",
"≠",
"≈",
"∞"
],
[
"{"
],
[
"}"
]
],
[
[
"\\"
],
[
"©"
],
[
"®"
],
[
"™"
],
[
"℅"
],
[
"["
],
[
"]"
]
],
[
[
"<",
"",
"≤",
"«"
],
[
">",
"",
"≥",
"»"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
}
],
"locale": "vi",
"name": "Vietnamese"
}

View File

@@ -1,589 +0,0 @@
{
"levels": [
{
"level": "",
"mode": "default",
"rows": [
[
[
"q"
],
[
"w"
],
[
"e",
"é",
"è",
"ê",
"ë",
"ę",
"ė",
"ē"
],
[
"r"
],
[
"t"
],
[
"y",
"ý",
"ŷ",
"ÿ",
"ij"
],
[
"u",
"ú",
"û",
"ü",
"ù",
"ū"
],
[
"i",
"í",
"ì",
"ï",
"î",
"į",
"ī",
"ij"
],
[
"o",
"ó",
"ô",
"ö",
"ò",
"õ",
"œ",
"ø",
"ō"
],
[
"p"
]
],
[
[
"a",
"á",
"â",
"ä",
"à",
"æ",
"ã",
"å",
"ā"
],
[
"s"
],
[
"d"
],
[
"f"
],
[
"g"
],
[
"h"
],
[
"j"
],
[
"k"
],
[
"l"
]
],
[
[
"z"
],
[
"x"
],
[
"c"
],
[
"v"
],
[
"b"
],
[
"n",
"ñ",
"ń"
],
[
"m"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "shift",
"mode": "latched",
"rows": [
[
[
"Q"
],
[
"W"
],
[
"E",
"É",
"È",
"Ê",
"Ë",
"Ę",
"Ė",
"Ē"
],
[
"R"
],
[
"T"
],
[
"Y",
"Ý",
"Ŷ",
"Ÿ",
"IJ"
],
[
"U",
"Ú",
"Û",
"Ü",
"Ù",
"Ū"
],
[
"I",
"Í",
"Ì",
"Ï",
"Î",
"Į",
"Ī",
"IJ"
],
[
"O",
"Ó",
"Ô",
"Ö",
"Ò",
"Õ",
"Œ",
"Ø",
"Ō"
],
[
"P"
]
],
[
[
"A",
"Á",
"Â",
"Ä",
"À",
"Æ",
"Ã",
"Å",
"Ā"
],
[
"S"
],
[
"D"
],
[
"F"
],
[
"G"
],
[
"H"
],
[
"J"
],
[
"K"
],
[
"L"
]
],
[
[
"Z"
],
[
"X"
],
[
"C"
],
[
"V"
],
[
"B"
],
[
"N",
"Ñ",
"Ń"
],
[
"M"
]
],
[
[
","
],
[
" "
],
[
".",
"#",
"!",
",",
"?",
"-",
":",
"'",
"@"
]
]
]
},
{
"level": "opt",
"mode": "locked",
"rows": [
[
[
"1",
"¹",
"½",
"⅓",
"¼",
"⅛"
],
[
"2",
"²",
"⅔"
],
[
"3",
"³",
"¾",
"⅜"
],
[
"4",
"⁴"
],
[
"5",
"⅝"
],
[
"6"
],
[
"7",
"⅞"
],
[
"8"
],
[
"9"
],
[
"0",
"ⁿ",
"∅"
]
],
[
[
"@"
],
[
"#"
],
[
"$",
"¢",
"£",
"€",
"¥",
"₱"
],
[
"%",
"‰"
],
[
"&"
],
[
"-",
"_",
"",
"—",
"·"
],
[
"+",
"±"
],
[
"(",
"<",
"{",
"["
],
[
")",
">",
"}",
"]"
]
],
[
[
"*",
"†",
"‡",
"★"
],
[
"\"",
"“",
"”",
"«",
"»"
],
[
"'",
"",
"",
"",
""
],
[
":"
],
[
";"
],
[
"!",
"¡"
],
[
"?",
"¿"
]
],
[
[
"_"
],
[
"/"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
},
{
"level": "opt+shift",
"mode": "locked",
"rows": [
[
[
"~"
],
[
"`"
],
[
"|"
],
[
"•",
"♪",
"♥",
"♠",
"♦",
"♣"
],
[
"√"
],
[
"Π",
"π"
],
[
"÷"
],
[
"×"
],
[
"¶",
"§"
],
[
"∆"
]
],
[
[
"£"
],
[
"¢"
],
[
"€"
],
[
"¥"
],
[
"^",
"↑",
"↓",
"←",
"→"
],
[
"°",
"",
"″"
],
[
"=",
"≠",
"≈",
"∞"
],
[
"{"
],
[
"}"
]
],
[
[
"\\"
],
[
"©"
],
[
"®"
],
[
"™"
],
[
"℅"
],
[
"["
],
[
"]"
]
],
[
[
"<",
"",
"≤",
"«"
],
[
">",
"",
"≥",
"»"
],
[
" "
],
[
","
],
[
".",
"…"
]
]
]
}
],
"locale": "af",
"name": "Afrikaans"
}

View File

@@ -736,7 +736,7 @@ StScrollBar {
#panel.solid .panel-button {
color: #ccc;
text-shadow: none; }
#panel.solid .panel-button:hover, #panel.solid .panel-button:active, #panel.solid .panel-button:overview, #panel.solid .panel-button:focus, #panel.solid .panel-button:checked {
#panel.solid .panel-button:hover {
color: white; }
#panel.solid .system-status-icon,
#panel.solid .app-menu-icon > StIcon,
@@ -987,14 +987,6 @@ StScrollBar {
min-width: 21em; }
.aggregate-menu .popup-menu-icon {
padding: 0 4px; }
.aggregate-menu .popup-sub-menu .popup-menu-item :first-child:ltr {
/* 12px spacing + 2*4px padding */
padding-left: 20px;
margin-left: 1.09em; }
.aggregate-menu .popup-sub-menu .popup-menu-item :first-child:rtl {
/* 12px spacing + 2*4px padding */
padding-right: 20px;
margin-right: 1.09em; }
.system-menu-action {
color: #fff;
@@ -1503,26 +1495,30 @@ StScrollBar {
border-width: 0; }
/* On-screen Keyboard */
.word-suggestions {
font-size: 14pt;
spacing: 12px;
min-height: 20pt; }
#keyboard {
background-color: rgba(46, 52, 54, 0.7); }
.key-container {
padding: 4px;
spacing: 4px; }
.keyboard-layout {
spacing: 10px;
padding: 10px; }
.keyboard-row {
spacing: 15px; }
.keyboard-key {
background-color: #393f3f;
color: #eeeeec;
background-color: #2e3436;
border-color: rgba(0, 0, 0, 0.7);
box-shadow: inset 0 1px #454f52;
text-shadow: 0 1px black;
icon-shadow: 0 1px black;
min-height: 2em;
min-width: 2em;
font-size: 14pt;
border-radius: 3px;
border: 1px solid #464d4d;
color: #e5e5e5; }
font-weight: bold;
border-radius: 5px;
border: 1px solid black;
color: white; }
.keyboard-key:focus {
color: #eeeeec;
text-shadow: 0 1px black;
@@ -1546,12 +1542,6 @@ StScrollBar {
background-color: #2e3436;
color: #eeeeec;
border-color: rgba(0, 0, 0, 0.7); }
.keyboard-key.default-key {
border-color: #2d3232;
background-color: #1d2020; }
.keyboard-key.enter-key {
border-color: #005684;
background-color: #006098; }
.keyboard-subkeys {
color: white;

View File

@@ -736,7 +736,7 @@ StScrollBar {
#panel.solid .panel-button {
color: #ccc;
text-shadow: none; }
#panel.solid .panel-button:hover, #panel.solid .panel-button:active, #panel.solid .panel-button:overview, #panel.solid .panel-button:focus, #panel.solid .panel-button:checked {
#panel.solid .panel-button:hover {
color: white; }
#panel.solid .system-status-icon,
#panel.solid .app-menu-icon > StIcon,
@@ -987,14 +987,6 @@ StScrollBar {
min-width: 21em; }
.aggregate-menu .popup-menu-icon {
padding: 0 4px; }
.aggregate-menu .popup-sub-menu .popup-menu-item :first-child:ltr {
/* 12px spacing + 2*4px padding */
padding-left: 20px;
margin-left: 1.09em; }
.aggregate-menu .popup-sub-menu .popup-menu-item :first-child:rtl {
/* 12px spacing + 2*4px padding */
padding-right: 20px;
margin-right: 1.09em; }
.system-menu-action {
color: #eeeeec;
@@ -1503,26 +1495,30 @@ StScrollBar {
border-width: 0; }
/* On-screen Keyboard */
.word-suggestions {
font-size: 14pt;
spacing: 12px;
min-height: 20pt; }
#keyboard {
background-color: rgba(46, 52, 54, 0.7); }
.key-container {
padding: 4px;
spacing: 4px; }
.keyboard-layout {
spacing: 10px;
padding: 10px; }
.keyboard-row {
spacing: 15px; }
.keyboard-key {
background-color: #393f3f;
color: #eeeeec;
background-color: #2e3436;
border-color: rgba(0, 0, 0, 0.7);
box-shadow: inset 0 1px #454f52;
text-shadow: 0 1px black;
icon-shadow: 0 1px black;
min-height: 2em;
min-width: 2em;
font-size: 14pt;
border-radius: 3px;
border: 1px solid #464d4d;
color: #e5e5e5; }
font-weight: bold;
border-radius: 5px;
border: 1px solid #1c1f1f;
color: white; }
.keyboard-key:focus {
color: #eeeeec;
text-shadow: 0 1px black;
@@ -1546,12 +1542,6 @@ StScrollBar {
background-color: #2e3436;
color: #eeeeec;
border-color: rgba(0, 0, 0, 0.7); }
.keyboard-key.default-key {
border-color: #2d3232;
background-color: #1d2020; }
.keyboard-key.enter-key {
border-color: #005684;
background-color: #006098; }
.keyboard-subkeys {
color: white;

View File

@@ -1,48 +0,0 @@
#!/bin/env bash
CLDR_LAYOUTS_TARBALL="http://www.unicode.org/Public/cldr/latest/keyboards.zip"
CLDR2JSON_GIT="git://repo.or.cz/cldr2json.git"
WORKDIR=".osk-layout-workbench"
CLDR2JSON="$WORKDIR/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 .
git clone $CLDR2JSON_GIT
unzip keyboards.zip
popd
# Transform to JSON files
$CLDR2JSON $SRCDIR $DESTDIR
# Generate new gresources xml file
cat >$TMP_GRESOURCE_FILE <<EOF
<?xml version="1.0" encoding="UTF-8"?>
<gresources>
<gresource prefix="/org/gnome/shell/osk-layouts">
EOF
for f in $DESTDIR/*.json
do
echo " <file>$(basename $f)</file>" >>$TMP_GRESOURCE_FILE
done
cat >>$TMP_GRESOURCE_FILE <<EOF
</gresource>
</gresources>
EOF
# Rewrite old gresources xml
mv $TMP_GRESOURCE_FILE $GRESOURCE_FILE

View File

@@ -17,7 +17,6 @@
<file>misc/gnomeSession.js</file>
<file>misc/history.js</file>
<file>misc/ibusManager.js</file>
<file>misc/inputMethod.js</file>
<file>misc/jsParse.js</file>
<file>misc/keyboardManager.js</file>
<file>misc/loginManager.js</file>
@@ -62,7 +61,6 @@
<file>ui/ibusCandidatePopup.js</file>
<file>ui/iconGrid.js</file>
<file>ui/inhibitShortcutsDialog.js</file>
<file>ui/kbdA11yDialog.js</file>
<file>ui/keyboard.js</file>
<file>ui/layout.js</file>
<file>ui/lightbox.js</file>
@@ -132,6 +130,5 @@
<file>ui/status/bluetooth.js</file>
<file>ui/status/screencast.js</file>
<file>ui/status/system.js</file>
<file>ui/status/thunderbolt.js</file>
</gresource>
</gresources>

View File

@@ -14,6 +14,6 @@ var GETTEXT_PACKAGE = '@GETTEXT_PACKAGE@';
var LOCALEDIR = '@datadir@/locale';
/* other standard directories */
var LIBEXECDIR = '@libexecdir@';
var VPNDIR = '@vpndir@';
var SYSCONFDIR = '@sysconfdir@';
/* g-i package versions */
var LIBMUTTER_API_VERSION = '@LIBMUTTER_API_VERSION@'

View File

@@ -6,11 +6,15 @@ const Lang = imports.lang;
const Mainloop = imports.mainloop;
const Signals = imports.signals;
const IBus = imports.gi.IBus;
const IBusCandidatePopup = imports.ui.ibusCandidatePopup;
// Ensure runtime version matches
_checkIBusVersion(1, 5, 2);
let IBusCandidatePopup;
try {
var IBus = imports.gi.IBus;
_checkIBusVersion(1, 5, 2);
IBusCandidatePopup = imports.ui.ibusCandidatePopup;
} catch (e) {
var IBus = null;
log(e);
}
let _ibusManager = null;
@@ -41,6 +45,9 @@ var IBusManager = new Lang.Class({
_PRELOAD_ENGINES_DELAY_TIME: 30, // sec
_init: function() {
if (!IBus)
return;
IBus.init();
this._candidatePopup = new IBusCandidatePopup.CandidatePopup();
@@ -183,7 +190,7 @@ var IBusManager = new Lang.Class({
},
getEngineDesc: function(id) {
if (!this._ready || !this._engines.hasOwnProperty(id))
if (!IBus || !this._ready || !this._engines.hasOwnProperty(id))
return null;
return this._engines[id];
@@ -193,7 +200,7 @@ var IBusManager = new Lang.Class({
// 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) {
if (!IBus || !this._ready) {
if (callback)
callback();
return;
@@ -204,7 +211,7 @@ var IBusManager = new Lang.Class({
},
preloadEngines: function(ids) {
if (!this._ibus || ids.length == 0)
if (!IBus || !this._ibus || ids.length == 0)
return;
if (this._preloadEnginesId != 0) {

View File

@@ -1,214 +0,0 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Clutter = imports.gi.Clutter;
const IBus = imports.gi.IBus;
const Keyboard = imports.ui.status.keyboard;
const Lang = imports.lang;
const Signals = imports.signals;
var InputMethod = new Lang.Class({
Name: 'InputMethod',
Extends: Clutter.InputMethod,
_init: function() {
this.parent();
this._hints = 0;
this._purpose = 0;
this._enabled = true;
this._currentFocus = null;
this._ibus = IBus.Bus.new_async();
this._ibus.connect('connected', Lang.bind(this, this._onConnected));
this._ibus.connect('disconnected', Lang.bind(this, this._clear));
this.connect('notify::can-show-preedit', Lang.bind(this, this._updateCapabilities));
this._inputSourceManager = Keyboard.getInputSourceManager();
this._sourceChangedId = this._inputSourceManager.connect('current-source-changed',
Lang.bind(this, this._onSourceChanged));
this._currentSource = this._inputSourceManager.currentSource;
if (this._ibus.is_connected())
this._onConnected();
},
get currentFocus() {
return this._currentFocus;
},
_updateCapabilities: function() {
let caps = 0;
if (this.can_show_preedit)
caps |= IBus.Capabilite.PREEDIT_TEXT;
if (this._currentFocus)
caps |= IBus.Capabilite.FOCUS | IBus.Capabilite.SURROUNDING_TEXT;
else
caps |= IBus.Capabilite.PREEDIT_TEXT | IBus.Capabilite.AUXILIARY_TEXT | IBus.Capabilite.LOOKUP_TABLE | IBus.Capabilite.PROPERTY;
if (this._context)
this._context.set_capabilities(caps);
},
_onSourceChanged: function() {
this._currentSource = this._inputSourceManager.currentSource;
},
_onConnected: function() {
this._ibus.create_input_context_async ('gnome-shell', -1, null,
Lang.bind(this, this._setContext));
},
_setContext: function(bus, res) {
this._context = this._ibus.create_input_context_async_finish(res);
this._context.connect('enabled', Lang.bind(this, function () { this._enabled = true }));
this._context.connect('disabled', Lang.bind(this, function () { this._enabled = false }));
this._context.connect('commit-text', Lang.bind(this, this._onCommitText));
this._context.connect('delete-surrounding-text', Lang.bind(this, this._onDeleteSurroundingText));
this._context.connect('update-preedit-text', Lang.bind(this, this._onUpdatePreeditText));
this._updateCapabilities();
},
_clear: function() {
this._context = null;
this._hints = 0;
this._purpose = 0;
this._enabled = false;
},
_emitRequestSurrounding: function() {
if (this._context.needs_surrounding_text())
this.emit('request-surrounding');
},
_onCommitText: function(context, text) {
this.commit(text.get_text());
},
_onDeleteSurroundingText: function (context) {
this.delete_surrounding();
},
_onUpdatePreeditText: function (context, text, pos, visible) {
let str = null;
if (visible && text != null)
str = text.get_text();
this.set_preedit_text(str, pos);
},
vfunc_focus_in: function(focus) {
this._currentFocus = focus;
if (this._context) {
this._context.focus_in();
this._updateCapabilities();
this._emitRequestSurrounding();
}
},
vfunc_focus_out: function() {
this._currentFocus = null;
if (this._context) {
this._context.focus_out();
this._updateCapabilities();
}
// Unset any preedit text
this.set_preedit_text(null, 0);
},
vfunc_reset: function() {
if (this._context) {
this._context.reset();
this._emitRequestSurrounding();
}
// Unset any preedit text
this.set_preedit_text(null, 0);
},
vfunc_set_cursor_location: function(rect) {
if (this._context) {
this._context.set_cursor_location(rect.get_x(), rect.get_y(),
rect.get_width(), rect.get_height());
this._emitRequestSurrounding();
}
},
vfunc_set_surrounding: function(text, cursor, anchor) {
if (this._context)
this._context.set_surrounding_text(text, cursor, anchor);
},
vfunc_update_content_hints: function(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;
this._hints = ibusHints;
if (this._context)
this._context.set_content_type(this._purpose, this._hints);
},
vfunc_update_content_purpose: function(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;
this._purpose = ibusPurpose;
if (this._context)
this._context.set_content_type(this._purpose, this._hints);
},
vfunc_filter_key_event: function(event) {
if (!this._context || !this._enabled)
return false;
if (!this._currentSource ||
this._currentSource.type == Keyboard.INPUT_SOURCE_TYPE_XKB)
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, null,
Lang.bind(this, (context, res) => {
try {
let retval = context.process_key_event_async_finish(res);
this.notify_key_event(event, retval);
} catch (e) {
log('Error processing key on IM: ' + e.message);
}
}));
return true;
},
});

View File

@@ -7,7 +7,7 @@ jsconf.set10('HAVE_BLUETOOTH', bt_dep.found())
jsconf.set10('HAVE_NETWORKMANAGER', have_networkmanager)
jsconf.set('datadir', datadir)
jsconf.set('libexecdir', libexecdir)
jsconf.set('vpndir', vpndir)
jsconf.set('sysconfdir', sysconfdir)
config_js = configure_file(
input: 'config.js.in',

View File

@@ -2,7 +2,7 @@
const Gio = imports.gi.Gio;
const Lang = imports.lang;
const NMA = imports.gi.NMA;
const NMGtk = imports.gi.NMGtk;
const Signals = imports.signals;
// _getMobileProvidersDatabase:
@@ -14,7 +14,7 @@ let _mpd;
function _getMobileProvidersDatabase() {
if (_mpd == null) {
try {
_mpd = new NMA.MobileProvidersDatabase();
_mpd = new NMGtk.MobileProvidersDatabase();
_mpd.init(null);
} catch (e) {
log(e.message);

View File

@@ -156,23 +156,14 @@ var AppSwitcherPopup = new Lang.Class({
this._items[this._selectedIndex].cachedWindows.length);
},
_closeAppWindow: function(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: function(appIndex) {
let appIcon = this._items[appIndex];
if (!appIcon)
return;
// Make sure the list of thumbnails is hidden before quitting the
// application, not to keep an empty list of windows showing up.
this._select(appIndex, null, false);
appIcon.app.request_quit();
},
@@ -188,8 +179,6 @@ var AppSwitcherPopup = new Lang.Class({
this._select(this._next());
} else if (action == Meta.KeyBindingAction.SWITCH_APPLICATIONS_BACKWARD) {
this._select(this._previous());
} else if (keysym == Clutter.q) {
this._quitApplication(this._selectedIndex);
} else if (this._thumbnailsFocused) {
if (keysym == Clutter.Left)
this._select(this._selectedIndex, this._previousWindow());
@@ -197,8 +186,8 @@ var AppSwitcherPopup = new Lang.Class({
this._select(this._selectedIndex, this._nextWindow());
else if (keysym == Clutter.Up)
this._select(this._selectedIndex, null, true);
else if (keysym == Clutter.w || keysym == Clutter.F4)
this._closeAppWindow(this._selectedIndex, this._currentWindow);
else if (keysym == Clutter.q)
this._quitApplication(this._selectedIndex);
else
return Clutter.EVENT_PROPAGATE;
} else {
@@ -208,6 +197,8 @@ var AppSwitcherPopup = new Lang.Class({
this._select(this._next());
else if (keysym == Clutter.Down)
this._select(this._selectedIndex, 0);
else if (keysym == Clutter.q)
this._quitApplication(this._selectedIndex);
else
return Clutter.EVENT_PROPAGATE;
}
@@ -272,24 +263,14 @@ var AppSwitcherPopup = new Lang.Class({
this._select(this._selectedIndex, n);
},
_windowRemoved : function(thumbnailList, 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 : function(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);
if (appIcon) {
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);
}
this.parent();
},
@@ -352,8 +333,7 @@ var AppSwitcherPopup = new Lang.Class({
} else if (this._items[this._selectedIndex].cachedWindows.length > 1 &&
!forceAppFocus) {
this._thumbnailTimeoutId = Mainloop.timeout_add (
THUMBNAIL_POPUP_TIME,
Lang.bind(this, this._timeoutPopupThumbnails));
THUMBNAIL_POPUP_TIME, () => { this._timeoutPopupThumbnails(); });
GLib.Source.set_name_by_id(this._thumbnailTimeoutId, '[gnome-shell] this._timeoutPopupThumbnails');
}
},
@@ -372,21 +352,20 @@ var AppSwitcherPopup = new Lang.Class({
{ opacity: 0,
time: THUMBNAIL_FADE_TIME,
transition: 'easeOutQuad',
onComplete: Lang.bind(this, function() {
thumbnailsActor.destroy();
this.thumbnailsVisible = false;
})
onComplete: () => {
thumbnailsActor.destroy();
this.thumbnailsVisible = false;
},
onCompleteScope: this
});
this._thumbnails = null;
if (this._switcherList._items[this._selectedIndex])
this._switcherList._items[this._selectedIndex].remove_accessible_state (Atk.StateType.EXPANDED);
this._switcherList._items[this._selectedIndex].remove_accessible_state (Atk.StateType.EXPANDED);
},
_createThumbnails : function() {
this._thumbnails = new ThumbnailList (this._items[this._selectedIndex].cachedWindows);
this._thumbnails.connect('item-activated', Lang.bind(this, this._windowActivated));
this._thumbnails.connect('item-entered', Lang.bind(this, this._windowEntered));
this._thumbnails.connect('item-removed', Lang.bind(this, this._windowRemoved));
this._thumbnails.connect('item-activated', (thumbnailList, n) => { this._windowActivated(thumbnailList, n); });
this._thumbnails.connect('item-entered', (thumbnailList, n) => { this._windowEntered(thumbnailList, n); });
this._thumbnails.actor.connect('destroy', () => {
this._thumbnails = null;
this._thumbnailsFocused = false;
@@ -403,7 +382,8 @@ var AppSwitcherPopup = new Lang.Class({
{ opacity: 255,
time: THUMBNAIL_FADE_TIME,
transition: 'easeOutQuad',
onComplete: Lang.bind(this, function () { this.thumbnailsVisible = true; })
onComplete: () => { this.thumbnailsVisible = true; },
onCompleteScope: this
});
this._switcherList._items[this._selectedIndex].add_accessible_state (Atk.StateType.EXPANDED);
@@ -430,9 +410,8 @@ var CyclerHighlight = new Lang.Class({
this.actor.add_constraint(constraint);
this.actor.connect('notify::allocation',
Lang.bind(this, this._onAllocationChanged));
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
this.actor.connect('notify::allocation', () => { this._onAllocationChanged(); });
this.actor.connect('destroy', () => { this._onDestroy(); });
},
set window(w) {
@@ -490,7 +469,7 @@ var CyclerPopup = new Lang.Class({
// We don't show an actual popup, so just provide what SwitcherPopup
// expects instead of inheriting from SwitcherList
this._switcherList = { actor: new St.Widget(),
highlight: Lang.bind(this, this._highlightItem),
highlight: (index, justOutline) => { this._highlightItem(index, justOutline); },
connect: function() {} };
},
@@ -576,14 +555,6 @@ var WindowSwitcherPopup = new Lang.Class({
return getWindows(workspace);
},
_closeWindow: function(windowIndex) {
let windowIcon = this._items[windowIndex];
if (!windowIcon)
return;
windowIcon.window.delete(global.get_current_time());
},
_keyPressHandler: function(keysym, action) {
if (action == Meta.KeyBindingAction.SWITCH_WINDOWS) {
this._select(this._next());
@@ -594,8 +565,6 @@ var WindowSwitcherPopup = new Lang.Class({
this._select(this._previous());
else if (keysym == Clutter.Right)
this._select(this._next());
else if (keysym == Clutter.w || keysym == Clutter.F4)
this._closeWindow(this._selectedIndex);
else
return Clutter.EVENT_PROPAGATE;
}
@@ -690,16 +659,15 @@ var AppSwitcher = new Lang.Class({
this._altTabPopup = altTabPopup;
this._mouseTimeOutId = 0;
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
this.actor.connect('destroy', () => { this._onDestroy(); });
},
_onDestroy: function() {
if (this._mouseTimeOutId != 0)
Mainloop.source_remove(this._mouseTimeOutId);
this.icons.forEach(icon => {
icon.app.disconnect(icon._stateChangedId);
});
for (let i = 0; i < this.icons.length; i++)
this.icons[i].app.disconnect(this.icons[i]._stateChangedId);
},
_setIconSize: function() {
@@ -774,12 +742,11 @@ var AppSwitcher = new Lang.Class({
if (this._mouseTimeOutId != 0)
Mainloop.source_remove(this._mouseTimeOutId);
if (this._altTabPopup.thumbnailsVisible) {
this._mouseTimeOutId = Mainloop.timeout_add(APP_ICON_HOVER_TIMEOUT,
Lang.bind(this, function () {
this._enterItem(index);
this._mouseTimeOutId = 0;
return GLib.SOURCE_REMOVE;
}));
this._mouseTimeOutId = Mainloop.timeout_add(APP_ICON_HOVER_TIMEOUT, () => {
this._enterItem(index);
this._mouseTimeOutId = 0;
return GLib.SOURCE_REMOVE;
});
GLib.Source.set_name_by_id(this._mouseTimeOutId, '[gnome-shell] this._enterItem');
} else
this._itemEntered(index);
@@ -800,7 +767,7 @@ var AppSwitcher = new Lang.Class({
// show a dim arrow, but show a bright arrow when they are
// highlighted.
highlight : function(n, justOutline) {
if (this.icons[this._curApp]) {
if (this._curApp != -1) {
if (this.icons[this._curApp].cachedWindows.length == 1)
this._arrows[this._curApp].hide();
else
@@ -822,7 +789,7 @@ var AppSwitcher = new Lang.Class({
this.icons.push(appIcon);
let item = this.addItem(appIcon.actor, appIcon.label);
appIcon._stateChangedId = appIcon.app.connect('notify::state', app => {
appIcon._stateChangedId = appIcon.app.connect('notify::state', (app) => {
if (app.state != Shell.AppState.RUNNING)
this._removeIcon(app);
});
@@ -840,14 +807,18 @@ var AppSwitcher = new Lang.Class({
},
_removeIcon: function(app) {
let index = this.icons.findIndex(icon => {
return icon.app == app;
});
if (index === -1)
return;
this.icons.splice(index, 1);
this.removeItem(index);
for (let i = 0; i < this.icons.length; i++)
if (this.icons[i].app == app) {
this.icons.splice(i, 1);
this.removeItem(i);
if (this._curApp == i)
this._curApp = SwitcherPopup.mod(i, this.icons.length);
if (this.icons.length > 0)
this.highlight(this._curApp);
else
this.actor.destroy();
return;
}
},
});
@@ -888,7 +859,7 @@ var ThumbnailList = new Lang.Class({
}
this.actor.connect('destroy', this._onDestroy.bind(this));
this.actor.connect('destroy', () => { this._onDestroy(); });
},
addClones : function (availHeight) {
@@ -914,7 +885,7 @@ var ThumbnailList = new Lang.Class({
this._thumbnailBins[i].set_height(binHeight);
this._thumbnailBins[i].add_actor(clone);
clone._destroyId = mutterWindow.connect('destroy', Lang.bind(this, this._removeThumbnail, clone));
clone._destroyId = mutterWindow.connect('destroy', () => { this._removeThumbnail(clone); });
this._clones.push(clone);
}
@@ -923,26 +894,26 @@ var ThumbnailList = new Lang.Class({
},
_removeThumbnail: function(source, clone) {
let index = this._clones.indexOf(clone);
if (index === -1)
return;
for (let i = 0; i < this._clones.length; i++)
if (this._clones[i] == clone) {
this._clones.splice(i, 1);
this._windows.splice(i, 1);
this._labels.splice(i, 1);
this.removeItem(i);
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.actor.destroy();
if (this._clones.length > 0)
this.highlight(SwitcherPopup.mod(i, this._clones.length));
else
this.actor.destroy();
return;
}
},
_onDestroy: function() {
this._clones.forEach(clone => {
if (clone.source)
clone.source.disconnect(clone._destroyId);
});
for (let i = 0; i < this._clones.length; i++) {
if (this._clones[i].source)
this._clones[i].source.disconnect(this._clones[i]._destroyId);
}
},
});
@@ -1024,19 +995,7 @@ var WindowList = new Lang.Class({
this.addItem(icon.actor, icon.label);
this.icons.push(icon);
icon._unmanagedSignalId = icon.window.connect('unmanaged', (window) => {
this._removeWindow(window)
});
}
this.actor.connect('destroy', () => { this._onDestroy(); });
},
_onDestroy: function() {
this.icons.forEach(icon => {
icon.window.disconnect(icon._unmanagedSignalId);
});
},
_getPreferredHeight: function(actor, forWidth, alloc) {
@@ -1065,16 +1024,5 @@ var WindowList = new Lang.Class({
this.parent(index, justOutline);
this._label.set_text(index == -1 ? '' : this.icons[index].label.text);
},
_removeWindow: function(window) {
let index = this.icons.findIndex(icon => {
return icon.window == window;
});
if (index === -1)
return;
this.icons.splice(index, 1);
this.removeItem(index);
}
});

View File

@@ -1872,14 +1872,11 @@ var AppIconMenu = new Lang.Class({
this.actor.add_style_class_name('app-well-menu');
// Chain our visibility and lifecycle to that of the source
this._sourceMappedId = source.actor.connect('notify::mapped', () => {
source.actor.connect('notify::mapped', Lang.bind(this, function () {
if (!source.actor.mapped)
this.close();
});
source.actor.connect('destroy', () => {
source.actor.disconnect(this._sourceMappedId);
this.destroy();
});
}));
source.actor.connect('destroy', Lang.bind(this, this.destroy));
Main.uiGroup.add_actor(this.actor);
},

View File

@@ -289,8 +289,6 @@ var Background = new Lang.Class({
this._clock.disconnect(this._timezoneChangedId);
this._timezoneChangedId = 0;
this._clock = null;
if (this._prepareForSleepId != 0)
LoginManager.getLoginManager().disconnect(this._prepareForSleepId);
this._prepareForSleepId = 0;

View File

@@ -7,6 +7,7 @@ const Gtk = imports.gi.Gtk;
const Lang = imports.lang;
const St = imports.gi.St;
const Signals = imports.signals;
const Gettext_gtk30 = imports.gettext.domain('gtk30');
const Shell = imports.gi.Shell;
const Main = imports.ui.main;
@@ -21,6 +22,8 @@ var ELLIPSIS_CHAR = '\u2026';
var MESSAGE_ICON_SIZE = -1; // pick up from CSS
// alias to prevent xgettext from picking up strings translated in GTK+
const gtk30_ = Gettext_gtk30.gettext;
var NC_ = function(context, str) { return context + '\u0004' + str; };
function sameYear(dateA, dateB) {
@@ -373,23 +376,20 @@ var Calendar = new Lang.Class({
this._settings.connect('changed::' + SHOW_WEEKDATE_KEY, Lang.bind(this, this._onSettingsChange));
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');
// Find the ordering for month/year in the calendar heading
this._headerFormatWithoutYear = '%B';
switch (gtk30_('calendar:MY')) {
case 'calendar:MY':
this._headerFormat = '%B %Y';
break;
case 'calendar:YM':
this._headerFormat = '%Y %B';
break;
default:
log('Translation of "calendar:MY" in GTK+ is not correct');
this._headerFormat = '%B %Y';
break;
}
// Start off with the current date
this._selectedDate = new Date();

View File

@@ -5,10 +5,10 @@ const Gio = imports.gi.Gio;
const GLib = imports.gi.GLib;
const GObject = imports.gi.GObject;
const Lang = imports.lang;
const NM = imports.gi.NM;
const NetworkManager = imports.gi.NetworkManager;
const NMClient = imports.gi.NMClient;
const Pango = imports.gi.Pango;
const Shell = imports.gi.Shell;
const Signals = imports.signals;
const St = imports.gi.St;
const Config = imports.misc.config;
@@ -173,7 +173,7 @@ var NetworkSecretDialog = new Lang.Class({
_validateStaticWep: function(secret) {
let value = secret.value;
if (secret.wep_key_type == NM.WepKeyType.KEY) {
if (secret.wep_key_type == NetworkManager.WepKeyType.KEY) {
if (value.length == 10 || value.length == 26) {
for (let i = 0; i < value.length; i++) {
if (!((value[i] >= 'a' && value[i] <= 'f')
@@ -189,7 +189,7 @@ var NetworkSecretDialog = new Lang.Class({
}
} else
return false;
} else if (secret.wep_key_type == NM.WepKeyType.PASSPHRASE) {
} else if (secret.wep_key_type == NetworkManager.WepKeyType.PASSPHRASE) {
if (value.length < 0 || value.length > 64)
return false;
}
@@ -288,7 +288,7 @@ var NetworkSecretDialog = new Lang.Class({
switch (connectionType) {
case '802-11-wireless':
wirelessSetting = this._connection.get_setting_wireless();
ssid = NM.utils_ssid_to_utf8(wirelessSetting.get_ssid().get_data());
ssid = NetworkManager.utils_ssid_to_utf8(wirelessSetting.get_ssid());
content.title = _("Authentication required by wireless network");
content.message = _("Passwords or encryption keys are required to access the wireless network “%s”.").format(ssid);
this._getWirelessSecrets(content.secrets, wirelessSetting);
@@ -351,9 +351,9 @@ var VPNRequestHandler = new Lang.Class({
];
if (authHelper.externalUIMode)
argv.push('--external-ui-mode');
if (flags & NM.SecretAgentGetSecretsFlags.ALLOW_INTERACTION)
if (flags & NMClient.SecretAgentGetSecretsFlags.ALLOW_INTERACTION)
argv.push('-i');
if (flags & NM.SecretAgentGetSecretsFlags.REQUEST_NEW)
if (flags & NMClient.SecretAgentGetSecretsFlags.REQUEST_NEW)
argv.push('-r');
if (authHelper.supportsHints) {
for (let i = 0; i < hints.length; i++) {
@@ -414,9 +414,7 @@ var VPNRequestHandler = new Lang.Class({
if (this._destroyed)
return;
this.emit('destroy');
if (this._childWatch)
GLib.source_remove(this._childWatch);
GLib.source_remove(this._childWatch);
this._stdin.close(null);
// Stdout is closed when we finish reading from it
@@ -543,7 +541,6 @@ var VPNRequestHandler = new Lang.Class({
logError(e, 'error while reading VPN plugin output keyfile');
this._agent.respond(this._requestId, Shell.NetworkAgentResponse.INTERNAL_ERROR);
this.destroy();
return;
}
}
@@ -554,7 +551,6 @@ var VPNRequestHandler = new Lang.Class({
this._shellDialog.open(global.get_current_time());
} else {
this._agent.respond(this._requestId, Shell.NetworkAgentResponse.CONFIRMED);
this.destroy();
}
},
@@ -575,26 +571,23 @@ var VPNRequestHandler = new Lang.Class({
logError(e, 'internal error while writing connection to helper');
this._agent.respond(this._requestId, Shell.NetworkAgentResponse.INTERNAL_ERROR);
this.destroy();
}
},
});
Signals.addSignalMethods(VPNRequestHandler.prototype);
var NetworkAgent = new Lang.Class({
Name: 'NetworkAgent',
_init: function() {
this._native = new Shell.NetworkAgent({ identifier: 'org.gnome.Shell.NetworkAgent',
capabilities: NM.SecretAgentCapabilities.VPN_HINTS,
auto_register: false
capabilities: NMClient.SecretAgentCapabilities.VPN_HINTS
});
this._dialogs = { };
this._vpnRequests = { };
this._notifications = { };
this._pluginDir = Gio.file_new_for_path(Config.VPNDIR);
this._pluginDir = Gio.file_new_for_path(GLib.build_filenamev([Config.SYSCONFDIR, 'NetworkManager/VPN']));
try {
let monitor = this._pluginDir.monitor(Gio.FileMonitorFlags.NONE, null);
monitor.connect('changed', () => { this._vpnCacheBuilt = false; });
@@ -604,21 +597,12 @@ var NetworkAgent = new Lang.Class({
this._native.connect('new-request', Lang.bind(this, this._newRequest));
this._native.connect('cancel-request', Lang.bind(this, this._cancelRequest));
try {
this._native.init(null);
} catch(e) {
this._native = null;
logError(e, 'error initializing the NetworkManager Agent');
}
this._enabled = false;
},
enable: function() {
if (!this._native)
return;
this._native.auto_register = true;
if (!this._native.registered)
this._native.register_async(null, null);
this._enabled = true;
},
disable: function() {
@@ -636,12 +620,7 @@ var NetworkAgent = new Lang.Class({
this._notifications[requestId].destroy();
this._notifications = { };
if (!this._native)
return;
this._native.auto_register = false;
if (this._native.registered)
this._native.unregister_async(null, null);
this._enabled = false;
},
_showNotification: function(requestId, connection, settingName, hints, flags) {
@@ -655,7 +634,7 @@ var NetworkAgent = new Lang.Class({
switch (connectionType) {
case '802-11-wireless':
let wirelessSetting = connection.get_setting_wireless();
let ssid = NM.utils_ssid_to_utf8(wirelessSetting.get_ssid());
let ssid = NetworkManager.utils_ssid_to_utf8(wirelessSetting.get_ssid());
title = _("Authentication required by wireless network");
body = _("Passwords or encryption keys are required to access the wireless network “%s”.").format(ssid);
break;
@@ -705,7 +684,12 @@ var NetworkAgent = new Lang.Class({
},
_newRequest: function(agent, requestId, connection, settingName, hints, flags) {
if (!(flags & NM.SecretAgentGetSecretsFlags.USER_REQUESTED))
if (!this._enabled) {
agent.respond(requestId, Shell.NetworkAgentResponse.USER_CANCELED);
return;
}
if (!(flags & NMClient.SecretAgentGetSecretsFlags.USER_REQUESTED))
this._showNotification(requestId, connection, settingName, hints, flags);
else
this._handleRequest(requestId, connection, settingName, hints, flags);
@@ -751,11 +735,7 @@ var NetworkAgent = new Lang.Class({
return;
}
let vpnRequest = new VPNRequestHandler(this._native, requestId, binary, serviceType, connection, hints, flags);
vpnRequest.connect('destroy', Lang.bind(this, function() {
delete this._vpnRequests[requestId];
}));
this._vpnRequests[requestId] = vpnRequest;
this._vpnRequests[requestId] = new VPNRequestHandler(this._native, requestId, binary, serviceType, connection, hints, flags);
},
_buildVPNServiceCache: function() {

View File

@@ -50,10 +50,6 @@ var DashItemContainer = new Lang.Class({
this._childScale = 0;
this._childOpacity = 0;
this.animatingOut = false;
this.connect('destroy', () => {
this.label.destroy();
});
},
vfunc_allocate: function(box, flags) {
@@ -181,8 +177,16 @@ var DashItemContainer = new Lang.Class({
});
},
destroy: function() {
if (this.label)
this.label.destroy();
this.parent();
},
animateOutAndDestroy: function() {
this.label.hide();
if (this.label)
this.label.destroy();
if (this.child == null) {
this.destroy();

View File

@@ -132,11 +132,8 @@ var WorldClocksSection = new Lang.Class({
let world = GWeather.Location.get_world();
let clocks = settings.get_value('world-clocks').deep_unpack();
for (let i = 0; i < clocks.length; i++) {
if (!clocks[i].location)
continue;
let l = world.deserialize(clocks[i].location);
if (l)
this._locations.push({ location: l });
this._locations.push({ location: l });
}
this._locations.sort(function(a, b) {

View File

@@ -583,7 +583,7 @@ var _Draggable = new Lang.Class({
_restoreDragActor: function(eventTime) {
this._dragInProgress = false;
let [restoreX, restoreY, restoreScale] = this._getRestoreLocation();
[restoreX, restoreY, restoreScale] = this._getRestoreLocation();
// fade the actor back in at its original location
this._dragActor.set_position(restoreX, restoreY);

View File

@@ -253,18 +253,10 @@ var CandidatePopup = new Lang.Class({
for (let i = 0; indexLabel = lookupTable.get_label(i); ++i)
indexes.push(indexLabel.get_text());
Main.keyboard.resetSuggestions();
let candidates = [];
for (let i = startIndex; i < endIndex; ++i) {
for (let i = startIndex; i < endIndex; ++i)
candidates.push(lookupTable.get_candidate(i).get_text());
Main.keyboard.addSuggestion(lookupTable.get_candidate(i).get_text(), Lang.bind(this, function() {
let index = i;
this._panelService.candidate_clicked(index, 1, 0);
}));
}
this._candidateArea.setCandidates(indexes,
candidates,
cursorPos % pageSize,
@@ -285,7 +277,6 @@ var CandidatePopup = new Lang.Class({
panelService.connect('focus-out',
Lang.bind(this, function(ps) {
this._boxPointer.hide(BoxPointer.PopupAnimation.NONE);
Main.keyboard.resetSuggestions();
}));
},
@@ -296,10 +287,9 @@ var CandidatePopup = new Lang.Class({
},
_updateVisibility: function() {
let isVisible = (!Main.keyboard.visible &&
(this._preeditText.visible ||
this._auxText.visible ||
this._candidateArea.actor.visible));
let isVisible = (this._preeditText.visible ||
this._auxText.visible ||
this._candidateArea.actor.visible);
if (isVisible) {
this._boxPointer.setPosition(Main.layoutManager.dummyCursor, 0);

View File

@@ -1,77 +0,0 @@
const Clutter = imports.gi.Clutter;
const Gio = imports.gi.Gio;
const GObject = imports.gi.GObject;
const Lang = imports.lang;
const Dialog = imports.ui.dialog;
const ModalDialog = imports.ui.modalDialog;
const KEYBOARD_A11Y_SCHEMA = 'org.gnome.desktop.a11y.keyboard';
const KEY_STICKY_KEYS_ENABLED = 'stickykeys-enable';
const KEY_SLOW_KEYS_ENABLED = 'slowkeys-enable';
var KbdA11yDialog = new Lang.Class({
Name: 'KbdA11yDialog',
Extends: GObject.Object,
_init: function() {
this._a11ySettings = new Gio.Settings({ schema_id: KEYBOARD_A11Y_SCHEMA });
let deviceManager = Clutter.DeviceManager.get_default();
deviceManager.connect('kbd-a11y-flags-changed',
Lang.bind(this, this._showKbdA11yDialog));
},
_showKbdA11yDialog: function(deviceManager, newFlags, whatChanged) {
let dialog = new ModalDialog.ModalDialog();
let title, body;
let key, enabled;
if (whatChanged & Clutter.KeyboardA11yFlags.SLOW_KEYS_ENABLED) {
key = KEY_SLOW_KEYS_ENABLED;
enabled = (newFlags & Clutter.KeyboardA11yFlags.SLOW_KEYS_ENABLED) ? true : false;
title = enabled ?
_("Slow Keys Turned On") :
_("Slow Keys Turned Off");
body = _("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 & Clutter.KeyboardA11yFlags.STICKY_KEYS_ENABLED) {
key = KEY_STICKY_KEYS_ENABLED;
enabled = (newFlags & Clutter.KeyboardA11yFlags.STICKY_KEYS_ENABLED) ? true : false;
title = enabled ?
_("Sticky Keys Turned On") :
_("Sticky Keys Turned Off");
body = 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 icon = new Gio.ThemedIcon({ name: 'preferences-desktop-accessibility-symbolic' });
let contentParams = { icon, title, body, styleClass: 'access-dialog' };
let content = new Dialog.MessageDialogContent(contentParams);
dialog.contentLayout.add_actor(content);
dialog.addButton({ label: enabled ? _("Leave On") : _("Turn On"),
action: () => {
this._a11ySettings.set_boolean(key, true);
dialog.close();
},
default: enabled,
key: !enabled ? Clutter.Escape : null });
dialog.addButton({ label: enabled ? _("Turn Off") : _("Leave Off"),
action: () => {
this._a11ySettings.set_boolean(key, false);
dialog.close();
},
default: !enabled,
key: enabled ? Clutter.Escape : null });
dialog.open();
}
});

File diff suppressed because it is too large Load Diff

View File

@@ -19,7 +19,6 @@ const EndSessionDialog = imports.ui.endSessionDialog;
const Environment = imports.ui.environment;
const ExtensionSystem = imports.ui.extensionSystem;
const ExtensionDownloader = imports.ui.extensionDownloader;
const InputMethod = imports.misc.inputMethod;
const Keyboard = imports.ui.keyboard;
const MessageTray = imports.ui.messageTray;
const ModalDialog = imports.ui.modalDialog;
@@ -45,7 +44,6 @@ const WindowManager = imports.ui.windowManager;
const Magnifier = imports.ui.magnifier;
const XdndHandler = imports.ui.xdndHandler;
const Util = imports.misc.util;
const KbdA11yDialog = imports.ui.kbdA11yDialog;
const A11Y_SCHEMA = 'org.gnome.desktop.a11y.keyboard';
const STICKY_KEYS_ENABLE = 'stickykeys-enable';
@@ -80,14 +78,11 @@ var magnifier = null;
var xdndHandler = null;
var keyboard = null;
var layoutManager = null;
var kbdA11yDialog = null;
var inputMethod = null;
let _startDate;
let _defaultCssStylesheet = null;
let _cssStylesheet = null;
let _a11ySettings = null;
let _themeResource = null;
let _oskResource = null;
function _sessionUpdated() {
if (sessionMode.isPrimary)
@@ -151,7 +146,6 @@ function _initializeUI() {
Shell.AppUsage.get_default();
reloadThemeResource();
_loadOskLayouts();
_loadDefaultStylesheet();
// Setup the stage hierarchy early
@@ -169,15 +163,11 @@ function _initializeUI() {
osdWindowManager = new OsdWindow.OsdWindowManager();
osdMonitorLabeler = new OsdMonitorLabeler.OsdMonitorLabeler();
overview = new Overview.Overview();
kbdA11yDialog = new KbdA11yDialog.KbdA11yDialog();
wm = new WindowManager.WindowManager();
magnifier = new Magnifier.Magnifier();
if (LoginManager.canLock())
screenShield = new ScreenShield.ScreenShield();
inputMethod = new InputMethod.InputMethod();
Clutter.get_default_backend().set_input_method(inputMethod);
messageTray = new MessageTray.MessageTray();
panel = new Panel.Panel();
keyboard = new Keyboard.Keyboard();
@@ -316,11 +306,6 @@ function reloadThemeResource() {
_themeResource._register();
}
function _loadOskLayouts() {
_oskResource = Gio.Resource.load(global.datadir + '/gnome-shell-osk-layouts.gresource');
_oskResource._register();
}
/**
* loadTheme:
*

View File

@@ -215,7 +215,7 @@ var ModalDialog = new Lang.Class({
else
this._savedKeyFocus = null;
Main.popModal(this._group, timestamp);
Gdk.Display.get_default().sync();
global.gdk_screen.get_display().sync();
this._hasModal = false;
if (!this._shellReactive)

View File

@@ -977,12 +977,12 @@ var PadOsdService = new Lang.Class({
let padDevice = null;
devices.forEach(Lang.bind(this, function(device) {
if (deviceNode == device.get_device_node() &&
device.get_device_type() == Clutter.InputDeviceType.PAD_DEVICE)
if (deviceNode == device.get_device_node())
padDevice = device;
}));
if (padDevice == null) {
if (padDevice == null ||
padDevice.get_device_type() != Clutter.InputDeviceType.PAD_DEVICE) {
invocation.return_error_literal(Gio.IOErrorEnum,
Gio.IOErrorEnum.CANCELLED,
"Invalid params");

View File

@@ -720,9 +720,7 @@ var AggregateMenu = new Lang.Class({
this._screencast = new imports.ui.status.screencast.Indicator();
this._location = new imports.ui.status.location.Indicator();
this._nightLight = new imports.ui.status.nightLight.Indicator();
this._thunderbolt = new imports.ui.status.thunderbolt.Indicator();
this._indicators.add_child(this._thunderbolt.indicators);
this._indicators.add_child(this._screencast.indicators);
this._indicators.add_child(this._location.indicators);
this._indicators.add_child(this._nightLight.indicators);
@@ -821,7 +819,6 @@ var Panel = new Lang.Class({
global.window_group.connect('actor-removed', Lang.bind(this, this._onWindowActorRemoved));
global.window_manager.connect('switch-workspace', Lang.bind(this, this._updateSolidStyle));
global.screen.connect('workareas-changed', () => { this.actor.queue_relayout(); });
this._updatePanel();
},
@@ -868,16 +865,7 @@ var Panel = new Lang.Class({
let sideWidth, centerWidth;
centerWidth = centerNaturalWidth;
// get workspace area and center date entry relative to it
let monitor = Main.layoutManager.findMonitorForActor(actor);
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);
sideWidth = Math.max(0, (allocWidth - centerWidth) / 2);
let childBox = new Clutter.ActorBox();

View File

@@ -1283,10 +1283,7 @@ var ScreenShield = new Lang.Class({
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));
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

View File

@@ -457,7 +457,7 @@ var InputSourceManager = new Lang.Class({
this._changePerWindowSource();
},
activateInputSource: function(is, interactive) {
_activateInputSource: function(is, interactive) {
KeyboardManager.holdKeyboard();
this._keyboardManager.apply(is.xkbId);
@@ -578,7 +578,7 @@ var InputSourceManager = new Lang.Class({
infosList[i].displayName,
infosList[i].shortName,
i);
is.connect('activate', Lang.bind(this, this.activateInputSource));
is.connect('activate', Lang.bind(this, this._activateInputSource));
if (!(is.shortName in inputSourcesByShortName))
inputSourcesByShortName[is.shortName] = [];

View File

@@ -321,7 +321,7 @@ var AppAuthorizer = new Lang.Class({
_userAuthorizeApp: function() {
let name = this._app.get_name();
let appInfo = this._app.get_app_info();
let reason = appInfo.get_locale_string("X-Geoclue-Reason");
let reason = appInfo.get_string("X-Geoclue-Reason");
this._showAppAuthDialog(name, reason);
},

View File

@@ -6,7 +6,9 @@ const Gio = imports.gi.Gio;
const Gtk = imports.gi.Gtk;
const Lang = imports.lang;
const Mainloop = imports.mainloop;
const NM = imports.gi.NM;
const NetworkManager = imports.gi.NetworkManager;
const NMClient = imports.gi.NMClient;
const NMGtk = imports.gi.NMGtk;
const Signals = imports.signals;
const Shell = imports.gi.Shell;
const St = imports.gi.St;
@@ -41,9 +43,9 @@ const NMAccessPointSecurity = {
var MAX_DEVICE_ITEMS = 4;
// small optimization, to avoid using [] all the time
const NM80211Mode = NM['80211Mode'];
const NM80211ApFlags = NM['80211ApFlags'];
const NM80211ApSecurityFlags = NM['80211ApSecurityFlags'];
const NM80211Mode = NetworkManager['80211Mode'];
const NM80211ApFlags = NetworkManager['80211ApFlags'];
const NM80211ApSecurityFlags = NetworkManager['80211ApSecurityFlags'];
var PortalHelperResult = {
CANCELLED: 0,
@@ -72,6 +74,18 @@ const PortalHelperIface = '<node> \
</node>';
const PortalHelperProxy = Gio.DBusProxy.makeProxyWrapper(PortalHelperIface);
function ssidCompare(one, two) {
if (!one || !two)
return false;
if (one.length != two.length)
return false;
for (let i = 0; i < one.length; i++) {
if (one[i] != two[i])
return false;
}
return true;
}
function signalToIcon(value) {
if (value > 80)
return 'excellent';
@@ -85,14 +99,16 @@ function signalToIcon(value) {
}
function ssidToLabel(ssid) {
let label = NM.utils_ssid_to_utf8(ssid.get_data());
let label = NetworkManager.utils_ssid_to_utf8(ssid);
if (!label)
label = _("<unknown>");
return label;
}
function ensureActiveConnectionProps(active, client) {
if (!active._primaryDevice) {
function ensureActiveConnectionProps(active, settings) {
if (!active._connection) {
active._connection = settings.get_connection_by_path(active.connection);
// This list is guaranteed to have only one device in it.
let device = active.get_devices()[0]._delegate;
active._primaryDevice = device;
@@ -146,7 +162,7 @@ var NMConnectionItem = new Lang.Class({
if (this._activeConnection == null)
return false;
return this._activeConnection.state <= NM.ActiveConnectionState.ACTIVATED;
return this._activeConnection.state <= NetworkManager.ActiveConnectionState.ACTIVATED;
},
_sync: function() {
@@ -330,9 +346,10 @@ var NMConnectionDevice = new Lang.Class({
Extends: NMConnectionSection,
Abstract: true,
_init: function(client, device) {
_init: function(client, device, settings) {
this.parent(client);
this._device = device;
this._settings = settings;
this._description = '';
this._autoConnectItem = this.item.menu.addAction(_("Connect"), Lang.bind(this, this._autoConnect));
@@ -346,12 +363,12 @@ var NMConnectionDevice = new Lang.Class({
if (this._client.primary_connection != this._device.active_connection)
return true;
return this._client.connectivity == NM.ConnectivityState.FULL;
return this._client.connectivity == NetworkManager.ConnectivityState.FULL;
},
_autoConnect: function() {
let connection = new NM.SimpleConnection();
this._client.add_and_activate_connection_async(connection, this._device, null, null, null);
let connection = new NetworkManager.Connection();
this._client.add_and_activate_connection(connection, this._device, null, null);
},
destroy: function() {
@@ -369,12 +386,17 @@ var NMConnectionDevice = new Lang.Class({
_activeConnectionChanged: function() {
if (this._activeConnection) {
let item = this._connectionItems.get(this._activeConnection.connection.get_uuid());
let item = this._connectionItems.get(this._activeConnection._connection.get_uuid());
item.setActiveConnection(null);
this._activeConnection = null;
}
this._sync();
this._activeConnection = this._device.active_connection;
if (this._activeConnection) {
ensureActiveConnectionProps(this._activeConnection, this._settings);
let item = this._connectionItems.get(this._activeConnection._connection.get_uuid());
item.setActiveConnection(this._activeConnection);
}
},
_deviceStateChanged: function(device, newstate, oldstate, reason) {
@@ -386,8 +408,8 @@ var NMConnectionDevice = new Lang.Class({
/* 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) {
if (newstate == NetworkManager.DeviceState.FAILED &&
reason != NetworkManager.DeviceStateReason.NO_SECRETS) {
this.emit('activation-failed', reason);
}
@@ -399,7 +421,7 @@ var NMConnectionDevice = new Lang.Class({
},
activateConnection: function(connection) {
this._client.activate_connection_async(connection, this._device, null, null, null);
this._client.activate_connection(connection, this._device, null, null);
},
deactivateConnection: function(activeConnection) {
@@ -418,18 +440,7 @@ var NMConnectionDevice = new Lang.Class({
_sync: function() {
let nItems = this._connectionItems.size;
this._autoConnectItem.actor.visible = (nItems == 0);
this._deactivateItem.actor.visible = this._device.state > NM.DeviceState.DISCONNECTED;
if (this._activeConnection == null) {
this._activeConnection = this._device.active_connection;
if (this._activeConnection) {
ensureActiveConnectionProps(this._activeConnection, this._client);
let item = this._connectionItems.get(this._activeConnection.connection.get_uuid());
item.setActiveConnection(this._activeConnection);
}
}
this._deactivateItem.actor.visible = this._device.state > NetworkManager.DeviceState.DISCONNECTED;
this.parent();
},
@@ -438,31 +449,31 @@ var NMConnectionDevice = new Lang.Class({
return '';
switch(this._device.state) {
case NM.DeviceState.DISCONNECTED:
case NetworkManager.DeviceState.DISCONNECTED:
/* Translators: %s is a network identifier */
return _("%s Off").format(this._getDescription());
case NM.DeviceState.ACTIVATED:
case NetworkManager.DeviceState.ACTIVATED:
/* Translators: %s is a network identifier */
return _("%s Connected").format(this._getDescription());
case NM.DeviceState.UNMANAGED:
case NetworkManager.DeviceState.UNMANAGED:
/* 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 */
return _("%s Unmanaged").format(this._getDescription());
case NM.DeviceState.DEACTIVATING:
case NetworkManager.DeviceState.DEACTIVATING:
/* Translators: %s is a network identifier */
return _("%s Disconnecting").format(this._getDescription());
case NM.DeviceState.PREPARE:
case NM.DeviceState.CONFIG:
case NM.DeviceState.IP_CONFIG:
case NM.DeviceState.IP_CHECK:
case NM.DeviceState.SECONDARIES:
case NetworkManager.DeviceState.PREPARE:
case NetworkManager.DeviceState.CONFIG:
case NetworkManager.DeviceState.IP_CONFIG:
case NetworkManager.DeviceState.IP_CHECK:
case NetworkManager.DeviceState.SECONDARIES:
/* Translators: %s is a network identifier */
return _("%s Connecting").format(this._getDescription());
case NM.DeviceState.NEED_AUTH:
case NetworkManager.DeviceState.NEED_AUTH:
/* Translators: this is for network connections that require some kind of key or password; %s is a network identifier */
return _("%s Requires Authentication").format(this._getDescription());
case NM.DeviceState.UNAVAILABLE:
case NetworkManager.DeviceState.UNAVAILABLE:
// This state is actually a compound of various states (generically unavailable,
// firmware missing), that are exposed by different properties (whose state may
// or may not updated when we receive state-changed).
@@ -474,7 +485,7 @@ var NMConnectionDevice = new Lang.Class({
/* 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 */
return _("%s Unavailable").format(this._getDescription());
case NM.DeviceState.FAILED:
case NetworkManager.DeviceState.FAILED:
/* Translators: %s is a network identifier */
return _("%s Connection Failed").format(this._getDescription());
default:
@@ -489,14 +500,14 @@ var NMDeviceWired = new Lang.Class({
Extends: NMConnectionDevice,
category: NMConnectionCategory.WIRED,
_init: function(client, device) {
this.parent(client, device);
_init: function(client, device, settings) {
this.parent(client, device, settings);
this.item.menu.addSettingsAction(_("Wired Settings"), 'gnome-network-panel.desktop');
},
_hasCarrier: function() {
if (this._device instanceof NM.DeviceEthernet)
if (this._device instanceof NMClient.DeviceEthernet)
return this._device.carrier;
else
return true;
@@ -511,9 +522,9 @@ var NMDeviceWired = new Lang.Class({
if (this._device.active_connection) {
let state = this._device.active_connection.state;
if (state == NM.ActiveConnectionState.ACTIVATING) {
if (state == NetworkManager.ActiveConnectionState.ACTIVATING) {
return 'network-wired-acquiring-symbolic';
} else if (state == NM.ActiveConnectionState.ACTIVATED) {
} else if (state == NetworkManager.ActiveConnectionState.ACTIVATED) {
if (this._canReachInternet())
return 'network-wired-symbolic';
else
@@ -531,8 +542,8 @@ var NMDeviceModem = new Lang.Class({
Extends: NMConnectionDevice,
category: NMConnectionCategory.WWAN,
_init: function(client, device) {
this.parent(client, device);
_init: function(client, device, settings) {
this.parent(client, device, settings);
this.item.menu.addSettingsAction(_("Mobile Broadband Settings"), 'gnome-network-panel.desktop');
@@ -541,11 +552,11 @@ var NMDeviceModem = new Lang.Class({
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)
else if (capabilities & NetworkManager.DeviceModemCapabilities.GSM_UMTS)
this._mobileDevice = new ModemManager.ModemGsm(device.udi);
else if (capabilities & NM.DeviceModemCapabilities.CDMA_EVDO)
else if (capabilities & NetworkManager.DeviceModemCapabilities.CDMA_EVDO)
this._mobileDevice = new ModemManager.ModemCdma(device.udi);
else if (capabilities & NM.DeviceModemCapabilities.LTE)
else if (capabilities & NetworkManager.DeviceModemCapabilities.LTE)
this._mobileDevice = new ModemManager.ModemGsm(device.udi);
if (this._mobileDevice) {
@@ -582,7 +593,7 @@ var NMDeviceModem = new Lang.Class({
/* Translators: this is for a network device that cannot be activated
because it's disabled by rfkill (airplane mode); %s is a network identifier */
return _("%s Disabled").format(this._getDescription());
else if (this._device.state == NM.DeviceState.ACTIVATED &&
else if (this._device.state == NetworkManager.DeviceState.ACTIVATED &&
this._mobileDevice && this._mobileDevice.operator_name)
return this._mobileDevice.operator_name;
else
@@ -591,7 +602,7 @@ var NMDeviceModem = new Lang.Class({
getIndicatorIcon: function() {
if (this._device.active_connection) {
if (this._device.active_connection.state == NM.ActiveConnectionState.ACTIVATING)
if (this._device.active_connection.state == NetworkManager.ActiveConnectionState.ACTIVATING)
return 'network-cellular-acquiring-symbolic';
return this._getSignalIcon();
@@ -610,8 +621,8 @@ var NMDeviceBluetooth = new Lang.Class({
Extends: NMConnectionDevice,
category: NMConnectionCategory.WWAN,
_init: function(client, device) {
this.parent(client, device);
_init: function(client, device, settings) {
this.parent(client, device, settings);
this.item.menu.addSettingsAction(_("Bluetooth Settings"), 'gnome-network-panel.desktop');
},
@@ -627,9 +638,9 @@ var NMDeviceBluetooth = new Lang.Class({
getIndicatorIcon: function() {
if (this._device.active_connection) {
let state = this._device.active_connection.state;
if (state == NM.ActiveConnectionState.ACTIVATING)
if (state == NetworkManager.ActiveConnectionState.ACTIVATING)
return 'network-cellular-acquiring-symbolic';
else if (state == NM.ActiveConnectionState.ACTIVATED)
else if (state == NetworkManager.ActiveConnectionState.ACTIVATED)
return 'network-cellular-connected-symbolic';
else
return 'network-cellular-signal-none-symbolic';
@@ -708,7 +719,7 @@ var NMWirelessDialog = new Lang.Class({
Name: 'NMWirelessDialog',
Extends: ModalDialog.ModalDialog,
_init: function(client, device) {
_init: function(client, device, settings) {
this.parent({ styleClass: 'nm-dialog' });
this._client = client;
@@ -724,7 +735,7 @@ var NMWirelessDialog = new Lang.Class({
this._networks = [];
this._buildLayout();
let connections = client.get_connections();
let connections = settings.list_connections();
this._connections = connections.filter(Lang.bind(this, function(connection) {
return device.connection_valid(connection);
}));
@@ -788,7 +799,7 @@ var NMWirelessDialog = new Lang.Class({
},
_onScanTimeout: function() {
this._device.request_scan_async(null, null);
this._device.request_scan_simple(null);
return GLib.SOURCE_CONTINUE;
},
@@ -933,7 +944,7 @@ var NMWirelessDialog = new Lang.Class({
let network = this._selectedNetwork;
if (network.connections.length > 0) {
let connection = network.connections[0];
this._client.activate_connection_async(connection, this._device, null, null, null);
this._client.activate_connection(connection, this._device, null, null);
} else {
let accessPoints = network.accessPoints;
if ((accessPoints[0]._secType == NMAccessPointSecurity.WPA2_ENT)
@@ -941,10 +952,10 @@ var NMWirelessDialog = new Lang.Class({
// 802.1x-enabled APs require further configuration, so they're
// handled in gnome-control-center
Util.spawn(['gnome-control-center', 'wifi', 'connect-8021x-wifi',
this._device.get_path(), accessPoints[0].path]);
this._device.get_path(), accessPoints[0].dbus_path]);
} else {
let connection = new NM.SimpleConnection();
this._client.add_and_activate_connection_async(connection, this._device, accessPoints[0].path, null, null)
let connection = new NetworkManager.Connection();
this._client.add_and_activate_connection(connection, this._device, accessPoints[0].dbus_path, null)
}
}
@@ -1024,7 +1035,7 @@ var NMWirelessDialog = new Lang.Class({
},
_networkCompare: function(network, accessPoint) {
if (!network.ssid.equal (accessPoint.get_ssid()))
if (!ssidCompare(network.ssid, accessPoint.get_ssid()))
return false;
if (network.mode != accessPoint.mode)
return false;
@@ -1169,9 +1180,10 @@ var NMDeviceWireless = new Lang.Class({
Name: 'NMDeviceWireless',
category: NMConnectionCategory.WIRELESS,
_init: function(client, device) {
_init: function(client, device, settings) {
this._client = client;
this._device = device;
this._settings = settings;
this._description = '';
@@ -1240,8 +1252,8 @@ var NMDeviceWireless = new Lang.Class({
/* 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) {
if (newstate == NetworkManager.DeviceState.FAILED &&
reason != NetworkManager.DeviceStateReason.NO_SECRETS) {
this.emit('activation-failed', reason);
}
@@ -1253,7 +1265,7 @@ var NMDeviceWireless = new Lang.Class({
},
_showDialog: function() {
this._dialog = new NMWirelessDialog(this._client, this._device);
this._dialog = new NMWirelessDialog(this._client, this._device, this._settings);
this._dialog.connect('closed', Lang.bind(this, this._dialogClosed));
this._dialog.open();
},
@@ -1302,8 +1314,8 @@ var NMDeviceWireless = new Lang.Class({
if (this._isHotSpotMaster())
/* Translators: %s is a network identifier */
return _("%s Hotspot Active").format(this._description);
else if (this._device.state >= NM.DeviceState.PREPARE &&
this._device.state < NM.DeviceState.ACTIVATED)
else if (this._device.state >= NetworkManager.DeviceState.PREPARE &&
this._device.state < NetworkManager.DeviceState.ACTIVATED)
/* Translators: %s is a network identifier */
return _("%s Connecting").format(this._description);
else if (ap)
@@ -1314,7 +1326,7 @@ var NMDeviceWireless = new Lang.Class({
else if (!this._client.wireless_enabled)
/* Translators: %s is a network identifier */
return _("%s Off").format(this._description);
else if (this._device.state == NM.DeviceState.DISCONNECTED)
else if (this._device.state == NetworkManager.DeviceState.DISCONNECTED)
/* Translators: %s is a network identifier */
return _("%s Not Connected").format(this._description);
else
@@ -1332,14 +1344,18 @@ var NMDeviceWireless = new Lang.Class({
if (this._client.primary_connection != this._device.active_connection)
return true;
return this._client.connectivity == NM.ConnectivityState.FULL;
return this._client.connectivity == NetworkManager.ConnectivityState.FULL;
},
_isHotSpotMaster: function() {
if (!this._device.active_connection)
return false;
let connection = this._device.active_connection.connection;
let connectionPath = this._device.active_connection.connection;
if (!connectionPath)
return false;
let connection = this._settings.get_connection_by_path(connectionPath);
if (!connection)
return false;
@@ -1347,13 +1363,13 @@ var NMDeviceWireless = new Lang.Class({
if (!ip4config)
return false;
return ip4config.get_method() == NM.SETTING_IP4_CONFIG_METHOD_SHARED;
return ip4config.get_method() == NetworkManager.SETTING_IP4_CONFIG_METHOD_SHARED;
},
getIndicatorIcon: function() {
if (this._device.state < NM.DeviceState.PREPARE)
if (this._device.state < NetworkManager.DeviceState.PREPARE)
return 'network-wireless-disconnected-symbolic';
if (this._device.state < NM.DeviceState.ACTIVATED)
if (this._device.state < NetworkManager.DeviceState.ACTIVATED)
return 'network-wireless-acquiring-symbolic';
if (this._isHotSpotMaster())
@@ -1378,15 +1394,15 @@ var NMDeviceWireless = new Lang.Class({
});
Signals.addSignalMethods(NMDeviceWireless.prototype);
var NMVpnConnectionItem = new Lang.Class({
Name: 'NMVpnConnectionItem',
var NMVPNConnectionItem = new Lang.Class({
Name: 'NMVPNConnectionItem',
Extends: NMConnectionItem,
isActive: function() {
if (this._activeConnection == null)
return false;
return this._activeConnection.vpn_state != NM.VpnConnectionState.DISCONNECTED;
return this._activeConnection.vpn_state != NetworkManager.VPNConnectionState.DISCONNECTED;
},
_buildUI: function() {
@@ -1410,17 +1426,17 @@ var NMVpnConnectionItem = new Lang.Class({
return null;
switch(this._activeConnection.vpn_state) {
case NM.VpnConnectionState.DISCONNECTED:
case NM.VpnConnectionState.ACTIVATED:
case NetworkManager.VPNConnectionState.DISCONNECTED:
case NetworkManager.VPNConnectionState.ACTIVATED:
return null;
case NM.VpnConnectionState.PREPARE:
case NM.VpnConnectionState.CONNECT:
case NM.VpnConnectionState.IP_CONFIG_GET:
case NetworkManager.VPNConnectionState.PREPARE:
case NetworkManager.VPNConnectionState.CONNECT:
case NetworkManager.VPNConnectionState.IP_CONFIG_GET:
return _("connecting…");
case NM.VpnConnectionState.NEED_AUTH:
case NetworkManager.VPNConnectionState.NEED_AUTH:
/* Translators: this is for network connections that require some kind of key or password */
return _("authentication required");
case NM.VpnConnectionState.FAILED:
case NetworkManager.VPNConnectionState.FAILED:
return _("connection failed");
default:
return 'invalid';
@@ -1428,11 +1444,11 @@ var NMVpnConnectionItem = new Lang.Class({
},
_connectionStateChanged: function(ac, newstate, reason) {
if (newstate == NM.VpnConnectionState.FAILED &&
reason != NM.VpnConnectionStateReason.NO_SECRETS) {
if (newstate == NetworkManager.VPNConnectionState.FAILED &&
reason != NetworkManager.VPNConnectionStateReason.NO_SECRETS) {
// FIXME: if we ever want to show something based on reason,
// we need to convert from NM.VpnConnectionStateReason
// to NM.DeviceStateReason
// we need to convert from NetworkManager.VPNConnectionStateReason
// to NetworkManager.DeviceStateReason
this.emit('activation-failed', reason);
}
@@ -1457,7 +1473,7 @@ var NMVpnConnectionItem = new Lang.Class({
getIndicatorIcon: function() {
if (this._activeConnection) {
if (this._activeConnection.vpn_state < NM.VpnConnectionState.ACTIVATED)
if (this._activeConnection.vpn_state < NetworkManager.VPNConnectionState.ACTIVATED)
return 'network-vpn-acquiring-symbolic';
else
return 'network-vpn-symbolic';
@@ -1467,8 +1483,8 @@ var NMVpnConnectionItem = new Lang.Class({
},
});
var NMVpnSection = new Lang.Class({
Name: 'NMVpnSection',
var NMVPNSection = new Lang.Class({
Name: 'NMVPNSection',
Extends: NMConnectionSection,
category: NMConnectionCategory.VPN,
@@ -1476,15 +1492,6 @@ var NMVpnSection = new Lang.Class({
this.parent(client);
this.item.menu.addSettingsAction(_("VPN Settings"), 'gnome-network-panel.desktop');
this._sync();
},
_sync: function() {
let nItems = this._connectionItems.size;
this.item.actor.visible = (nItems > 0);
this.parent();
},
_getDescription: function() {
@@ -1506,11 +1513,11 @@ var NMVpnSection = new Lang.Class({
},
activateConnection: function(connection) {
this._client.activate_connection_async(connection, null, null, null, null);
this._client.activate_connection(connection, null, null, null);
},
deactivateConnection: function(activeConnection) {
this._client.deactivate_connection(activeConnection, null);
this._client.deactivate_connection(activeConnection);
},
setActiveConnections: function(vpnConnections) {
@@ -1519,15 +1526,15 @@ var NMVpnSection = new Lang.Class({
item.setActiveConnection(null);
}
vpnConnections.forEach(Lang.bind(this, function(a) {
if (a.connection) {
let item = this._connectionItems.get(a.connection.get_uuid());
if (a._connection) {
let item = this._connectionItems.get(a._connection.get_uuid());
item.setActiveConnection(a);
}
}));
},
_makeConnectionItem: function(connection) {
return new NMVpnConnectionItem(this, connection);
return new NMVPNConnectionItem(this, connection);
},
getIndicatorIcon: function() {
@@ -1540,7 +1547,7 @@ var NMVpnSection = new Lang.Class({
return '';
},
});
Signals.addSignalMethods(NMVpnSection.prototype);
Signals.addSignalMethods(NMVPNSection.prototype);
var DeviceCategory = new Lang.Class({
Name: 'DeviceCategory',
@@ -1621,25 +1628,40 @@ var NMApplet = new Lang.Class({
// Device types
this._dtypes = { };
this._dtypes[NM.DeviceType.ETHERNET] = NMDeviceWired;
this._dtypes[NM.DeviceType.WIFI] = NMDeviceWireless;
this._dtypes[NM.DeviceType.MODEM] = NMDeviceModem;
this._dtypes[NM.DeviceType.BT] = NMDeviceBluetooth;
this._dtypes[NetworkManager.DeviceType.ETHERNET] = NMDeviceWired;
this._dtypes[NetworkManager.DeviceType.WIFI] = NMDeviceWireless;
this._dtypes[NetworkManager.DeviceType.MODEM] = NMDeviceModem;
this._dtypes[NetworkManager.DeviceType.BT] = NMDeviceBluetooth;
// TODO: WiMax support
// Connection types
this._ctypes = { };
this._ctypes[NM.SETTING_WIRED_SETTING_NAME] = NMConnectionCategory.WIRED;
this._ctypes[NM.SETTING_WIRELESS_SETTING_NAME] = NMConnectionCategory.WIRELESS;
this._ctypes[NM.SETTING_BLUETOOTH_SETTING_NAME] = NMConnectionCategory.WWAN;
this._ctypes[NM.SETTING_CDMA_SETTING_NAME] = NMConnectionCategory.WWAN;
this._ctypes[NM.SETTING_GSM_SETTING_NAME] = NMConnectionCategory.WWAN;
this._ctypes[NM.SETTING_VPN_SETTING_NAME] = NMConnectionCategory.VPN;
this._ctypes[NetworkManager.SETTING_WIRED_SETTING_NAME] = NMConnectionCategory.WIRED;
this._ctypes[NetworkManager.SETTING_WIRELESS_SETTING_NAME] = NMConnectionCategory.WIRELESS;
this._ctypes[NetworkManager.SETTING_BLUETOOTH_SETTING_NAME] = NMConnectionCategory.WWAN;
this._ctypes[NetworkManager.SETTING_CDMA_SETTING_NAME] = NMConnectionCategory.WWAN;
this._ctypes[NetworkManager.SETTING_GSM_SETTING_NAME] = NMConnectionCategory.WWAN;
this._ctypes[NetworkManager.SETTING_VPN_SETTING_NAME] = NMConnectionCategory.VPN;
NM.Client.new_async(null, Lang.bind(this, this._clientGot));
NMClient.Client.new_async(null, Lang.bind(this, this._clientGot));
NMClient.RemoteSettings.new_async(null, null, Lang.bind(this, this._remoteSettingsGot));
},
_clientGot: function(obj, result) {
this._client = NM.Client.new_finish(result);
this._client = NMClient.Client.new_finish(result);
this._tryLateInit();
},
_remoteSettingsGot: function(obj, result) {
this._settings = NMClient.RemoteSettings.new_finish(result);
this._tryLateInit();
},
_tryLateInit: function() {
if (!this._client || !this._settings)
return;
this._activeConnections = [ ];
this._connections = [ ];
@@ -1662,7 +1684,7 @@ var NMApplet = new Lang.Class({
this.menu.addMenuItem(this._devices[category]);
}
this._vpnSection = new NMVpnSection(this._client);
this._vpnSection = new NMVPNSection(this._client);
this._vpnSection.connect('activation-failed', Lang.bind(this, this._onActivationFailed));
this._vpnSection.connect('icon-changed', Lang.bind(this, this._updateIcon));
this.menu.addMenuItem(this._vpnSection.item);
@@ -1671,19 +1693,18 @@ var NMApplet = new Lang.Class({
this._readDevices();
this._syncNMState();
this._syncMainConnection();
this._syncVpnConnections();
this._syncVPNConnections();
this._client.connect('notify::nm-running', Lang.bind(this, this._syncNMState));
this._client.connect('notify::manager-running', Lang.bind(this, this._syncNMState));
this._client.connect('notify::networking-enabled', Lang.bind(this, this._syncNMState));
this._client.connect('notify::state', Lang.bind(this, this._syncNMState));
this._client.connect('notify::primary-connection', Lang.bind(this, this._syncMainConnection));
this._client.connect('notify::activating-connection', Lang.bind(this, this._syncMainConnection));
this._client.connect('notify::active-connections', Lang.bind(this, this._syncVpnConnections));
this._client.connect('notify::active-connections', Lang.bind(this, this._syncVPNConnections));
this._client.connect('notify::connectivity', Lang.bind(this, this._syncConnectivity));
this._client.connect('device-added', Lang.bind(this, this._deviceAdded));
this._client.connect('device-removed', Lang.bind(this, this._deviceRemoved));
this._client.connect('connection-added', Lang.bind(this, this._connectionAdded));
this._client.connect('connection-removed', Lang.bind(this, this._connectionRemoved));
this._settings.connect('new-connection', Lang.bind(this, this._newConnection));
Main.sessionMode.connect('updated', Lang.bind(this, this._sessionUpdated));
this._sessionUpdated();
@@ -1741,7 +1762,7 @@ var NMApplet = new Lang.Class({
},
_syncDeviceNames: function() {
let names = NM.Device.disambiguate_names(this._nmDevices);
let names = NMGtk.utils_disambiguate_device_names(this._nmDevices);
for (let i = 0; i < this._nmDevices.length; i++) {
let device = this._nmDevices[i];
let description = names[i];
@@ -1758,7 +1779,7 @@ var NMApplet = new Lang.Class({
let wrapperClass = this._dtypes[device.get_device_type()];
if (wrapperClass) {
let wrapper = new wrapperClass(this._client, device);
let wrapper = new wrapperClass(this._client, device, this._settings);
device._delegate = wrapper;
this._addDeviceWrapper(wrapper);
@@ -1815,13 +1836,13 @@ var NMApplet = new Lang.Class({
connection = this._client.get_primary_connection();
if (connection) {
ensureActiveConnectionProps(connection, this._client);
ensureActiveConnectionProps(connection, this._settings);
return connection;
}
connection = this._client.get_activating_connection();
if (connection) {
ensureActiveConnectionProps(connection, this._client);
ensureActiveConnectionProps(connection, this._settings);
return connection;
}
@@ -1852,13 +1873,13 @@ var NMApplet = new Lang.Class({
this._syncConnectivity();
},
_syncVpnConnections: function() {
_syncVPNConnections: function() {
let activeConnections = this._client.get_active_connections() || [];
let vpnConnections = activeConnections.filter(function(a) {
return (a instanceof NM.VpnConnection);
return (a instanceof NMClient.VPNConnection);
});
vpnConnections.forEach(Lang.bind(this, function(a) {
ensureActiveConnectionProps(a, this._client);
ensureActiveConnectionProps(a, this._settings);
}));
this._vpnSection.setActiveConnections(vpnConnections);
@@ -1866,7 +1887,7 @@ var NMApplet = new Lang.Class({
},
_mainConnectionStateChanged: function() {
if (this._mainConnection.state == NM.ActiveConnectionState.ACTIVATED && this._notification)
if (this._mainConnection.state == NetworkManager.ActiveConnectionState.ACTIVATED && this._notification)
this._notification.destroy();
},
@@ -1890,22 +1911,23 @@ var NMApplet = new Lang.Class({
return;
}
connection._updatedId = connection.connect('changed', Lang.bind(this, this._updateConnection));
connection._removedId = connection.connect('removed', Lang.bind(this, this._connectionRemoved));
connection._updatedId = connection.connect('updated', Lang.bind(this, this._updateConnection));
this._updateConnection(connection);
this._connections.push(connection);
},
_readConnections: function() {
let connections = this._client.get_connections();
let connections = this._settings.list_connections();
connections.forEach(Lang.bind(this, this._addConnection));
},
_connectionAdded: function(client, connection) {
_newConnection: function(settings, connection) {
this._addConnection(connection);
},
_connectionRemoved: function(client, connection) {
_connectionRemoved: function(connection) {
let pos = this._connections.indexOf(connection);
if (pos != -1)
this._connections.splice(pos, 1);
@@ -1925,12 +1947,13 @@ var NMApplet = new Lang.Class({
}
}
connection.disconnect(connection._removedId);
connection.disconnect(connection._updatedId);
connection._updatedId = 0;
connection._removedId = connection._updatedId = 0;
},
_updateConnection: function(connection) {
let connectionSettings = connection.get_setting_by_name(NM.SETTING_CONNECTION_SETTING_NAME);
let connectionSettings = connection.get_setting_by_name(NetworkManager.SETTING_CONNECTION_SETTING_NAME);
connection._type = connectionSettings.type;
connection._section = this._ctypes[connection._type] || NMConnectionCategory.INVALID;
@@ -1951,7 +1974,7 @@ var NMApplet = new Lang.Class({
},
_syncNMState: function() {
this.indicators.visible = this._client.nm_running;
this.indicators.visible = this._client.manager_running;
this.menu.actor.visible = this._client.networking_enabled;
this._syncConnectivity();
@@ -1992,7 +2015,7 @@ var NMApplet = new Lang.Class({
this._client.check_connectivity_async(null, Lang.bind(this, function(client, result) {
try {
let state = client.check_connectivity_finish(result);
if (state >= NM.ConnectivityState.FULL)
if (state >= NetworkManager.ConnectivityState.FULL)
this._closeConnectivityCheck(path);
} catch(e) { }
}));
@@ -2003,19 +2026,19 @@ var NMApplet = new Lang.Class({
_syncConnectivity: function() {
if (this._mainConnection == null ||
this._mainConnection.state != NM.ActiveConnectionState.ACTIVATED) {
this._mainConnection.state != NetworkManager.ActiveConnectionState.ACTIVATED) {
this._flushConnectivityQueue();
return;
}
let isPortal = this._client.connectivity == NM.ConnectivityState.PORTAL;
let isPortal = this._client.connectivity == NetworkManager.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 = isPortal || this._client.connectivity < NM.ConnectivityState.FULL;
isPortal = isPortal || this._client.connectivity < NetworkManager.ConnectivityState.FULL;
if (!isPortal || Main.sessionMode.isGreeter)
return;
@@ -2055,12 +2078,12 @@ var NMApplet = new Lang.Class({
dev = this._mainConnection._primaryDevice;
let state = this._client.get_state();
let connected = state == NM.State.CONNECTED_GLOBAL;
let connected = state == NetworkManager.State.CONNECTED_GLOBAL;
this._primaryIndicator.visible = (dev != null) || connected;
if (dev) {
this._primaryIndicator.icon_name = dev.getIndicatorIcon();
} else if (connected) {
if (this._client.connectivity == NM.ConnectivityState.FULL)
if (this._client.connectivity == NetworkManager.ConnectivityState.FULL)
this._primaryIndicator.icon_name = 'network-wired-symbolic';
else
this._primaryIndicator.icon_name = 'network-wired-no-route-symbolic';

View File

@@ -1,341 +0,0 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
// the following is a modified version of bolt/contrib/js/client.js
const Gio = imports.gi.Gio;
const GLib = imports.gi.GLib;
const Lang = imports.lang;
const Shell = imports.gi.Shell;
const Signals = imports.signals;
const Main = imports.ui.main;
const MessageTray = imports.ui.messageTray;
const PanelMenu = imports.ui.panelMenu;
/* Keep in sync with data/org.freedesktop.bolt.xml */
const BoltClientInterface = '<node> \
<interface name="org.freedesktop.bolt1.Manager"> \
<property name="Probing" type="b" access="read"></property> \
<method name="EnrollDevice"> \
<arg type="s" name="uid" direction="in"> </arg> \
<arg type="u" name="policy" direction="in"> </arg> \
<arg type="u" name="flags" direction="in"> </arg> \
<arg name="device" direction="out" type="o"> </arg> \
</method> \
<signal name="DeviceAdded"> \
<arg name="device" type="o"> </arg> \
</signal> \
</interface> \
</node>';
const BoltDeviceInterface = '<node> \
<interface name="org.freedesktop.bolt1.Device"> \
<property name="Uid" type="s" access="read"></property> \
<property name="Name" type="s" access="read"></property> \
<property name="Vendor" type="s" access="read"></property> \
<property name="Status" type="u" access="read"></property> \
<property name="SysfsPath" type="s" access="read"></property> \
<property name="Security" type="u" access="read"></property> \
<property name="Parent" type="s" access="read"></property> \
<property name="Stored" type="b" access="read"></property> \
<property name="Policy" type="u" access="read"></property> \
<property name="Key" type="u" access="read"></property> \
</interface> \
</node>';
const BoltClientProxy = Gio.DBusProxy.makeProxyWrapper(BoltClientInterface);
const BoltDeviceProxy = Gio.DBusProxy.makeProxyWrapper(BoltDeviceInterface);
/* */
var Status = {
DISCONNECTED: 0,
CONNECTED: 1,
AUTHORIZING: 2,
AUTH_ERROR: 3,
AUTHORIZED: 4,
AUTHORIZED_SECURE: 5,
AUTHORIZED_NEWKY: 6
};
var Policy = {
DEFAULT: 0,
MANUAL: 1,
AUTO:2
};
var AuthFlags = {
NONE: 0,
};
const BOLT_DBUS_NAME = 'org.freedesktop.bolt';
const BOLT_DBUS_PATH = '/org/freedesktop/bolt';
var Client = new Lang.Class({
Name: 'BoltClient',
_init: function() {
this._proxy = null;
new BoltClientProxy(
Gio.DBus.system,
BOLT_DBUS_NAME,
BOLT_DBUS_PATH,
Lang.bind(this, this._onProxyReady)
);
this.probing = false;
},
_onProxyReady: function(proxy, error) {
if (error !== null) {
log('error creating bolt proxy: %s'.format(error.message));
return;
}
this._proxy = proxy;
this._propsChangedId = this._proxy.connect('g-properties-changed', Lang.bind(this, this._onPropertiesChanged));
this._deviceAddedId = this._proxy.connectSignal('DeviceAdded', Lang.bind(this, this._onDeviceAdded), true);
this.probing = this._proxy.Probing;
if (this.probing)
this.emit('probing-changed', this.probing);
},
_onPropertiesChanged: function(proxy, properties) {
let unpacked = properties.deep_unpack();
if (!('Probing' in unpacked))
return;
this.probing = this._proxy.Probing;
this.emit('probing-changed', this.probing);
},
_onDeviceAdded: function(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: function() {
if (!this._proxy)
return;
this._proxy.disconnectSignal(this._deviceAddedId);
this._proxy.disconnect(this._propsChangedId);
this._proxy = null;
},
enrollDevice: function(id, policy, callback) {
this._proxy.EnrollDeviceRemote(id, policy, AuthFlags.NONE,
Lang.bind(this, function (res, error) {
if (error) {
callback(null, error);
return;
}
let [path] = res;
let device = new BoltDeviceProxy(Gio.DBus.system,
BOLT_DBUS_NAME,
path);
callback(device, null);
}));
}
});
Signals.addSignalMethods(Client.prototype);
/* helper class to automatically authorize new devices */
var AuthRobot = new Lang.Class({
Name: 'BoltAuthRobot',
_init: function(client) {
this._client = client;
this._devicesToEnroll = [];
this._enrolling = false;
this._client.connect('device-added', Lang.bind(this, this._onDeviceAdded));
},
close: function() {
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: function(cli, dev) {
if (dev.Status !== Status.CONNECTED)
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: function() {
if (this._enrolling)
return;
this.enrolling = true;
GLib.idle_add(GLib.PRIORITY_DEFAULT,
Lang.bind(this, this._enrollDevicesIdle));
},
_onEnrollDone: function(device, error) {
if (error)
this.emit('enroll-failed', error, device);
/* 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,
Lang.bind(this, this._enrollDevicesIdle));
},
_enrollDevicesIdle: function() {
let devices = this._devicesToEnroll;
let dev = devices.shift();
if (dev === undefined)
return GLib.SOURCE_REMOVE;
this._client.enrollDevice(dev.Uid,
Policy.DEFAULT,
Lang.bind(this, this._onEnrollDone));
return GLib.SOURCE_REMOVE;
}
});
Signals.addSignalMethods(AuthRobot.prototype);
/* eof client.js */
var Indicator = new Lang.Class({
Name: 'ThunderboltIndicator',
Extends: PanelMenu.SystemIndicator,
_init: function() {
this.parent();
this._indicator = this._addIndicator();
this._indicator.icon_name = 'thunderbolt-symbolic';
this._client = new Client();
this._client.connect('probing-changed', Lang.bind(this, this._onProbing));
this._robot = new AuthRobot(this._client);
this._robot.connect('enroll-device', Lang.bind(this, this._onEnrollDevice));
this._robot.connect('enroll-failed', Lang.bind(this, this._onEnrollFailed));
Main.sessionMode.connect('updated', Lang.bind(this, this._sync));
this._sync();
this._source = null;
},
_onDestroy: function() {
this._robot.close();
this._client.close();
},
_ensureSource: function() {
if (!this._source) {
this._source = new MessageTray.Source(_("Thunderbolt"),
'thunderbolt-symbolic');
this._source.connect('destroy', Lang.bind(this, function() {
this._source = null;
}));
Main.messageTray.add(this._source);
}
return this._source;
},
_notify: function(title, body) {
if (this._notification)
this._notification.destroy();
let source = this._ensureSource();
this._notification = new MessageTray.Notification(source, title, body);
this._notification.setUrgency(MessageTray.Urgency.HIGH);
this._notification.connect('destroy', function() {
this._notification = null;
});
this._notification.connect('activated', () => {
let app = Shell.AppSystem.get_default().lookup_app('gnome-thunderbolt-panel.desktop');
if (app)
app.activate();
});
this._source.notify(this._notification);
},
/* Session callbacks */
_sync: function() {
let active = !Main.sessionMode.isLocked && !Main.sessionMode.isGreeter;
this._indicator.visible = active && this._client.probing;
},
/* Bolt.Client callbacks */
_onProbing: function(cli, probing) {
if (probing)
this._indicator.icon_name = 'thunderbolt-acquiring-symbolic';
else
this._indicator.icon_name = 'thunderbolt-symbolic';
this._sync();
},
/* AuthRobot callbacks */
_onEnrollDevice: function(obj, device, policy) {
let auth = !Main.sessionMode.isLocked && !Main.sessionMode.isGreeter;
policy[0] = auth;
log("thunderbolt: [%s] auto enrollment: %s".format(device.Name, auth ? 'yes' : 'no'));
if (auth)
return; /* we are done */
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);
},
_onEnrollFailed: function (obj, device, error) {
const title = _('Thunderbolt authorization error');
const body = _('Could not authorize the thunderbolt device: %s'.format(error.message));
this._notify(title, body);
}
});

View File

@@ -133,7 +133,6 @@ var SwitcherPopup = new Lang.Class({
this.actor.add_actor(this._switcherList.actor);
this._switcherList.connect('item-activated', Lang.bind(this, this._itemActivated));
this._switcherList.connect('item-entered', Lang.bind(this, this._itemEntered));
this._switcherList.connect('item-removed', Lang.bind(this, this._itemRemoved));
// Need to force an allocation so we can figure out whether we
// need to scroll when selecting
@@ -248,19 +247,6 @@ var SwitcherPopup = new Lang.Class({
this._itemEnteredHandler(n);
},
_itemRemovedHandler: function(n) {
if (this._items.length > 0) {
let newIndex = Math.min(n, this._items.length - 1);
this._select(newIndex);
} else {
this.actor.destroy();
}
},
_itemRemoved: function(switcher, n) {
this._itemRemovedHandler(n);
},
_disableHover: function() {
this.mouseActive = false;
@@ -435,7 +421,6 @@ var SwitcherList = new Lang.Class({
removeItem: function(index) {
let item = this._items.splice(index, 1);
item[0].destroy();
this.emit('item-removed', index);
},
_onItemClicked: function (index) {
@@ -457,15 +442,15 @@ var SwitcherList = new Lang.Class({
this._items[this._highlighted].remove_style_pseudo_class('selected');
}
if (this._items[index]) {
if (justOutline)
this._items[index].add_style_pseudo_class('outlined');
else
this._items[index].add_style_pseudo_class('selected');
}
this._highlighted = index;
if (this._highlighted != -1) {
if (justOutline)
this._items[this._highlighted].add_style_pseudo_class('outlined');
else
this._items[this._highlighted].add_style_pseudo_class('selected');
}
let adjustment = this._scrollView.hscroll.adjustment;
let [value, lower, upper, stepIncrement, pageIncrement, pageSize] = adjustment.get_values();
let [absItemX, absItemY] = this._items[index].get_transformed_position();

View File

@@ -606,15 +606,6 @@ var ViewSelector = new Lang.Class({
// - cancel the search
this.reset();
}
} else if (!this._text.has_key_focus() &&
(event.type() == Clutter.EventType.KEY_PRESS ||
event.type() == Clutter.EventType.KEY_RELEASE)) {
let unichar = event.get_key_unicode();
if (GLib.unichar_isprint(unichar)) {
this._text.grab_key_focus();
return this._text.event(event, false);
}
}
return Clutter.EVENT_PROPAGATE;

View File

@@ -159,7 +159,7 @@
<title>Additional Information</title>
<para>For further information, visit the website
<ulink url="https://wiki.gnome.org/Projects/GnomeShell">https://wiki.gnome.org/Projects/GnomeShell</ulink>.</para>
<ulink url="http://live.gnome.org/GnomeShell">http://live.gnome.org/GnomeShell</ulink>.</para>
</refsect1>
</refentry>

View File

@@ -27,7 +27,6 @@ mutter_req = '>= 3.26.0'
polkit_req = '>= 0.100'
schemas_req = '>= 3.21.3'
startup_req = '>= 0.11'
ibus_req = '>= 1.5.2'
bt_req = '>= 3.9.0'
gst_req = '>= 0.11.92'
@@ -44,6 +43,7 @@ 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())
@@ -88,7 +88,6 @@ mutter_dep = dependency(libmutter_pc, version: mutter_req)
polkit_dep = dependency('polkit-agent-1', version: polkit_req)
soup_dep = dependency('libsoup-2.4')
startup_dep = dependency('libstartup-notification-1.0', version: startup_req)
ibus_dep = dependency('ibus-1.0', version: ibus_req)
x11_dep = dependency('x11')
schemas_dep = dependency('gsettings-desktop-schemas', version: schemas_req)
@@ -103,34 +102,54 @@ if enable_recorder
endif
nm_deps = []
if get_option('networkmanager')
nm_deps += dependency('libnm', version: nm_req)
nm_deps += dependency('libsecret-1', version: secret_req)
enable_networkmanager = get_option('enable-networkmanager')
if enable_networkmanager != 'no'
want_networkmanager = enable_networkmanager == 'yes'
vpndir = nm_deps[0].get_pkgconfig_variable('vpnservicedir')
nm_deps += dependency('libnm-glib',
version: nm_req, required: want_networkmanager
)
nm_deps += dependency('libnm-util',
version: nm_req, required: want_networkmanager
)
nm_deps += dependency('libnm-gtk',
version: nm_req, required: want_networkmanager
)
nm_deps += dependency('libsecret-1',
version: secret_req, required: want_networkmanager
)
have_networkmanager = true
else
vpndir = prefix
foreach dep : nm_deps
have_networkmanager = have_networkmanager and dep.found()
endforeach
if not have_networkmanager
nm_deps = []
endif
else
have_networkmanager = false
endif
if get_option('systemd')
systemd_dep = dependency('libsystemd')
enable_systemd = get_option('enable-systemd')
if enable_systemd != 'no'
want_systemd = enable_systemd == 'yes'
systemd_dep = dependency('libsystemd', required: want_systemd)
have_systemd = systemd_dep.found()
else
systemd_dep = []
have_systemd = false
endif
if get_option('browser_plugin')
enable_plugin = get_option('enable-browser-plugin')
if enable_plugin
json_glib_dep = dependency('json-glib-1.0', version: json_glib_req)
subdir('browser-plugin')
endif
if get_option('man')
enable_man = get_option('enable-man')
if enable_man
xsltproc = find_program('xsltproc')
subdir('man')
@@ -169,13 +188,12 @@ conf_inc = include_directories('.')
libgvc = subproject('gvc',
default_options: [
'package_name=' + meson.project_name(),
'package_version=' + meson.project_version(),
'package-name=' + meson.project_name(),
'package-version=' + meson.project_version(),
'pkgdatadir=' + pkgdatadir,
'pkglibdir=' + pkglibdir,
'static=false',
'introspection=true',
'alsa=false'
'with-introspection=true'
]
)
libgvc_gir = libgvc.get_variable('libgvc_gir')
@@ -186,6 +204,6 @@ subdir('po')
subdir('data')
subdir('tests')
if get_option('gtk_doc')
if get_option('enable-documentation')
subdir('docs/reference')
endif

View File

@@ -1,29 +1,31 @@
option('browser_plugin',
option('enable-browser-plugin',
type: 'boolean',
value: true,
description: 'Enable extensions.gnome.org browser plugin'
)
option('gtk_doc',
option('enable-documentation',
type: 'boolean',
value: false,
description: 'Build API reference'
)
option('man',
option('enable-man',
type: 'boolean',
value: true,
description: 'Generate man pages'
)
option('networkmanager',
type: 'boolean',
value: true,
option('enable-networkmanager',
type: 'combo',
choices: ['yes', 'no', 'auto'],
value: 'auto',
description: 'Enable NetworkManager support'
)
option('systemd',
type: 'boolean',
value: true,
option('enable-systemd',
type: 'combo',
choices: ['yes', 'no', 'auto'],
value: 'auto',
description: 'Enable systemd integration'
)

View File

@@ -32,7 +32,6 @@ 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
@@ -60,7 +59,6 @@ js/ui/status/nightLight.js
js/ui/status/power.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

View File

@@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-12-10 11:28+0200\n"
"PO-Revision-Date: 2017-12-10 11:31+0200\n"
"POT-Creation-Date: 2017-11-03 10:10+0200\n"
"PO-Revision-Date: 2017-11-03 10:17+0200\n"
"Last-Translator: Khaled Hosny <khaledhosny@eglug.org>\n"
"Language-Team: Arabic <doc@arabeyes.org>\n"
"Language: ar\n"
@@ -88,7 +88,7 @@ msgstr ""
#: data/org.gnome.shell.gschema.xml.in:26
msgid "Disable user extensions"
msgstr "عطّل امتدادات المستخدمين"
msgstr ""
#: data/org.gnome.shell.gschema.xml.in:27
msgid ""
@@ -119,7 +119,7 @@ msgstr ""
#: data/org.gnome.shell.gschema.xml.in:51
msgid "App Picker View"
msgstr "منظور منتقي التطبيقات"
msgstr ""
#: data/org.gnome.shell.gschema.xml.in:52
msgid "Index of the currently selected view in the application picker."
@@ -362,18 +362,18 @@ msgstr "(أو مرر إصبع)"
#. Translators: The name of the power-off action in search
#: js/misc/systemActions.js:99
msgctxt "search-result"
msgid "Power Off"
msgid "Power off"
msgstr "أطفئ"
#. Translators: A list of keywords that match the power-off action, separated by semicolons
#: js/misc/systemActions.js:102
msgid "power off;shutdown;reboot;restart"
msgstr "أطفئ;أغلق;أعد التشغيل"
msgid "power off;shutdown"
msgstr "أطفئ;أغلق"
#. Translators: The name of the lock screen action in search
#: js/misc/systemActions.js:106
msgctxt "search-result"
msgid "Lock Screen"
msgid "Lock screen"
msgstr "أوصد الشاشة"
#. Translators: A list of keywords that match the lock screen action, separated by semicolons
@@ -384,7 +384,7 @@ msgstr "أوصد الشاشة"
#. Translators: The name of the logout action in search
#: js/misc/systemActions.js:113
msgctxt "search-result"
msgid "Log Out"
msgid "Log out"
msgstr "اخرج"
#. Translators: A list of keywords that match the logout action, separated by semicolons
@@ -406,8 +406,8 @@ msgstr "علّق"
#. Translators: The name of the switch user action in search
#: js/misc/systemActions.js:127
msgctxt "search-result"
msgid "Switch User"
msgstr "غيّر المستخدم"
msgid "Switch user"
msgstr "بدّل المستخدم"
#. Translators: A list of keywords that match the switch user action, separated by semicolons
#: js/misc/systemActions.js:130
@@ -417,13 +417,13 @@ msgstr "بدّل المستخدم"
#. Translators: The name of the lock orientation action in search
#: js/misc/systemActions.js:134
msgctxt "search-result"
msgid "Lock Orientation"
msgid "Lock orientation"
msgstr "أوصد الاتجاه"
#. Translators: A list of keywords that match the lock orientation action, separated by semicolons
#: js/misc/systemActions.js:137
msgid "lock orientation;screen;rotation"
msgstr "أوصد الاتجاه;شاشة;تدوير"
msgid "lock orientation"
msgstr "أوصد الاتجاه"
#: js/misc/util.js:122
msgid "Command not found"
@@ -627,7 +627,7 @@ msgstr "نافذة جديدة"
msgid "Launch using Dedicated Graphics Card"
msgstr "شغل باستخدام بطاقة الرسوميات المنفصلة"
#: js/ui/appDisplay.js:1956 js/ui/dash.js:285
#: js/ui/appDisplay.js:1956 js/ui/dash.js:289
msgid "Remove from Favorites"
msgstr "أزِل من المفضّلة"
@@ -931,13 +931,13 @@ msgstr "غيّر %s اسمه إلى %s"
msgid "Windows"
msgstr "النوافذ"
#: js/ui/dash.js:246 js/ui/dash.js:287
#: 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:445
#: js/ui/dash.js:449
msgid "Dash"
msgstr "الشريط"
@@ -956,15 +956,15 @@ msgstr "%e %B %Y"
msgid "%A %B %e %Y"
msgstr "%A %e %B %Y"
#: js/ui/dateMenu.js:148
#: js/ui/dateMenu.js:145
msgid "Add world clocks…"
msgstr "أضف ساعات عالمية…"
#: js/ui/dateMenu.js:149
#: js/ui/dateMenu.js:146
msgid "World Clocks"
msgstr "ساعات عالمية"
#: js/ui/dateMenu.js:228
#: js/ui/dateMenu.js:225
msgid "Weather"
msgstr "الطقس"
@@ -972,7 +972,7 @@ msgstr "الطقس"
#. 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
#: js/ui/dateMenu.js:289
#, javascript-format
msgid "%s all day."
msgstr "%s طوال اليوم."
@@ -981,7 +981,7 @@ msgstr "%s طوال اليوم."
#. 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
#: js/ui/dateMenu.js:295
#, javascript-format
msgid "%s, then %s later."
msgstr "%s، ثم %s فيما بعد."
@@ -990,30 +990,30 @@ msgstr "%s، ثم %s فيما بعد."
#. 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:304
#: js/ui/dateMenu.js:301
#, javascript-format
msgid "%s, then %s, followed by %s later."
msgstr "%s، ثم %s، و بعدها %s."
#: js/ui/dateMenu.js:315
#: js/ui/dateMenu.js:312
msgid "Select a location…"
msgstr "اختر موقعا…"
#: js/ui/dateMenu.js:318
#: js/ui/dateMenu.js:315
msgid "Loading…"
msgstr "يحمّل…"
#. Translators: %s is a temperature with unit, e.g. "23℃"
#: js/ui/dateMenu.js:324
#: js/ui/dateMenu.js:321
#, javascript-format
msgid "Feels like %s."
msgstr "تبدو مثل %s."
#: js/ui/dateMenu.js:327
#: js/ui/dateMenu.js:324
msgid "Go online for weather information"
msgstr "اتصل بالإنترنت لمعلومات الطقس"
#: js/ui/dateMenu.js:329
#: js/ui/dateMenu.js:326
msgid "Weather information is currently unavailable"
msgstr "معلومات الطقس غير متاحة حاليًا"
@@ -1213,7 +1213,7 @@ msgstr "ارفض"
msgid "Allow"
msgstr "اسمح"
#: js/ui/keyboard.js:738 js/ui/status/keyboard.js:783
#: js/ui/keyboard.js:738 js/ui/status/keyboard.js:782
msgid "Keyboard"
msgstr "لوحة المفاتيح"
@@ -1564,7 +1564,7 @@ msgstr "أوقف"
msgid "Brightness"
msgstr "السطوع"
#: js/ui/status/keyboard.js:806
#: js/ui/status/keyboard.js:805
msgid "Show Keyboard Layout"
msgstr "أظهر تخطيط لوحة المفاتيح"
@@ -2128,18 +2128,6 @@ msgstr[5] "%u مدخل"
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 "Hide tray"
#~ msgstr "أخفِ الصينية"

328
po/ca.po
View File

@@ -3,7 +3,7 @@
# This file is distributed under the same license as the gnome-shell package.
# Siegfried-Angel Gevatter Pujals <rainct@ubuntu.com>, 2009.
# Jordi Serratosa <jordis@softcatala.cat>, 2012, 2017.
# Gil Forcada <gilforcada@guifi.net>, 2010, 2011, 2013, 2014, 2016, 2018.
# Gil Forcada <gilforcada@guifi.net>, 2010, 2011, 2013, 2014, 2016.
# Jordi Mas i Hernàndez <jmas@softcatala.org>, 2017
#
msgid ""
@@ -11,16 +11,16 @@ 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: 2018-01-20 21:10+0000\n"
"PO-Revision-Date: 2018-01-22 00:20+0100\n"
"Last-Translator: Gil Forcada Codinachs <gil.gnome@gmail.com>\n"
"POT-Creation-Date: 2017-08-23 08:01+0000\n"
"PO-Revision-Date: 2017-08-23 09:48+0200\n"
"Last-Translator: Jordi Mas <jmas@softcatala.org>\n"
"Language-Team: Catalan <tradgnome@softcatala.org>\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: Gtranslator 2.91.6\n"
"X-Generator: Poedit 2.0.1\n"
#: data/50-gnome-shell-system.xml:6
msgid "System"
@@ -199,10 +199,10 @@ msgid ""
"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 "
"dispositius associats."
"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 "
"dispositius associats."
#: data/org.gnome.shell.gschema.xml.in:101
msgid "Keybinding to open the application menu"
@@ -318,8 +318,8 @@ msgstr ""
#: data/org.gnome.shell.gschema.xml.in:206
msgid "Enable edge tiling when dropping windows on screen edges"
msgstr ""
"Habilita el mòsaic a les vores en deixar anar les finestres a les vores de "
"la pantalla"
"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"
@@ -352,7 +352,7 @@ 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:925
#: js/ui/shellMountOperation.js:344 js/ui/status/network.js:936
msgid "Cancel"
msgstr "Cancel·la"
@@ -416,18 +416,18 @@ 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"
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;reboot;restart"
msgstr "apaga;atura;reinicia"
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"
msgid "Lock screen"
msgstr "Bloqueja la pantalla"
#. Translators: A list of keywords that match the lock screen action, separated by semicolons
@@ -438,8 +438,8 @@ 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 "Surt"
msgid "Log out"
msgstr "Desconnecta"
#. Translators: A list of keywords that match the logout action, separated by semicolons
#: js/misc/systemActions.js:116
@@ -460,7 +460,7 @@ 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"
msgid "Switch user"
msgstr "Canvia d'usuari"
#. Translators: A list of keywords that match the switch user action, separated by semicolons
@@ -471,13 +471,13 @@ 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"
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;screen;rotation"
msgstr "bloqueja l'orientació;pantalla;rotació"
msgid "lock orientation"
msgstr "bloqueja l'orientació"
#: js/misc/util.js:122
msgid "Command not found"
@@ -650,32 +650,32 @@ msgstr "Freqüent"
msgid "All"
msgstr "Totes"
#: js/ui/appDisplay.js:1918
#: js/ui/appDisplay.js:1915
msgid "New Window"
msgstr "Finestra nova"
#: js/ui/appDisplay.js:1932
#: js/ui/appDisplay.js:1929
msgid "Launch using Dedicated Graphics Card"
msgstr "Inicia usant una targeta gràfica dedicada"
#: js/ui/appDisplay.js:1959 js/ui/dash.js:285
#: js/ui/appDisplay.js:1956 js/ui/dash.js:289
msgid "Remove from Favorites"
msgstr "Suprimeix dels preferits"
#: js/ui/appDisplay.js:1965
#: js/ui/appDisplay.js:1962
msgid "Add to Favorites"
msgstr "Afegeix als preferits"
#: js/ui/appDisplay.js:1975
#: js/ui/appDisplay.js:1972
msgid "Show Details"
msgstr "Mostra els detalls"
#: js/ui/appFavorites.js:141
#: js/ui/appFavorites.js:140
#, javascript-format
msgid "%s has been added to your favorites."
msgstr "S'ha afegit %s als preferits."
#: js/ui/appFavorites.js:175
#: js/ui/appFavorites.js:174
#, javascript-format
msgid "%s has been removed from your favorites."
msgstr "S'ha suprimit %s dels preferits."
@@ -764,51 +764,51 @@ msgctxt "grid saturday"
msgid "S"
msgstr "Ds"
#: js/ui/calendar.js:449
#: js/ui/calendar.js:442
msgid "Previous month"
msgstr "Mes anterior"
#: js/ui/calendar.js:459
#: js/ui/calendar.js:452
msgid "Next month"
msgstr "Mes següent"
#: js/ui/calendar.js:612
#: js/ui/calendar.js:605
#, no-javascript-format
msgctxt "date day number format"
msgid "%d"
msgstr "%d"
#: js/ui/calendar.js:667
#: 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:736
#: js/ui/calendar.js:729
msgctxt "event list time"
msgid "All Day"
msgstr "Tot el dia"
#: js/ui/calendar.js:869
#: js/ui/calendar.js:862
msgctxt "calendar heading"
msgid "%A, %B %d"
msgstr "%A %d de %B"
#: js/ui/calendar.js:873
#: js/ui/calendar.js:866
msgctxt "calendar heading"
msgid "%A, %B %d, %Y"
msgstr "%A %d de %B de %Y"
#: js/ui/calendar.js:1093
#: js/ui/calendar.js:1086
msgid "No Notifications"
msgstr "Cap notificació"
#: js/ui/calendar.js:1096
#: js/ui/calendar.js:1089
msgid "No Events"
msgstr "Cap cita"
#: js/ui/calendar.js:1124
#: js/ui/calendar.js:1117
msgid "Clear All"
msgstr "Neteja-ho tot"
@@ -842,7 +842,7 @@ msgstr "S'ha connectat un dispositiu extern"
msgid "External drive disconnected"
msgstr "S'ha desconnectat un dispositiu extern"
#: js/ui/components/autorunManager.js:358
#: js/ui/components/autorunManager.js:354
#, javascript-format
msgid "Open with %s"
msgstr "Obre amb %s"
@@ -855,8 +855,8 @@ msgstr "Contrasenya:"
msgid "Type again:"
msgstr "Torneu a escriure-la:"
#: js/ui/components/networkAgent.js:112 js/ui/status/network.js:245
#: js/ui/status/network.js:338 js/ui/status/network.js:928
#: 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"
@@ -884,11 +884,11 @@ msgstr "Contrasenya de la clau privada:"
msgid "Service: "
msgstr "Servei:"
#: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:659
#: 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:660
#: 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 "
@@ -897,7 +897,7 @@ 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:663
#: js/ui/components/networkAgent.js:297 js/ui/components/networkAgent.js:642
msgid "Wired 802.1X authentication"
msgstr "Autenticació 802.1X amb fil"
@@ -905,15 +905,15 @@ msgstr "Autenticació 802.1X amb fil"
msgid "Network name: "
msgstr "Nom de la xarxa: "
#: js/ui/components/networkAgent.js:304 js/ui/components/networkAgent.js:667
#: 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:673
#: 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:674
#: 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"
@@ -921,17 +921,17 @@ msgstr "Cal que introduïu el codi PIN del dispositiu de banda ampla mòbil"
msgid "PIN: "
msgstr "PIN: "
#: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:680
#: 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:664
#: js/ui/components/networkAgent.js:668 js/ui/components/networkAgent.js:681
#: 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:648 js/ui/status/network.js:1699
#: js/ui/components/networkAgent.js:627 js/ui/status/network.js:1720
msgid "Network Manager"
msgstr "Gestor de connexions de xarxa"
@@ -966,20 +966,20 @@ msgstr "En/na %s ara es diu %s"
msgid "Windows"
msgstr "Finestres"
#: js/ui/dash.js:246 js/ui/dash.js:287
#: 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:445
#: 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:76
#: js/ui/dateMenu.js:75
msgid "%B %e %Y"
msgstr "%e de %B de %Y"
@@ -987,19 +987,19 @@ msgstr "%e de %B de %Y"
#. * below the time in the shell; it should combine the weekday and the
#. * date, e.g. "Tuesday February 17 2015".
#.
#: js/ui/dateMenu.js:83
#: js/ui/dateMenu.js:82
msgid "%A %B %e %Y"
msgstr "%A, %e de %B de %Y"
#: js/ui/dateMenu.js:148
#: js/ui/dateMenu.js:144
msgid "Add world clocks…"
msgstr "Afegeix rellotges del món…"
#: js/ui/dateMenu.js:149
#: js/ui/dateMenu.js:145
msgid "World Clocks"
msgstr "Rellotges del món"
#: js/ui/dateMenu.js:228
#: js/ui/dateMenu.js:224
msgid "Weather"
msgstr "El temps"
@@ -1007,7 +1007,7 @@ msgstr "El temps"
#. 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
#: js/ui/dateMenu.js:286
#, javascript-format
msgid "%s all day."
msgstr "%s tot el dia."
@@ -1016,7 +1016,7 @@ msgstr "%s tot el dia."
#. 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
#: js/ui/dateMenu.js:292
#, javascript-format
msgid "%s, then %s later."
msgstr "%s, llavors %s més tard."
@@ -1025,30 +1025,30 @@ msgstr "%s, llavors %s més tard."
#. 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:304
#: 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:315
#: js/ui/dateMenu.js:309
msgid "Select a location…"
msgstr "Trieu una ubicació…"
#: js/ui/dateMenu.js:318
#: 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:324
#: js/ui/dateMenu.js:318
#, javascript-format
msgid "Feels like %s."
msgstr "Sensació tèrmica de %s."
#: js/ui/dateMenu.js:327
#: 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:329
#: js/ui/dateMenu.js:323
msgid "Weather information is currently unavailable"
msgstr "La informació sobre el temps no està disponible"
@@ -1237,72 +1237,7 @@ msgstr "Denega"
msgid "Allow"
msgstr "Permet"
#: js/ui/kbdA11yDialog.js:33
msgid "Slow Keys Turned On"
msgstr "Tecles lentes actives"
#: js/ui/kbdA11yDialog.js:34
msgid "Slow Keys Turned Off"
msgstr "Tecles lentes inactives"
#: 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 ""
"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 dos 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:59
msgid "Leave On"
msgstr "Deixa-ho actiu"
#: js/ui/kbdA11yDialog.js:59 js/ui/status/bluetooth.js:143
#: js/ui/status/network.js:1287
msgid "Turn On"
msgstr "Activa"
#: js/ui/kbdA11yDialog.js:67 js/ui/status/bluetooth.js:143
#: js/ui/status/network.js:154 js/ui/status/network.js:339
#: js/ui/status/network.js:1287 js/ui/status/network.js:1402
#: 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/kbdA11yDialog.js:67
msgid "Leave Off"
msgstr "Deixa-ho desactivat"
#: js/ui/keyboard.js:739 js/ui/status/keyboard.js:783
#: js/ui/keyboard.js:738 js/ui/status/keyboard.js:782
msgid "Keyboard"
msgstr "Teclat"
@@ -1354,7 +1289,7 @@ msgstr "Mostra el codi font"
msgid "Web Page"
msgstr "Pàgina web"
#: js/ui/messageTray.js:1494
#: js/ui/messageTray.js:1493
msgid "System Information"
msgstr "Informació de l'ordinador"
@@ -1598,35 +1533,46 @@ msgstr "Alt contrast"
msgid "Large Text"
msgstr "Text gran"
#: js/ui/status/bluetooth.js:48
#: js/ui/status/bluetooth.js:47
msgid "Bluetooth"
msgstr "Bluetooth"
#: js/ui/status/bluetooth.js:57 js/ui/status/network.js:616
#: 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:137
#: 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:139
#: js/ui/status/bluetooth.js:138
msgid "Off"
msgstr "Desactivat"
#: js/ui/status/bluetooth.js:141
#: 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:806
#: js/ui/status/keyboard.js:805
msgid "Show Keyboard Layout"
msgstr "Mostra la disposició del teclat"
@@ -1666,19 +1612,19 @@ 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:90
#: js/ui/status/network.js:104
msgid "<unknown>"
msgstr "<desconegut>"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:443 js/ui/status/network.js:1316
#: 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:446
#: js/ui/status/network.js:457
#, javascript-format
msgid "%s Connected"
msgstr "Connectat %s"
@@ -1686,189 +1632,189 @@ 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:451
#: 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:454
#: 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:461 js/ui/status/network.js:1308
#: 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:464
#: 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:472
#: js/ui/status/network.js:483
#, javascript-format
msgid "Firmware Missing For %s"
msgstr "Manca 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:476
#: 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:479
#: js/ui/status/network.js:490
#, javascript-format
msgid "%s Connection Failed"
msgstr "%s ha fallat la connexió"
#: js/ui/status/network.js:495
#: js/ui/status/network.js:506
msgid "Wired Settings"
msgstr "Paràmetres de la xarxa amb fil"
#: js/ui/status/network.js:537
#: 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:580 js/ui/status/network.js:1313
#: 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:584
#: js/ui/status/network.js:595
#, javascript-format
msgid "%s Disabled"
msgstr "%s Inhabilitat"
#: js/ui/status/network.js:624
#: js/ui/status/network.js:635
msgid "Connect to Internet"
msgstr "Connecta a Internet"
#: js/ui/status/network.js:822
#: js/ui/status/network.js:833
msgid "Airplane Mode is On"
msgstr "El mode d'avió és actiu"
#: js/ui/status/network.js:823
#: 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:824
#: js/ui/status/network.js:835
msgid "Turn Off Airplane Mode"
msgstr "Desactiva el mode d'avió"
#: js/ui/status/network.js:833
#: js/ui/status/network.js:844
msgid "Wi-Fi is Off"
msgstr "La xarxa sense fil està desactivada"
#: js/ui/status/network.js:834
#: 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:835
#: js/ui/status/network.js:846
msgid "Turn On Wi-Fi"
msgstr "Activa la xarxa sense fil"
#: js/ui/status/network.js:860
#: js/ui/status/network.js:871
msgid "Wi-Fi Networks"
msgstr "Xarxes sense fil"
#: js/ui/status/network.js:862
#: js/ui/status/network.js:873
msgid "Select a network"
msgstr "Trieu una xarxa"
#: js/ui/status/network.js:892
#: js/ui/status/network.js:903
msgid "No Networks"
msgstr "Cap xarxa"
#: js/ui/status/network.js:913 js/ui/status/rfkill.js:115
#: 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:1179
#: js/ui/status/network.js:1191
msgid "Select Network"
msgstr "Trieu una xarxa"
#: js/ui/status/network.js:1185
#: 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:1304
#: 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:1319
#: js/ui/status/network.js:1331
#, javascript-format
msgid "%s Not Connected"
msgstr "%s no està connectat"
#: js/ui/status/network.js:1419
#: 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:1422
#: js/ui/status/network.js:1438
msgid "authentication required"
msgstr "cal autenticació"
#: js/ui/status/network.js:1424
#: js/ui/status/network.js:1440
msgid "connection failed"
msgstr "ha fallat la connexió"
#: js/ui/status/network.js:1478
#: js/ui/status/network.js:1494
msgid "VPN Settings"
msgstr "Paràmetres de la VPN"
#: js/ui/status/network.js:1491
#: js/ui/status/network.js:1498
msgid "VPN"
msgstr "VPN"
#: js/ui/status/network.js:1501
#: js/ui/status/network.js:1508
msgid "VPN Off"
msgstr "VPN apagada"
#: js/ui/status/network.js:1565 js/ui/status/rfkill.js:93
#: 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:1596
#: 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:1600
#: 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:1604
#: 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:1738
#: js/ui/status/network.js:1759
msgid "Connection failed"
msgstr "Ha fallat la connexió"
#: js/ui/status/network.js:1739
#: js/ui/status/network.js:1760
msgid "Activation of network connection failed"
msgstr "Ha fallat l'activació de la connexió de xarxa"
@@ -2109,19 +2055,19 @@ msgstr "Calendari de l'Evolution"
msgid "evolution"
msgstr "evolution"
#: src/main.c:437
#: src/main.c:380
msgid "Print version"
msgstr "Mostra la versió"
#: src/main.c:443
#: 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:449
#: 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:455
#: src/main.c:398
msgid "List possible modes"
msgstr "Llista els modes possibles"
@@ -2169,18 +2115,6 @@ msgstr[1] "%u entrades"
msgid "System Sounds"
msgstr "Sons del sistema"
#~ msgctxt "search-result"
#~ msgid "Power off"
#~ msgstr "Apaga"
#~ msgctxt "search-result"
#~ msgid "Log out"
#~ msgstr "Desconnecta"
#~ msgctxt "search-result"
#~ msgid "Switch user"
#~ msgstr "Canvia d'usuari"
#~ msgid "Hide tray"
#~ msgstr "Oculta la Safata"

303
po/de.po
View File

@@ -6,7 +6,7 @@
#
# Hendrik Brandt <heb@gnome-de.org>, 2009.
# Hendrik Richter <hendrikr@gnome.org>, 2009-2011.
# Mario Blättermann <mario.blaettermann@gmail.com>, 2009-2013, 2015-2018.
# Mario Blättermann <mario.blaettermann@gmail.com>, 2009-2013, 2015-2017.
# Mario Klug <mario@klug.me>, 2010.
# Jakob Kramer <jakob.kramer@gmx.de>, 2010.
# Paul Seyfert <pseyfert@mathphys.fsk.uni-heidelberg.de>, 2010-2011.
@@ -16,23 +16,22 @@
# Benjamin Steinwender <b@stbe.at>, 2013-2014.
# Bernd Homuth <dev@hmt.im>, 2014-2015, 2016.
# Franco Della-Monica <franco.della.monica@gmail.com>, 2016.
# Tim Sabsch <tim@sabsch.com>, 2018.
#
msgid ""
msgstr ""
"Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2018-01-17 18:05+0000\n"
"PO-Revision-Date: 2018-01-19 22:18+0100\n"
"Last-Translator: Mario Blättermann <mario.blaettermann@gmail.com>\n"
"POT-Creation-Date: 2017-08-26 17:18+0000\n"
"PO-Revision-Date: 2017-08-30 16:48+0200\n"
"Last-Translator: Wolfgang Stoeggl <c72578@yahoo.de>\n"
"Language-Team: Deutsch <gnome-de@gnome.org>\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 2.0.5\n"
"X-Generator: Poedit 2.0.3\n"
#: data/50-gnome-shell-system.xml:6
msgid "System"
@@ -356,7 +355,7 @@ msgstr "Beim Laden des Einstellungsdialogs für %s ist ein Fehler aufgetreten:"
#: 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:925
#: js/ui/shellMountOperation.js:344 js/ui/status/network.js:936
msgid "Cancel"
msgstr "Abbrechen"
@@ -420,18 +419,18 @@ msgstr "(oder wischen Sie mit einem Finger)"
#. Translators: The name of the power-off action in search
#: js/misc/systemActions.js:99
msgctxt "search-result"
msgid "Power Off"
msgid "Power off"
msgstr "Ausschalten"
#. Translators: A list of keywords that match the power-off action, separated by semicolons
#: js/misc/systemActions.js:102
msgid "power off;shutdown;reboot;restart"
msgstr "ausschalten;herunterfahren;neustarten"
msgid "power off;shutdown"
msgstr "ausschalten;herunterfahren"
#. Translators: The name of the lock screen action in search
#: js/misc/systemActions.js:106
msgctxt "search-result"
msgid "Lock Screen"
msgid "Lock screen"
msgstr "Bildschirm sperren"
#. Translators: A list of keywords that match the lock screen action, separated by semicolons
@@ -442,7 +441,7 @@ msgstr "Bildschirm sperren"
#. Translators: The name of the logout action in search
#: js/misc/systemActions.js:113
msgctxt "search-result"
msgid "Log Out"
msgid "Log out"
msgstr "Abmelden"
#. Translators: A list of keywords that match the logout action, separated by semicolons
@@ -464,7 +463,7 @@ msgstr "Bereitschaft;Schlafen"
#. Translators: The name of the switch user action in search
#: js/misc/systemActions.js:127
msgctxt "search-result"
msgid "Switch User"
msgid "Switch user"
msgstr "Benutzer wechseln"
#. Translators: A list of keywords that match the switch user action, separated by semicolons
@@ -475,13 +474,13 @@ msgstr "Benutzer wechseln"
#. Translators: The name of the lock orientation action in search
#: js/misc/systemActions.js:134
msgctxt "search-result"
msgid "Lock Orientation"
msgid "Lock orientation"
msgstr "Hoch-/Querformats-Fixierung"
#. Translators: A list of keywords that match the lock orientation action, separated by semicolons
#: js/misc/systemActions.js:137
msgid "lock orientation;screen;rotation"
msgstr "Hochformat;Querformat;sperren;Bildschirm;Drehung;drehen"
msgid "lock orientation"
msgstr "Hochformat;Querformat;sperren"
#: js/misc/util.js:122
msgid "Command not found"
@@ -655,32 +654,32 @@ msgstr "Häufig"
msgid "All"
msgstr "Alle"
#: js/ui/appDisplay.js:1918
#: js/ui/appDisplay.js:1915
msgid "New Window"
msgstr "Neues Fenster"
#: js/ui/appDisplay.js:1932
#: js/ui/appDisplay.js:1929
msgid "Launch using Dedicated Graphics Card"
msgstr "Mit dedizierter Grafikkarte starten"
#: js/ui/appDisplay.js:1959 js/ui/dash.js:285
#: js/ui/appDisplay.js:1956 js/ui/dash.js:289
msgid "Remove from Favorites"
msgstr "Aus Favoriten entfernen"
#: js/ui/appDisplay.js:1965
#: js/ui/appDisplay.js:1962
msgid "Add to Favorites"
msgstr "Zu Favoriten hinzufügen"
#: js/ui/appDisplay.js:1975
#: js/ui/appDisplay.js:1972
msgid "Show Details"
msgstr "Details anzeigen"
#: js/ui/appFavorites.js:141
#: js/ui/appFavorites.js:140
#, javascript-format
msgid "%s has been added to your favorites."
msgstr "%s wurde zu Ihren Favoriten hinzugefügt"
#: js/ui/appFavorites.js:175
#: js/ui/appFavorites.js:174
#, javascript-format
msgid "%s has been removed from your favorites."
msgstr "%s wurde aus Ihren Favoriten entfernt"
@@ -769,51 +768,51 @@ msgctxt "grid saturday"
msgid "S"
msgstr "S"
#: js/ui/calendar.js:449
#: js/ui/calendar.js:442
msgid "Previous month"
msgstr "Vorheriger Monat"
#: js/ui/calendar.js:459
#: js/ui/calendar.js:452
msgid "Next month"
msgstr "Nächster Monat"
#: js/ui/calendar.js:612
#: js/ui/calendar.js:605
#, no-javascript-format
msgctxt "date day number format"
msgid "%d"
msgstr "%d"
#: js/ui/calendar.js:667
#: js/ui/calendar.js:660
msgid "Week %V"
msgstr "Woche %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:736
#: js/ui/calendar.js:729
msgctxt "event list time"
msgid "All Day"
msgstr "Ganztägig"
#: js/ui/calendar.js:869
#: js/ui/calendar.js:862
msgctxt "calendar heading"
msgid "%A, %B %d"
msgstr "%A, %d. %B"
#: js/ui/calendar.js:873
#: js/ui/calendar.js:866
msgctxt "calendar heading"
msgid "%A, %B %d, %Y"
msgstr "%a, %d. %B %Y"
#: js/ui/calendar.js:1093
#: js/ui/calendar.js:1086
msgid "No Notifications"
msgstr "Keine Benachrichtigungen"
#: js/ui/calendar.js:1096
#: js/ui/calendar.js:1089
msgid "No Events"
msgstr "Keine Termine"
#: js/ui/calendar.js:1124
#: js/ui/calendar.js:1117
msgid "Clear All"
msgstr "Alles leeren"
@@ -847,7 +846,7 @@ msgstr "Externes Laufwerk verbunden"
msgid "External drive disconnected"
msgstr "Externes Laufwerk getrennt"
#: js/ui/components/autorunManager.js:358
#: js/ui/components/autorunManager.js:354
#, javascript-format
msgid "Open with %s"
msgstr "Öffnen mit %s"
@@ -860,8 +859,8 @@ msgstr "Passwort:"
msgid "Type again:"
msgstr "Erneut eingeben:"
#: js/ui/components/networkAgent.js:112 js/ui/status/network.js:245
#: js/ui/status/network.js:338 js/ui/status/network.js:928
#: 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 "Verbinden"
@@ -889,11 +888,11 @@ msgstr "Passwort für geheimen Schlüssel: "
msgid "Service: "
msgstr "Dienst: "
#: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:659
#: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:638
msgid "Authentication required by wireless network"
msgstr "Anmeldung für Drahtlosnetzwerk wird benötigt"
#: js/ui/components/networkAgent.js:293 js/ui/components/networkAgent.js:660
#: 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 "
@@ -902,7 +901,7 @@ msgstr ""
"Passwörter oder Schlüssel sind erforderlich, um auf das Drahtlosnetzwerk "
"»%s« zuzugreifen."
#: js/ui/components/networkAgent.js:297 js/ui/components/networkAgent.js:663
#: js/ui/components/networkAgent.js:297 js/ui/components/networkAgent.js:642
msgid "Wired 802.1X authentication"
msgstr "Kabelgebundene 802.1X-Anmeldung"
@@ -910,15 +909,15 @@ msgstr "Kabelgebundene 802.1X-Anmeldung"
msgid "Network name: "
msgstr "Netzwerkname: "
#: js/ui/components/networkAgent.js:304 js/ui/components/networkAgent.js:667
#: js/ui/components/networkAgent.js:304 js/ui/components/networkAgent.js:646
msgid "DSL authentication"
msgstr "DSL-Anmeldung"
#: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:673
#: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:652
msgid "PIN code required"
msgstr "PIN-Code ist erforderlich"
#: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:674
#: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:653
msgid "PIN code is needed for the mobile broadband device"
msgstr "Für das mobile Breitbandgerät wird ein PIN-Code benötigt."
@@ -926,17 +925,17 @@ msgstr "Für das mobile Breitbandgerät wird ein PIN-Code benötigt."
msgid "PIN: "
msgstr "PIN: "
#: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:680
#: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:659
msgid "Mobile broadband network password"
msgstr "Passwort der mobilen Breitbandverbindung"
#: js/ui/components/networkAgent.js:321 js/ui/components/networkAgent.js:664
#: js/ui/components/networkAgent.js:668 js/ui/components/networkAgent.js:681
#: 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 "Es wird ein Passwort benötigt, um sich mit »%s« zu verbinden."
#: js/ui/components/networkAgent.js:648 js/ui/status/network.js:1699
#: js/ui/components/networkAgent.js:627 js/ui/status/network.js:1720
msgid "Network Manager"
msgstr "Netzwerk-Verwaltung"
@@ -972,21 +971,21 @@ msgstr "%s heißt jetzt %s"
msgid "Windows"
msgstr "Fenster"
#: js/ui/dash.js:246 js/ui/dash.js:287
#: js/ui/dash.js:250 js/ui/dash.js:291
msgid "Show Applications"
msgstr "Anwendungen anzeigen"
# Würde ich so übernehmen, oder evtl. »Dock«.
#. Translators: this is the name of the dock/favorites area on
#. the left of the overview
#: js/ui/dash.js:445
#: 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:76
#: js/ui/dateMenu.js:75
msgid "%B %e %Y"
msgstr "%e. %B %Y"
@@ -994,19 +993,19 @@ msgstr "%e. %B %Y"
#. * below the time in the shell; it should combine the weekday and the
#. * date, e.g. "Tuesday February 17 2015".
#.
#: js/ui/dateMenu.js:83
#: js/ui/dateMenu.js:82
msgid "%A %B %e %Y"
msgstr "%A, %e. %B %Y"
#: js/ui/dateMenu.js:148
#: js/ui/dateMenu.js:144
msgid "Add world clocks…"
msgstr "Weltuhren hinzufügen …"
#: js/ui/dateMenu.js:149
#: js/ui/dateMenu.js:145
msgid "World Clocks"
msgstr "Weltuhren"
#: js/ui/dateMenu.js:228
#: js/ui/dateMenu.js:224
msgid "Weather"
msgstr "Wetter"
@@ -1014,7 +1013,7 @@ msgstr "Wetter"
#. 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
#: js/ui/dateMenu.js:286
#, javascript-format
msgid "%s all day."
msgstr "Ganztägig %s."
@@ -1023,7 +1022,7 @@ msgstr "Ganztägig %s."
#. 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
#: js/ui/dateMenu.js:292
#, javascript-format
msgid "%s, then %s later."
msgstr "%s, später %s."
@@ -1032,30 +1031,30 @@ msgstr "%s, später %s."
#. 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:304
#: js/ui/dateMenu.js:298
#, javascript-format
msgid "%s, then %s, followed by %s later."
msgstr "%s, später %s, gefolgt von %s."
#: js/ui/dateMenu.js:315
#: js/ui/dateMenu.js:309
msgid "Select a location…"
msgstr "Ort auswählen …"
#: js/ui/dateMenu.js:318
#: js/ui/dateMenu.js:312
msgid "Loading…"
msgstr "Wird geladen …"
#. Translators: %s is a temperature with unit, e.g. "23℃"
#: js/ui/dateMenu.js:324
#: js/ui/dateMenu.js:318
#, javascript-format
msgid "Feels like %s."
msgstr "Gefühlt wie %s."
#: js/ui/dateMenu.js:327
#: js/ui/dateMenu.js:321
msgid "Go online for weather information"
msgstr "Gehen Sie Online, um Wetterinformationen beziehen zu können"
#: js/ui/dateMenu.js:329
#: js/ui/dateMenu.js:323
msgid "Weather information is currently unavailable"
msgstr "Wetterinformationen sind momentan nicht verfügbar"
@@ -1241,72 +1240,7 @@ msgstr "Ablehnen"
msgid "Allow"
msgstr "Zulassen"
#: js/ui/kbdA11yDialog.js:33
msgid "Slow Keys Turned On"
msgstr "Tastenverzögerung eingeschaltet"
#: js/ui/kbdA11yDialog.js:34
msgid "Slow Keys Turned Off"
msgstr "Tastenverzögerung ausgeschaltet"
#: 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 ""
"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:59
msgid "Leave On"
msgstr "Eingeschaltet lassen"
#: js/ui/kbdA11yDialog.js:59 js/ui/status/bluetooth.js:143
#: js/ui/status/network.js:1287
msgid "Turn On"
msgstr "Einschalten"
#: js/ui/kbdA11yDialog.js:67 js/ui/status/bluetooth.js:143
#: js/ui/status/network.js:154 js/ui/status/network.js:339
#: js/ui/status/network.js:1287 js/ui/status/network.js:1402
#: js/ui/status/nightLight.js:47 js/ui/status/rfkill.js:90
#: js/ui/status/rfkill.js:117
msgid "Turn Off"
msgstr "Ausschalten"
#: js/ui/kbdA11yDialog.js:67
msgid "Leave Off"
msgstr "Ausgeschaltet lassen"
#: js/ui/keyboard.js:739 js/ui/status/keyboard.js:783
#: js/ui/keyboard.js:738 js/ui/status/keyboard.js:782
msgid "Keyboard"
msgstr "Tastatur"
@@ -1358,7 +1292,7 @@ msgstr "Quelle zeigen"
msgid "Web Page"
msgstr "Webseite"
#: js/ui/messageTray.js:1494
#: js/ui/messageTray.js:1493
msgid "System Information"
msgstr "Systeminformationen"
@@ -1605,35 +1539,46 @@ msgstr "Hoher Kontrast"
msgid "Large Text"
msgstr "Große Schrift"
#: js/ui/status/bluetooth.js:48
#: js/ui/status/bluetooth.js:47
msgid "Bluetooth"
msgstr "Bluetooth"
#: js/ui/status/bluetooth.js:57 js/ui/status/network.js:616
#: js/ui/status/bluetooth.js:56 js/ui/status/network.js:627
msgid "Bluetooth Settings"
msgstr "Bluetooth-Einstellungen"
#. Translators: this is the number of connected bluetooth devices
#: js/ui/status/bluetooth.js:137
#: js/ui/status/bluetooth.js:136
#, javascript-format
msgid "%d Connected"
msgid_plural "%d Connected"
msgstr[0] "%d verbunden"
msgstr[1] "%d verbunden"
#: js/ui/status/bluetooth.js:139
#: js/ui/status/bluetooth.js:138
msgid "Off"
msgstr "Aus"
#: js/ui/status/bluetooth.js:141
#: js/ui/status/bluetooth.js:140
msgid "On"
msgstr "An"
#: js/ui/status/bluetooth.js:142 js/ui/status/network.js:1299
msgid "Turn On"
msgstr "Einschalten"
#: 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 "Ausschalten"
#: js/ui/status/brightness.js:44
msgid "Brightness"
msgstr "Helligkeit"
#: js/ui/status/keyboard.js:806
#: js/ui/status/keyboard.js:805
msgid "Show Keyboard Layout"
msgstr "Tastaturbelegung anzeigen"
@@ -1673,18 +1618,18 @@ msgstr ""
"Standortzugriff kann in den Einstellungen zur Privatsphäre jederzeit "
"geändert werden."
#: js/ui/status/network.js:90
#: js/ui/status/network.js:104
msgid "<unknown>"
msgstr "<Unbekannt>"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:443 js/ui/status/network.js:1316
#: js/ui/status/network.js:454 js/ui/status/network.js:1328
#, javascript-format
msgid "%s Off"
msgstr "%s ausgeschaltet"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:446
#: js/ui/status/network.js:457
#, javascript-format
msgid "%s Connected"
msgstr "%s verbunden"
@@ -1692,93 +1637,93 @@ msgstr "%s verbunden"
#. 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
#: js/ui/status/network.js:462
#, javascript-format
msgid "%s Unmanaged"
msgstr "%s nicht verwaltet"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:454
#: js/ui/status/network.js:465
#, javascript-format
msgid "%s Disconnecting"
msgstr "%s wird getrennt"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:461 js/ui/status/network.js:1308
#: js/ui/status/network.js:472 js/ui/status/network.js:1320
#, javascript-format
msgid "%s Connecting"
msgstr "%s wird verbunden"
#. 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
#: js/ui/status/network.js:475
#, javascript-format
msgid "%s Requires Authentication"
msgstr "%s erfordert eine Anmeldung"
#. 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
#: js/ui/status/network.js:483
#, javascript-format
msgid "Firmware Missing For %s"
msgstr "Firmware fehlt für %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
#: js/ui/status/network.js:487
#, javascript-format
msgid "%s Unavailable"
msgstr "%s nicht verfügbar"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:479
#: js/ui/status/network.js:490
#, javascript-format
msgid "%s Connection Failed"
msgstr "Verbindung von %s gescheitert"
#: js/ui/status/network.js:495
#: js/ui/status/network.js:506
msgid "Wired Settings"
msgstr "LAN-Einstellungen"
#: js/ui/status/network.js:537
#: js/ui/status/network.js:548
msgid "Mobile Broadband Settings"
msgstr "Einstellungen der mobilen Breitbandverbindung"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:580 js/ui/status/network.js:1313
#: js/ui/status/network.js:591 js/ui/status/network.js:1325
#, javascript-format
msgid "%s Hardware Disabled"
msgstr "%s-Hardware ausgeschaltet"
#. 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
#: js/ui/status/network.js:595
#, javascript-format
msgid "%s Disabled"
msgstr "%s ausgeschaltet"
#: js/ui/status/network.js:624
#: js/ui/status/network.js:635
msgid "Connect to Internet"
msgstr "Mit dem Internet verbinden"
#: js/ui/status/network.js:822
#: js/ui/status/network.js:833
msgid "Airplane Mode is On"
msgstr "Flugmodus ist eingeschaltet"
#: js/ui/status/network.js:823
#: js/ui/status/network.js:834
msgid "Wi-Fi is disabled when airplane mode is on."
msgstr ""
"Drahtlosnetzwerk ist ausgeschaltet, wenn sich Ihr Gerät im Flugmodus "
"befindet."
#: js/ui/status/network.js:824
#: js/ui/status/network.js:835
msgid "Turn Off Airplane Mode"
msgstr "Flugmodus ausschalten"
#: js/ui/status/network.js:833
#: js/ui/status/network.js:844
msgid "Wi-Fi is Off"
msgstr "Drahtlosnetzwerk ist ausgeschaltet"
#: js/ui/status/network.js:834
#: js/ui/status/network.js:845
msgid "Wi-Fi needs to be turned on in order to connect to a network."
msgstr ""
"Drahtlosnetzwerk muss eingeschaltet werden, um eine Netzwerkverbindung "
@@ -1787,101 +1732,101 @@ msgstr ""
# Wi-Fi einschalten
# oder
# Schalten sie Wi-Fi ein
#: js/ui/status/network.js:835
#: js/ui/status/network.js:846
msgid "Turn On Wi-Fi"
msgstr "Drahtlosnetzwerk einschalten"
#: js/ui/status/network.js:860
#: js/ui/status/network.js:871
msgid "Wi-Fi Networks"
msgstr "Drahtlosnetzwerke"
#: js/ui/status/network.js:862
#: js/ui/status/network.js:873
msgid "Select a network"
msgstr "Wählen Sie ein Netzwerk"
#: js/ui/status/network.js:892
#: js/ui/status/network.js:903
msgid "No Networks"
msgstr "Keine Netzwerke"
#: js/ui/status/network.js:913 js/ui/status/rfkill.js:115
#: js/ui/status/network.js:924 js/ui/status/rfkill.js:115
msgid "Use hardware switch to turn off"
msgstr "Benutzen Sie zum Ausschalten den Gehäuseschalter"
#: js/ui/status/network.js:1179
#: js/ui/status/network.js:1191
msgid "Select Network"
msgstr "Wählen Sie ein Netzwerk aus"
#: js/ui/status/network.js:1185
#: js/ui/status/network.js:1197
msgid "Wi-Fi Settings"
msgstr "Drahtlosnetzwerk-Einstellungen"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1304
#: js/ui/status/network.js:1316
#, javascript-format
msgid "%s Hotspot Active"
msgstr "Hotspot %s eingeschaltet"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1319
#: js/ui/status/network.js:1331
#, javascript-format
msgid "%s Not Connected"
msgstr "%s nicht verbunden"
#: js/ui/status/network.js:1419
#: js/ui/status/network.js:1435
msgid "connecting…"
msgstr "Verbindungsaufbau …"
#. Translators: this is for network connections that require some kind of key or password
#: js/ui/status/network.js:1422
#: js/ui/status/network.js:1438
msgid "authentication required"
msgstr "Anmeldung erforderlich"
#: js/ui/status/network.js:1424
#: js/ui/status/network.js:1440
msgid "connection failed"
msgstr "Verbindung gescheitert"
#: js/ui/status/network.js:1478
#: js/ui/status/network.js:1494
msgid "VPN Settings"
msgstr "VPN-Einstellungen"
#: js/ui/status/network.js:1491
#: js/ui/status/network.js:1498
msgid "VPN"
msgstr "VPN"
#: js/ui/status/network.js:1501
#: js/ui/status/network.js:1508
msgid "VPN Off"
msgstr "VPN ausgeschaltet"
#: js/ui/status/network.js:1565 js/ui/status/rfkill.js:93
#: js/ui/status/network.js:1572 js/ui/status/rfkill.js:93
msgid "Network Settings"
msgstr "Netzwerkeinstellungen"
#: js/ui/status/network.js:1596
#: js/ui/status/network.js:1603
#, javascript-format
msgid "%s Wired Connection"
msgid_plural "%s Wired Connections"
msgstr[0] "%s Kabelverbindung"
msgstr[1] "%s Kabelverbindungen"
#: js/ui/status/network.js:1600
#: js/ui/status/network.js:1607
#, javascript-format
msgid "%s Wi-Fi Connection"
msgid_plural "%s Wi-Fi Connections"
msgstr[0] "%s Funknetzwerkverbindung"
msgstr[1] "%s Funknetzwerkverbindungen"
#: js/ui/status/network.js:1604
#: js/ui/status/network.js:1611
#, javascript-format
msgid "%s Modem Connection"
msgid_plural "%s Modem Connections"
msgstr[0] "%s Modem-Verbindung"
msgstr[1] "%s Modem-Verbindungen"
#: js/ui/status/network.js:1738
#: js/ui/status/network.js:1759
msgid "Connection failed"
msgstr "Verbindung gescheitert"
#: js/ui/status/network.js:1739
#: js/ui/status/network.js:1760
msgid "Activation of network connection failed"
msgstr "Aktivierung der Netzwerkverbindung ist gescheitert"
@@ -2123,21 +2068,21 @@ msgstr "Evolution-Kalender"
msgid "evolution"
msgstr "evolution"
#: src/main.c:437
#: src/main.c:380
msgid "Print version"
msgstr "Version ausgeben"
#: src/main.c:443
#: src/main.c:386
msgid "Mode used by GDM for login screen"
msgstr "Der durch GDM im Anmeldefenster verwendete Modus"
#: src/main.c:449
#: src/main.c:392
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:455
#: src/main.c:398
msgid "List possible modes"
msgstr "Die möglichen Modi auflisten"

370
po/es.po
View File

@@ -3,14 +3,15 @@
# This file is distributed under the same license as the gnome-shell package.
# Jorge González <jorgegonz@svn.gnome.org>, 2009, 2010, 2011.
# Benjamín Valero Espinosa <benjavalero@gmail.com>, 2011.
# Daniel Mustieles <daniel.mustieles@gmail.com>, 2010-2017, 2017, 2018.
# Daniel Mustieles <daniel.mustieles@gmail.com>, 2010-2017, 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: 2018-02-06 01:15+0000\n"
"PO-Revision-Date: 2018-02-06 13:22+0100\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-08-22 11:17+0000\n"
"PO-Revision-Date: 2017-08-22 13:38+0200\n"
"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
"Language-Team: es <gnome-es-list@gnome.org>\n"
"Language: es\n"
@@ -348,7 +349,7 @@ msgstr "Hubo un error al lanzar el diálogo de preferencias para %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:925
#: js/ui/shellMountOperation.js:344 js/ui/status/network.js:936
msgid "Cancel"
msgstr "Cancelar"
@@ -411,30 +412,34 @@ msgstr "(o pase el dedo)"
#. Translators: The name of the power-off action in search
#: js/misc/systemActions.js:99
#| msgid "Power Off"
msgctxt "search-result"
msgid "Power Off"
msgid "Power off"
msgstr "Apagar"
#. Translators: A list of keywords that match the power-off action, separated by semicolons
#: js/misc/systemActions.js:102
msgid "power off;shutdown;reboot;restart"
msgstr "apagar;apagado;reinicio;reiniciar"
msgid "power off;shutdown"
msgstr "apagar;apagado"
#. Translators: The name of the lock screen action in search
#: js/misc/systemActions.js:106
#| msgid "Lock Screen"
msgctxt "search-result"
msgid "Lock Screen"
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:109
#| msgid "Lock Screen"
msgid "lock screen"
msgstr "bloquear;pantalla"
#. Translators: The name of the logout action in search
#: js/misc/systemActions.js:113
#| msgid "Log Out"
msgctxt "search-result"
msgid "Log Out"
msgid "Log out"
msgstr "Cerrar la sesión"
#. Translators: A list of keywords that match the logout action, separated by semicolons
@@ -444,36 +449,42 @@ msgstr "cerrar;sesión;salir"
#. Translators: The name of the suspend action in search
#: js/misc/systemActions.js:120
#| msgid "Suspend"
msgctxt "search-result"
msgid "Suspend"
msgstr "Suspender"
#. Translators: A list of keywords that match the suspend action, separated by semicolons
#: js/misc/systemActions.js:123
#| msgid "Suspend"
msgid "suspend;sleep"
msgstr "suspender;dormir"
#. Translators: The name of the switch user action in search
#: js/misc/systemActions.js:127
#| msgid "Switch User"
msgctxt "search-result"
msgid "Switch User"
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:130
#| msgid "Switch User"
msgid "switch user"
msgstr "cambiar;usuario"
#. Translators: The name of the lock orientation action in search
#: js/misc/systemActions.js:134
#| msgid "Orientation Lock"
msgctxt "search-result"
msgid "Lock Orientation"
msgstr "Bloquear la orientación"
msgid "Lock orientation"
msgstr "Bloqueo de orientación"
#. Translators: A list of keywords that match the lock orientation action, separated by semicolons
#: js/misc/systemActions.js:137
msgid "lock orientation;screen;rotation"
msgstr "bloqueo;orientación;pantalla"
#| msgid "Clock Format"
msgid "lock orientation"
msgstr "bloqueo;orientación"
#: js/misc/util.js:122
msgid "Command not found"
@@ -645,32 +656,32 @@ msgstr "Frecuentes"
msgid "All"
msgstr "Todas"
#: js/ui/appDisplay.js:1918
#: js/ui/appDisplay.js:1915
msgid "New Window"
msgstr "Ventana nueva"
#: js/ui/appDisplay.js:1932
#: js/ui/appDisplay.js:1929
msgid "Launch using Dedicated Graphics Card"
msgstr "Lanzar usando la tarjeta gráfica dedicada"
#: js/ui/appDisplay.js:1959 js/ui/dash.js:285
#: js/ui/appDisplay.js:1956 js/ui/dash.js:289
msgid "Remove from Favorites"
msgstr "Quitar de los favoritos"
#: js/ui/appDisplay.js:1965
#: js/ui/appDisplay.js:1962
msgid "Add to Favorites"
msgstr "Añadir a los favoritos"
#: js/ui/appDisplay.js:1975
#: js/ui/appDisplay.js:1972
msgid "Show Details"
msgstr "Mostrar detalles"
#: js/ui/appFavorites.js:141
#: js/ui/appFavorites.js:140
#, javascript-format
msgid "%s has been added to your favorites."
msgstr "Se ha añadido %s a sus favoritos."
#: js/ui/appFavorites.js:175
#: js/ui/appFavorites.js:174
#, javascript-format
msgid "%s has been removed from your favorites."
msgstr "Se ha quitado %s de sus favoritos."
@@ -759,51 +770,51 @@ msgctxt "grid saturday"
msgid "S"
msgstr "S"
#: js/ui/calendar.js:449
#: js/ui/calendar.js:442
msgid "Previous month"
msgstr "Mes anterior"
#: js/ui/calendar.js:459
#: js/ui/calendar.js:452
msgid "Next month"
msgstr "Siguiente mes"
#: js/ui/calendar.js:612
#: js/ui/calendar.js:605
#, no-javascript-format
msgctxt "date day number format"
msgid "%d"
msgstr "%d"
#: js/ui/calendar.js:667
#: js/ui/calendar.js:660
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:736
#: js/ui/calendar.js:729
msgctxt "event list time"
msgid "All Day"
msgstr "Todo el día"
#: js/ui/calendar.js:869
#: js/ui/calendar.js:862
msgctxt "calendar heading"
msgid "%A, %B %d"
msgstr "%A, %d de %B"
#: js/ui/calendar.js:873
#: js/ui/calendar.js:866
msgctxt "calendar heading"
msgid "%A, %B %d, %Y"
msgstr "%A, %d de %B de %Y"
#: js/ui/calendar.js:1093
#: js/ui/calendar.js:1086
msgid "No Notifications"
msgstr "No hay notificaciones"
#: js/ui/calendar.js:1096
#: js/ui/calendar.js:1089
msgid "No Events"
msgstr "No hay eventos"
#: js/ui/calendar.js:1124
#: js/ui/calendar.js:1117
msgid "Clear All"
msgstr "Limpiar todo"
@@ -837,7 +848,7 @@ msgstr "Dispositivo externo conectado"
msgid "External drive disconnected"
msgstr "Dispositivo externo desconectado"
#: js/ui/components/autorunManager.js:358
#: js/ui/components/autorunManager.js:354
#, javascript-format
msgid "Open with %s"
msgstr "Abrir con %s"
@@ -850,8 +861,8 @@ msgstr "Contraseña:"
msgid "Type again:"
msgstr "Escriba de nuevo:"
#: js/ui/components/networkAgent.js:112 js/ui/status/network.js:245
#: js/ui/status/network.js:338 js/ui/status/network.js:928
#: 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 "Conectar"
@@ -879,11 +890,11 @@ msgstr "Contraseña de la clave privada:"
msgid "Service: "
msgstr "Servicio:"
#: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:659
#: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:638
msgid "Authentication required by wireless network"
msgstr "La red inalámbrica requiere autenticación"
#: js/ui/components/networkAgent.js:293 js/ui/components/networkAgent.js:660
#: 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 "
@@ -892,7 +903,7 @@ msgstr ""
"Se necesitan contraseñas o claves de cifrado para acceder a la red "
"inalámbrica «%s»."
#: js/ui/components/networkAgent.js:297 js/ui/components/networkAgent.js:663
#: js/ui/components/networkAgent.js:297 js/ui/components/networkAgent.js:642
msgid "Wired 802.1X authentication"
msgstr "Autenticación 802.1X cableada"
@@ -900,15 +911,15 @@ msgstr "Autenticación 802.1X cableada"
msgid "Network name: "
msgstr "Nombre de la red: "
#: js/ui/components/networkAgent.js:304 js/ui/components/networkAgent.js:667
#: js/ui/components/networkAgent.js:304 js/ui/components/networkAgent.js:646
msgid "DSL authentication"
msgstr "Autenticación DSL"
#: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:673
#: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:652
msgid "PIN code required"
msgstr "Código PIN requerido"
#: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:674
#: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:653
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"
@@ -916,17 +927,17 @@ msgstr "Se necesita un código PIN para el dispositivo de banda ancha móvil"
msgid "PIN: "
msgstr "PIN: "
#: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:680
#: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:659
msgid "Mobile broadband network password"
msgstr "Contraseña de la red de banda ancha móvil"
#: js/ui/components/networkAgent.js:321 js/ui/components/networkAgent.js:664
#: js/ui/components/networkAgent.js:668 js/ui/components/networkAgent.js:681
#: 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 "Se requiere una contraseña para conectarse a «%s»."
#: js/ui/components/networkAgent.js:648 js/ui/status/network.js:1699
#: js/ui/components/networkAgent.js:627 js/ui/status/network.js:1720
msgid "Network Manager"
msgstr "Gestor de la red"
@@ -961,20 +972,20 @@ msgstr "Ahora %s se llama %s"
msgid "Windows"
msgstr "Ventanas"
#: js/ui/dash.js:246 js/ui/dash.js:287
#: js/ui/dash.js:250 js/ui/dash.js:291
msgid "Show Applications"
msgstr "Mostrar aplicaciones"
#. Translators: this is the name of the dock/favorites area on
#. the left of the overview
#: js/ui/dash.js:445
#: 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:76
#: js/ui/dateMenu.js:75
msgid "%B %e %Y"
msgstr "%B %e %Y"
@@ -982,19 +993,19 @@ msgstr "%B %e %Y"
#. * below the time in the shell; it should combine the weekday and the
#. * date, e.g. "Tuesday February 17 2015".
#.
#: js/ui/dateMenu.js:83
#: js/ui/dateMenu.js:82
msgid "%A %B %e %Y"
msgstr "%A %e de %B de %Y"
#: js/ui/dateMenu.js:148
#: js/ui/dateMenu.js:144
msgid "Add world clocks…"
msgstr "Añadir relojes del mundo…"
#: js/ui/dateMenu.js:149
#: js/ui/dateMenu.js:145
msgid "World Clocks"
msgstr "Relojes del mundo"
#: js/ui/dateMenu.js:228
#: js/ui/dateMenu.js:224
msgid "Weather"
msgstr "Meteorología"
@@ -1002,7 +1013,7 @@ msgstr "Meteorología"
#. 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
#: js/ui/dateMenu.js:286
#, javascript-format
msgid "%s all day."
msgstr "%s todo el día."
@@ -1011,7 +1022,7 @@ msgstr "%s todo el día."
#. 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
#: js/ui/dateMenu.js:292
#, javascript-format
msgid "%s, then %s later."
msgstr "%s, luego %s."
@@ -1020,30 +1031,30 @@ msgstr "%s, luego %s."
#. 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:304
#: js/ui/dateMenu.js:298
#, javascript-format
msgid "%s, then %s, followed by %s later."
msgstr "%s, luego %s seguido de %s."
#: js/ui/dateMenu.js:315
#: js/ui/dateMenu.js:309
msgid "Select a location…"
msgstr "Seleccionar ubicación…"
#: js/ui/dateMenu.js:318
#: js/ui/dateMenu.js:312
msgid "Loading…"
msgstr "Cargando…"
#. Translators: %s is a temperature with unit, e.g. "23℃"
#: js/ui/dateMenu.js:324
#: js/ui/dateMenu.js:318
#, javascript-format
msgid "Feels like %s."
msgstr "Sensación térmica de %s."
#: js/ui/dateMenu.js:327
#: js/ui/dateMenu.js:321
msgid "Go online for weather information"
msgstr "Conectarse para obtener la información meteorológica"
#: js/ui/dateMenu.js:329
#: js/ui/dateMenu.js:323
msgid "Weather information is currently unavailable"
msgstr "La información meteorológica no está disponible actualmente."
@@ -1229,74 +1240,9 @@ msgstr "Denegar"
msgid "Allow"
msgstr "Permitir"
#: js/ui/kbdA11yDialog.js:33
msgid "Slow Keys Turned On"
msgstr "Teclas lentas activadas"
#: js/ui/kbdA11yDialog.js:34
msgid "Slow Keys Turned Off"
msgstr "Teclas lentas desactivadas"
#: 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 ""
"Acaba de pulsar la tecla «Mayúsculas» durante 8 segundos. Ésta es la "
"combinación de teclas 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:59
msgid "Leave On"
msgstr "Dejar activada"
#: js/ui/kbdA11yDialog.js:59 js/ui/status/bluetooth.js:143
#: js/ui/status/network.js:1287
msgid "Turn On"
msgstr "Encender"
#: js/ui/kbdA11yDialog.js:67 js/ui/status/bluetooth.js:143
#: js/ui/status/network.js:154 js/ui/status/network.js:339
#: js/ui/status/network.js:1287 js/ui/status/network.js:1402
#: js/ui/status/nightLight.js:47 js/ui/status/rfkill.js:90
#: js/ui/status/rfkill.js:117
msgid "Turn Off"
msgstr "Apagar"
#: js/ui/kbdA11yDialog.js:67
msgid "Leave Off"
msgstr "Dejar desactivada"
#: js/ui/keyboard.js:198
msgid "Region & Language Settings"
msgstr "Configuración de región e idioma"
#: js/ui/keyboard.js:738 js/ui/status/keyboard.js:782
msgid "Keyboard"
msgstr "Teclado"
#: js/ui/lookingGlass.js:642
msgid "No extensions installed"
@@ -1346,7 +1292,7 @@ msgstr "Ver fuente"
msgid "Web Page"
msgstr "Página web"
#: js/ui/messageTray.js:1494
#: js/ui/messageTray.js:1493
msgid "System Information"
msgstr "Información del sistema"
@@ -1435,7 +1381,7 @@ msgctxt "System menu in the top bar"
msgid "System"
msgstr "Sistema"
#: js/ui/panel.js:814
#: js/ui/panel.js:812
msgid "Top Bar"
msgstr "Barra superior"
@@ -1517,6 +1463,7 @@ msgstr "No se encontraron resultados."
#: js/ui/search.js:777
#, javascript-format
#| msgid "%d more"
msgid "%d more"
msgid_plural "%d more"
msgstr[0] "%d más"
@@ -1590,39 +1537,46 @@ msgstr "Contraste alto"
msgid "Large Text"
msgstr "Texto grande"
#: js/ui/status/bluetooth.js:48
#: js/ui/status/bluetooth.js:47
msgid "Bluetooth"
msgstr "Bluetooth"
#: js/ui/status/bluetooth.js:57 js/ui/status/network.js:616
#: js/ui/status/bluetooth.js:56 js/ui/status/network.js:627
msgid "Bluetooth Settings"
msgstr "Configuración de Bluetooth"
#. Translators: this is the number of connected bluetooth devices
#: js/ui/status/bluetooth.js:137
#: js/ui/status/bluetooth.js:136
#, javascript-format
msgid "%d Connected"
msgid_plural "%d Connected"
msgstr[0] "%d conectado"
msgstr[1] "%d conectados"
#: js/ui/status/bluetooth.js:139
#: js/ui/status/bluetooth.js:138
msgid "Off"
msgstr "Desconectado"
#: js/ui/status/bluetooth.js:141
#: js/ui/status/bluetooth.js:140
msgid "On"
msgstr "Encender"
#: js/ui/status/bluetooth.js:142 js/ui/status/network.js:1299
msgid "Turn On"
msgstr "Encender"
#: 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 "Apagar"
#: js/ui/status/brightness.js:44
msgid "Brightness"
msgstr "Brillo"
#: js/ui/status/keyboard.js:783
msgid "Keyboard"
msgstr "Teclado"
#: js/ui/status/keyboard.js:806
#: js/ui/status/keyboard.js:805
msgid "Show Keyboard Layout"
msgstr "Mostrar la distribución del teclado"
@@ -1662,18 +1616,18 @@ msgstr ""
"Los servicios de ubicación se pueden cambiar en cualquier momento desde la "
"configuración de privacidad."
#: js/ui/status/network.js:90
#: js/ui/status/network.js:104
msgid "<unknown>"
msgstr "<desconocido>"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:443 js/ui/status/network.js:1316
#: js/ui/status/network.js:454 js/ui/status/network.js:1328
#, javascript-format
msgid "%s Off"
msgstr "%s apagada"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:446
#: js/ui/status/network.js:457
#, javascript-format
msgid "%s Connected"
msgstr "%s conectada"
@@ -1681,189 +1635,189 @@ msgstr "%s conectada"
#. 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
#: js/ui/status/network.js:462
#, javascript-format
msgid "%s Unmanaged"
msgstr "%s sin gestionar"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:454
#: js/ui/status/network.js:465
#, javascript-format
msgid "%s Disconnecting"
msgstr "Desconectando %s"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:461 js/ui/status/network.js:1308
#: js/ui/status/network.js:472 js/ui/status/network.js:1320
#, javascript-format
msgid "%s Connecting"
msgstr "Conectando %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:464
#: js/ui/status/network.js:475
#, javascript-format
msgid "%s Requires Authentication"
msgstr "%s requiere autenticación"
#. 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
#: js/ui/status/network.js:483
#, javascript-format
msgid "Firmware Missing For %s"
msgstr "Falta el «firmware» para %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
#: 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:479
#: js/ui/status/network.js:490
#, javascript-format
msgid "%s Connection Failed"
msgstr "Falló la conexión %s"
#: js/ui/status/network.js:495
#: js/ui/status/network.js:506
msgid "Wired Settings"
msgstr "Configuración de red cableada"
#: js/ui/status/network.js:537
#: js/ui/status/network.js:548
msgid "Mobile Broadband Settings"
msgstr "Configuración de banda ancha móvil"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:580 js/ui/status/network.js:1313
#: js/ui/status/network.js:591 js/ui/status/network.js:1325
#, javascript-format
msgid "%s Hardware Disabled"
msgstr "Hardware %s desactivado"
#. 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
#: js/ui/status/network.js:595
#, javascript-format
msgid "%s Disabled"
msgstr "%s desactivado"
#: js/ui/status/network.js:624
#: js/ui/status/network.js:635
msgid "Connect to Internet"
msgstr "Conectar a Internet"
#: js/ui/status/network.js:822
#: js/ui/status/network.js:833
msgid "Airplane Mode is On"
msgstr "El modo avión está activado"
#: js/ui/status/network.js:823
#: js/ui/status/network.js:834
msgid "Wi-Fi is disabled when airplane mode is on."
msgstr "La Wi-Fi se desactiva cuando se activa el modo avión."
#: js/ui/status/network.js:824
#: js/ui/status/network.js:835
msgid "Turn Off Airplane Mode"
msgstr "Apagar el modo avión"
#: js/ui/status/network.js:833
#: js/ui/status/network.js:844
msgid "Wi-Fi is Off"
msgstr "La Wi-Fi está desactivada"
#: js/ui/status/network.js:834
#: js/ui/status/network.js:845
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."
#: js/ui/status/network.js:835
#: js/ui/status/network.js:846
msgid "Turn On Wi-Fi"
msgstr "Activar la Wi-Fi"
#: js/ui/status/network.js:860
#: js/ui/status/network.js:871
msgid "Wi-Fi Networks"
msgstr "Redes Wi-Fi"
#: js/ui/status/network.js:862
#: js/ui/status/network.js:873
msgid "Select a network"
msgstr "Seleccionar una red"
#: js/ui/status/network.js:892
#: js/ui/status/network.js:903
msgid "No Networks"
msgstr "No hay redes"
#: js/ui/status/network.js:913 js/ui/status/rfkill.js:115
#: js/ui/status/network.js:924 js/ui/status/rfkill.js:115
msgid "Use hardware switch to turn off"
msgstr "Usar el interruptor hardware para apagar"
#: js/ui/status/network.js:1179
#: js/ui/status/network.js:1191
msgid "Select Network"
msgstr "Seleccionar red"
#: js/ui/status/network.js:1185
#: js/ui/status/network.js:1197
msgid "Wi-Fi Settings"
msgstr "Configuración de Wi-Fi"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1304
#: js/ui/status/network.js:1316
#, javascript-format
msgid "%s Hotspot Active"
msgstr "Punto de acceso %s activo"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1319
#: js/ui/status/network.js:1331
#, javascript-format
msgid "%s Not Connected"
msgstr "%s no conectado"
#: js/ui/status/network.js:1419
#: js/ui/status/network.js:1435
msgid "connecting…"
msgstr "conectando…"
#. Translators: this is for network connections that require some kind of key or password
#: js/ui/status/network.js:1422
#: js/ui/status/network.js:1438
msgid "authentication required"
msgstr "se necesita autenticación"
#: js/ui/status/network.js:1424
#: js/ui/status/network.js:1440
msgid "connection failed"
msgstr "falló la conexión"
#: js/ui/status/network.js:1478
#: js/ui/status/network.js:1494
msgid "VPN Settings"
msgstr "Configuración de VPN"
#: js/ui/status/network.js:1491
#: js/ui/status/network.js:1498
msgid "VPN"
msgstr "VPN"
#: js/ui/status/network.js:1501
#: js/ui/status/network.js:1508
msgid "VPN Off"
msgstr "VPN apagada"
#: js/ui/status/network.js:1565 js/ui/status/rfkill.js:93
#: js/ui/status/network.js:1572 js/ui/status/rfkill.js:93
msgid "Network Settings"
msgstr "Configuración de la red"
#: js/ui/status/network.js:1596
#: js/ui/status/network.js:1603
#, javascript-format
msgid "%s Wired Connection"
msgid_plural "%s Wired Connections"
msgstr[0] "%s conexión cableada"
msgstr[1] "%s conexiones cableadas"
#: js/ui/status/network.js:1600
#: js/ui/status/network.js:1607
#, 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"
#: js/ui/status/network.js:1604
#: js/ui/status/network.js:1611
#, javascript-format
msgid "%s Modem Connection"
msgid_plural "%s Modem Connections"
msgstr[0] "%s conexión por módem"
msgstr[1] "%s conexiones por módem"
#: js/ui/status/network.js:1738
#: js/ui/status/network.js:1759
msgid "Connection failed"
msgstr "Falló la conexión"
#: js/ui/status/network.js:1739
#: js/ui/status/network.js:1760
msgid "Activation of network connection failed"
msgstr "Falló la activación de la conexión de red"
@@ -1945,32 +1899,6 @@ msgstr "Suspender"
msgid "Power Off"
msgstr "Apagar"
#: js/ui/status/thunderbolt.js:272
msgid "Thunderbolt"
msgstr "Thunderbolt"
#. we are done
#: js/ui/status/thunderbolt.js:330
msgid "Unknown Thunderbolt device"
msgstr "Dispositivo Thunderbolt desconocido"
#: js/ui/status/thunderbolt.js:331
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:336
msgid "Thunderbolt authorization error"
msgstr "Error de autorización de Thunderbolt"
#: js/ui/status/thunderbolt.js:337
#, javascript-format
msgid "Could not authorize the thunderbolt device: %s"
msgstr "No se pudo autorizar el dispositivo Thunderbolt: %s"
#: js/ui/status/volume.js:128
msgid "Volume changed"
msgstr "Volumen modificado"
@@ -1983,6 +1911,7 @@ msgstr "Volumen"
#. * Try to keep it under around 15 characters.
#.
#: js/ui/switchMonitor.js:21
#| msgid "Error"
msgid "Mirror"
msgstr "Espejo"
@@ -1990,6 +1919,7 @@ msgstr "Espejo"
#. * Try to keep it under around 15 characters.
#.
#: js/ui/switchMonitor.js:26
#| msgid "Panel Display"
msgid "Join Displays"
msgstr "Unir pantallas"
@@ -2130,21 +2060,21 @@ msgstr "Calendario de Evolution"
msgid "evolution"
msgstr "evolution"
#: src/main.c:432
#: src/main.c:380
msgid "Print version"
msgstr "Imprimir versión"
#: src/main.c:438
#: src/main.c:386
msgid "Mode used by GDM for login screen"
msgstr "Modo usado por GDM para la pantalla de inicio"
#: src/main.c:444
#: src/main.c:392
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:450
#: src/main.c:398
msgid "List possible modes"
msgstr "Listar los modos posibles"
@@ -2192,21 +2122,6 @@ msgstr[1] "%u entradas"
msgid "System Sounds"
msgstr "Sonidos del sistema"
#~| msgid "Power Off"
#~ msgctxt "search-result"
#~ msgid "Power off"
#~ msgstr "Apagar"
#~| 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"
@@ -2743,6 +2658,9 @@ msgstr "Sonidos del sistema"
#~ msgid "Mouse Settings"
#~ msgstr "Configuración del ratón…"
#~ msgid "Region & Language Settings"
#~ msgstr "Configuración de región e idioma"
#~ msgid "%d hour remaining"
#~ msgid_plural "%d hours remaining"
#~ msgstr[0] "Queda %d hora"

368
po/fi.po
View File

@@ -24,9 +24,10 @@
msgid ""
msgstr ""
"Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
"POT-Creation-Date: 2018-02-06 01:15+0000\n"
"PO-Revision-Date: 2018-02-06 23:41+0200\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-08-22 11:17+0000\n"
"PO-Revision-Date: 2017-08-29 11:23+0300\n"
"Last-Translator: Jiri Grönroos <jiri.gronroos+l10n@iki.fi>\n"
"Language-Team: suomi <lokalisointi-lista@googlegroups.com>\n"
"Language: fi\n"
@@ -34,7 +35,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 1.8.7.1\n"
"X-Generator: Gtranslator 2.91.7\n"
"X-DamnedLies-Scope: partial\n"
"X-Project-Style: gnome\n"
"X-POT-Import-Date: 2012-03-05 15:06:10+0000\n"
@@ -358,7 +359,7 @@ msgstr "Kohteen %s asetusikkunaa ladataessa tapahtui virhe:"
#: 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:925
#: js/ui/shellMountOperation.js:344 js/ui/status/network.js:936
msgid "Cancel"
msgstr "Peru"
@@ -421,30 +422,34 @@ msgstr "(tai pyyhkäise sormella)"
#. Translators: The name of the power-off action in search
#: js/misc/systemActions.js:99
#| msgid "Power Off"
msgctxt "search-result"
msgid "Power Off"
msgid "Power off"
msgstr "Sammuta"
#. Translators: A list of keywords that match the power-off action, separated by semicolons
#: js/misc/systemActions.js:102
msgid "power off;shutdown;reboot;restart"
msgstr "power off;shutdown;reboot;restart;sammuta;käynnistä uudelleen;"
msgid "power off;shutdown"
msgstr "power off;shutdown;sammuta;sammutus;lopeta;"
#. Translators: The name of the lock screen action in search
#: js/misc/systemActions.js:106
#| msgid "Lock Screen"
msgctxt "search-result"
msgid "Lock Screen"
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:109
#| msgid "Lock Screen"
msgid "lock screen"
msgstr "lock screen"
#. Translators: The name of the logout action in search
#: js/misc/systemActions.js:113
#| msgid "Log Out"
msgctxt "search-result"
msgid "Log Out"
msgid "Log out"
msgstr "Kirjaudu ulos"
#. Translators: A list of keywords that match the logout action, separated by semicolons
@@ -454,36 +459,42 @@ msgstr "logout;sign off;kirjaudu ulos;uloskirjautuminen;poistu;"
#. Translators: The name of the suspend action in search
#: js/misc/systemActions.js:120
#| msgid "Suspend"
msgctxt "search-result"
msgid "Suspend"
msgstr "Valmiustila"
#. Translators: A list of keywords that match the suspend action, separated by semicolons
#: js/misc/systemActions.js:123
#| msgid "Suspend"
msgid "suspend;sleep"
msgstr "suspend;sleep"
#. Translators: The name of the switch user action in search
#: js/misc/systemActions.js:127
#| msgid "Switch User"
msgctxt "search-result"
msgid "Switch User"
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:130
#| msgid "Switch User"
msgid "switch user"
msgstr "switch user"
#. Translators: The name of the lock orientation action in search
#: js/misc/systemActions.js:134
#| msgid "Orientation Lock"
msgctxt "search-result"
msgid "Lock Orientation"
msgid "Lock orientation"
msgstr "Lukitse näytön kierto"
#. Translators: A list of keywords that match the lock orientation action, separated by semicolons
#: js/misc/systemActions.js:137
msgid "lock orientation;screen;rotation"
msgstr "lock orientation;screen;rotation;lukitse kierto;lukitse suunta;suunta;"
#| msgid "Orientation Lock"
msgid "lock orientation"
msgstr "lock orientation"
#: js/misc/util.js:122
msgid "Command not found"
@@ -655,32 +666,32 @@ msgstr "Käytetyimmät"
msgid "All"
msgstr "Kaikki"
#: js/ui/appDisplay.js:1918
#: js/ui/appDisplay.js:1915
msgid "New Window"
msgstr "Uusi ikkuna"
#: js/ui/appDisplay.js:1932
#: js/ui/appDisplay.js:1929
msgid "Launch using Dedicated Graphics Card"
msgstr "Käynnistä erillisnäytönohjainta käyttäen"
#: js/ui/appDisplay.js:1959 js/ui/dash.js:285
#: js/ui/appDisplay.js:1956 js/ui/dash.js:289
msgid "Remove from Favorites"
msgstr "Poista suosikeista"
#: js/ui/appDisplay.js:1965
#: js/ui/appDisplay.js:1962
msgid "Add to Favorites"
msgstr "Lisää suosikkeihin"
#: js/ui/appDisplay.js:1975
#: js/ui/appDisplay.js:1972
msgid "Show Details"
msgstr "Näytä tiedot"
#: js/ui/appFavorites.js:141
#: js/ui/appFavorites.js:140
#, javascript-format
msgid "%s has been added to your favorites."
msgstr "%s on lisätty suosikkeihin."
#: js/ui/appFavorites.js:175
#: js/ui/appFavorites.js:174
#, javascript-format
msgid "%s has been removed from your favorites."
msgstr "%s on poistettu suosikeista."
@@ -769,57 +780,58 @@ msgctxt "grid saturday"
msgid "S"
msgstr "L"
#: js/ui/calendar.js:449
#: js/ui/calendar.js:442
msgid "Previous month"
msgstr "Edellinen kuukausi"
#: js/ui/calendar.js:459
#: js/ui/calendar.js:452
msgid "Next month"
msgstr "Seuraava kuukausi"
#: js/ui/calendar.js:612
#: js/ui/calendar.js:605
#, no-javascript-format
msgctxt "date day number format"
msgid "%d"
msgstr "%d"
#: js/ui/calendar.js:667
#: js/ui/calendar.js:660
msgid "Week %V"
msgstr "Viikko %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:736
#: js/ui/calendar.js:729
msgctxt "event list time"
msgid "All Day"
msgstr "Koko päivä"
#: js/ui/calendar.js:869
#: js/ui/calendar.js:862
msgctxt "calendar heading"
msgid "%A, %B %d"
msgstr "%A, %e. %Bta"
#: js/ui/calendar.js:873
#: js/ui/calendar.js:866
msgctxt "calendar heading"
msgid "%A, %B %d, %Y"
msgstr "%A, %e. %Bta %Y"
#: js/ui/calendar.js:1093
#: js/ui/calendar.js:1086
msgid "No Notifications"
msgstr "Ei ilmoituksia"
#: js/ui/calendar.js:1096
#: js/ui/calendar.js:1089
msgid "No Events"
msgstr "Ei tapahtumia"
#: js/ui/calendar.js:1124
#: js/ui/calendar.js:1117
msgid "Clear All"
msgstr "Tyhjennä kaikki"
#. Translators: %s is an application name
#: js/ui/closeDialog.js:44
#, javascript-format
#| msgid "“%s” is ready"
msgid "“%s” is not responding."
msgstr "“%s” ei vastaa"
@@ -847,7 +859,7 @@ msgstr "Erillinen asema yhdistetty"
msgid "External drive disconnected"
msgstr "Erillinen asema irrotettu"
#: js/ui/components/autorunManager.js:358
#: js/ui/components/autorunManager.js:354
#, javascript-format
msgid "Open with %s"
msgstr "Avaa käyttäen sovellusta %s"
@@ -860,8 +872,8 @@ msgstr "Salasana:"
msgid "Type again:"
msgstr "Uudelleen:"
#: js/ui/components/networkAgent.js:112 js/ui/status/network.js:245
#: js/ui/status/network.js:338 js/ui/status/network.js:928
#: 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 "Yhdistä"
@@ -889,18 +901,18 @@ msgstr "Salaisen avaimen salasana: "
msgid "Service: "
msgstr "Palvelu: "
#: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:659
#: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:638
msgid "Authentication required by wireless network"
msgstr "Langaton verkko vaatii tunnistautumisen"
#: js/ui/components/networkAgent.js:293 js/ui/components/networkAgent.js:660
#: 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 "Langaton verkko \"%s\" vaatii salasanan tai salausavaimia."
#: js/ui/components/networkAgent.js:297 js/ui/components/networkAgent.js:663
#: js/ui/components/networkAgent.js:297 js/ui/components/networkAgent.js:642
msgid "Wired 802.1X authentication"
msgstr "Kiinteän 802.1X-yhteyden tunnistautuminen"
@@ -908,15 +920,15 @@ msgstr "Kiinteän 802.1X-yhteyden tunnistautuminen"
msgid "Network name: "
msgstr "Verkon nimi: "
#: js/ui/components/networkAgent.js:304 js/ui/components/networkAgent.js:667
#: js/ui/components/networkAgent.js:304 js/ui/components/networkAgent.js:646
msgid "DSL authentication"
msgstr "DSL-tunnistautuminen"
#: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:673
#: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:652
msgid "PIN code required"
msgstr "PIN-koodi vaaditaan"
#: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:674
#: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:653
msgid "PIN code is needed for the mobile broadband device"
msgstr "Mobiililaajakaista vaatii PIN-koodin"
@@ -924,17 +936,17 @@ msgstr "Mobiililaajakaista vaatii PIN-koodin"
msgid "PIN: "
msgstr "PIN: "
#: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:680
#: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:659
msgid "Mobile broadband network password"
msgstr "Mobiililaajakaistan verkkosalasana"
#: js/ui/components/networkAgent.js:321 js/ui/components/networkAgent.js:664
#: js/ui/components/networkAgent.js:668 js/ui/components/networkAgent.js:681
#: 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 "Salasana vaaditaan kohteeseen \"%s\" yhdistämiseksi."
#: js/ui/components/networkAgent.js:648 js/ui/status/network.js:1699
#: js/ui/components/networkAgent.js:627 js/ui/status/network.js:1720
msgid "Network Manager"
msgstr "Verkon hallinta"
@@ -969,20 +981,20 @@ msgstr "%s on nyt nimeltään %s"
msgid "Windows"
msgstr "Ikkunat"
#: js/ui/dash.js:246 js/ui/dash.js:287
#: js/ui/dash.js:250 js/ui/dash.js:291
msgid "Show Applications"
msgstr "Näytä sovellukset"
#. Translators: this is the name of the dock/favorites area on
#. the left of the overview
#: js/ui/dash.js:445
#: js/ui/dash.js:449
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 shell (e.g. "Tue 9:29 AM").
#.
#: js/ui/dateMenu.js:76
#: js/ui/dateMenu.js:75
msgid "%B %e %Y"
msgstr "%e. %b %Y"
@@ -990,19 +1002,19 @@ msgstr "%e. %b %Y"
#. * below the time in the shell; it should combine the weekday and the
#. * date, e.g. "Tuesday February 17 2015".
#.
#: js/ui/dateMenu.js:83
#: js/ui/dateMenu.js:82
msgid "%A %B %e %Y"
msgstr "%A, %e. %Bta %Y"
#: js/ui/dateMenu.js:148
#: js/ui/dateMenu.js:144
msgid "Add world clocks…"
msgstr "Lisää maailmankelloja…"
#: js/ui/dateMenu.js:149
#: js/ui/dateMenu.js:145
msgid "World Clocks"
msgstr "Maailmankellot"
#: js/ui/dateMenu.js:228
#: js/ui/dateMenu.js:224
msgid "Weather"
msgstr "Sää"
@@ -1010,7 +1022,7 @@ msgstr "Sää"
#. 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
#: js/ui/dateMenu.js:286
#, javascript-format
msgid "%s all day."
msgstr "%s koko päivän."
@@ -1019,7 +1031,7 @@ msgstr "%s koko päivän."
#. 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
#: js/ui/dateMenu.js:292
#, javascript-format
msgid "%s, then %s later."
msgstr "%s. %s myöhemmin."
@@ -1028,30 +1040,30 @@ msgstr "%s. %s myöhemmin."
#. 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:304
#: js/ui/dateMenu.js:298
#, javascript-format
msgid "%s, then %s, followed by %s later."
msgstr "%s. Sen jälkeen %s. Myöhemmin %s."
#: js/ui/dateMenu.js:315
#: js/ui/dateMenu.js:309
msgid "Select a location…"
msgstr "Valitse sijainti…"
#: js/ui/dateMenu.js:318
#: js/ui/dateMenu.js:312
msgid "Loading…"
msgstr "Ladataan…"
#. Translators: %s is a temperature with unit, e.g. "23℃"
#: js/ui/dateMenu.js:324
#: js/ui/dateMenu.js:318
#, javascript-format
msgid "Feels like %s."
msgstr "Tuntuu kuin %s."
#: js/ui/dateMenu.js:327
#: js/ui/dateMenu.js:321
msgid "Go online for weather information"
msgstr "Yhdistä verkkoon saadaksesi säätietoja"
#: js/ui/dateMenu.js:329
#: js/ui/dateMenu.js:323
msgid "Weather information is currently unavailable"
msgstr "Säätiedot eivät ole juuri nyt saatavilla"
@@ -1240,74 +1252,9 @@ msgstr "Kiellä"
msgid "Allow"
msgstr "Salli"
#: js/ui/kbdA11yDialog.js:33
msgid "Slow Keys Turned On"
msgstr "Hitaat näppäimet otettu käyttöön"
#: js/ui/kbdA11yDialog.js:34
msgid "Slow Keys Turned Off"
msgstr "Hitaat näppäimet poistettu käytöstä"
#: 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 ""
"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:59
msgid "Leave On"
msgstr "Jätä käyttöön"
#: js/ui/kbdA11yDialog.js:59 js/ui/status/bluetooth.js:143
#: js/ui/status/network.js:1287
msgid "Turn On"
msgstr "Ota käyttöön"
#: js/ui/kbdA11yDialog.js:67 js/ui/status/bluetooth.js:143
#: js/ui/status/network.js:154 js/ui/status/network.js:339
#: js/ui/status/network.js:1287 js/ui/status/network.js:1402
#: js/ui/status/nightLight.js:47 js/ui/status/rfkill.js:90
#: js/ui/status/rfkill.js:117
msgid "Turn Off"
msgstr "Sammuta"
#: js/ui/kbdA11yDialog.js:67
msgid "Leave Off"
msgstr "Poista käytöstä"
#: js/ui/keyboard.js:198
msgid "Region & Language Settings"
msgstr "Kielen & alueen asetukset"
#: js/ui/keyboard.js:738 js/ui/status/keyboard.js:782
msgid "Keyboard"
msgstr "Näppäimistö"
#: js/ui/lookingGlass.js:642
msgid "No extensions installed"
@@ -1357,7 +1304,7 @@ msgstr "Näytä lähde"
msgid "Web Page"
msgstr "Verkkosivusto"
#: js/ui/messageTray.js:1494
#: js/ui/messageTray.js:1493
msgid "System Information"
msgstr "Järjestelmän tiedot"
@@ -1448,7 +1395,7 @@ msgctxt "System menu in the top bar"
msgid "System"
msgstr "Järjestelmä"
#: js/ui/panel.js:814
#: js/ui/panel.js:812
msgid "Top Bar"
msgstr "Yläpalkki"
@@ -1603,39 +1550,46 @@ msgstr "Korkea kontrasti"
msgid "Large Text"
msgstr "Suuri tekstin koko"
#: js/ui/status/bluetooth.js:48
#: js/ui/status/bluetooth.js:47
msgid "Bluetooth"
msgstr "Bluetooth"
#: js/ui/status/bluetooth.js:57 js/ui/status/network.js:616
#: js/ui/status/bluetooth.js:56 js/ui/status/network.js:627
msgid "Bluetooth Settings"
msgstr "Bluetooth-asetukset"
#. Translators: this is the number of connected bluetooth devices
#: js/ui/status/bluetooth.js:137
#: js/ui/status/bluetooth.js:136
#, javascript-format
msgid "%d Connected"
msgid_plural "%d Connected"
msgstr[0] "%d yhdistetty"
msgstr[1] "%d yhdistetty"
#: js/ui/status/bluetooth.js:139
#: js/ui/status/bluetooth.js:138
msgid "Off"
msgstr "Pois"
#: js/ui/status/bluetooth.js:141
#: js/ui/status/bluetooth.js:140
msgid "On"
msgstr "Päällä"
#: js/ui/status/bluetooth.js:142 js/ui/status/network.js:1299
msgid "Turn On"
msgstr "Ota käyttöön"
#: 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 "Sammuta"
#: js/ui/status/brightness.js:44
msgid "Brightness"
msgstr "Kirkkaus"
#: js/ui/status/keyboard.js:783
msgid "Keyboard"
msgstr "Näppäimistö"
#: js/ui/status/keyboard.js:806
#: js/ui/status/keyboard.js:805
msgid "Show Keyboard Layout"
msgstr "Näytä näppäimistön asettelu"
@@ -1675,18 +1629,18 @@ msgstr ""
"Sijaintitiedon käyttöoikeuksia voi muuttaa milloin tahansa "
"yksityisyysasetuksista."
#: js/ui/status/network.js:90
#: js/ui/status/network.js:104
msgid "<unknown>"
msgstr "<tuntematon>"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:443 js/ui/status/network.js:1316
#: js/ui/status/network.js:454 js/ui/status/network.js:1328
#, javascript-format
msgid "%s Off"
msgstr "%s pois"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:446
#: js/ui/status/network.js:457
#, javascript-format
msgid "%s Connected"
msgstr "%s - Yhdistetty"
@@ -1694,189 +1648,189 @@ msgstr "%s - Yhdistetty"
#. 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
#: js/ui/status/network.js:462
#, javascript-format
msgid "%s Unmanaged"
msgstr "%s - Ei hallinnassa"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:454
#: js/ui/status/network.js:465
#, javascript-format
msgid "%s Disconnecting"
msgstr "%s - Katkaistaan yhteyttä"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:461 js/ui/status/network.js:1308
#: js/ui/status/network.js:472 js/ui/status/network.js:1320
#, javascript-format
msgid "%s Connecting"
msgstr "%s - Yhdistetään"
#. 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
#: js/ui/status/network.js:475
#, javascript-format
msgid "%s Requires Authentication"
msgstr "%s vaatii tunnistautumisen"
#. 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
#: js/ui/status/network.js:483
#, javascript-format
msgid "Firmware Missing For %s"
msgstr "%s - Laiteohjelmisto puuttuu"
#. 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
#: js/ui/status/network.js:487
#, javascript-format
msgid "%s Unavailable"
msgstr "%s - Ei saatavilla"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:479
#: js/ui/status/network.js:490
#, javascript-format
msgid "%s Connection Failed"
msgstr "%s - Yhteys epäonnistui"
#: js/ui/status/network.js:495
#: js/ui/status/network.js:506
msgid "Wired Settings"
msgstr "Kiinteän yhteyden asetukset"
#: js/ui/status/network.js:537
#: js/ui/status/network.js:548
msgid "Mobile Broadband Settings"
msgstr "Mobiililaajakaistan asetukset"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:580 js/ui/status/network.js:1313
#: js/ui/status/network.js:591 js/ui/status/network.js:1325
#, javascript-format
msgid "%s Hardware Disabled"
msgstr "%s - Laite poistettu käytöstä"
#. 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
#: js/ui/status/network.js:595
#, javascript-format
msgid "%s Disabled"
msgstr "%s - Poistettu käytöstä"
#: js/ui/status/network.js:624
#: js/ui/status/network.js:635
msgid "Connect to Internet"
msgstr "Yhdistä internetiin"
#: js/ui/status/network.js:822
#: js/ui/status/network.js:833
msgid "Airplane Mode is On"
msgstr "Lentokonetila on päällä"
#: js/ui/status/network.js:823
#: js/ui/status/network.js:834
msgid "Wi-Fi is disabled when airplane mode is on."
msgstr "Wifi on pois päältä lentokonetilan ollessa päällä."
#: js/ui/status/network.js:824
#: js/ui/status/network.js:835
msgid "Turn Off Airplane Mode"
msgstr "Käytä lentokonetilaa"
#: js/ui/status/network.js:833
#: js/ui/status/network.js:844
msgid "Wi-Fi is Off"
msgstr "Wifi on pois"
#: js/ui/status/network.js:834
#: js/ui/status/network.js:845
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."
#: js/ui/status/network.js:835
#: js/ui/status/network.js:846
msgid "Turn On Wi-Fi"
msgstr "Ota wifi käyttöön"
#: js/ui/status/network.js:860
#: js/ui/status/network.js:871
msgid "Wi-Fi Networks"
msgstr "Wifi-verkot"
#: js/ui/status/network.js:862
#: js/ui/status/network.js:873
msgid "Select a network"
msgstr "Valitse verkko"
#: js/ui/status/network.js:892
#: js/ui/status/network.js:903
msgid "No Networks"
msgstr "Ei verkkoja"
#: js/ui/status/network.js:913 js/ui/status/rfkill.js:115
#: js/ui/status/network.js:924 js/ui/status/rfkill.js:115
msgid "Use hardware switch to turn off"
msgstr "Käytä laitepainiketta sammuttaaksesi"
#: js/ui/status/network.js:1179
#: js/ui/status/network.js:1191
msgid "Select Network"
msgstr "Valitse verkko"
#: js/ui/status/network.js:1185
#: js/ui/status/network.js:1197
msgid "Wi-Fi Settings"
msgstr "Wifin asetukset"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1304
#: js/ui/status/network.js:1316
#, javascript-format
msgid "%s Hotspot Active"
msgstr "%s - Yhteyspiste aktiivisena"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1319
#: js/ui/status/network.js:1331
#, javascript-format
msgid "%s Not Connected"
msgstr "%s - Ei yhdistetty"
#: js/ui/status/network.js:1419
#: js/ui/status/network.js:1435
msgid "connecting…"
msgstr "yhdistetään…"
#. Translators: this is for network connections that require some kind of key or password
#: js/ui/status/network.js:1422
#: js/ui/status/network.js:1438
msgid "authentication required"
msgstr "tunnistautuminen vaaditaan"
#: js/ui/status/network.js:1424
#: js/ui/status/network.js:1440
msgid "connection failed"
msgstr "yhteys katkesi"
#: js/ui/status/network.js:1478
#: js/ui/status/network.js:1494
msgid "VPN Settings"
msgstr "VPN-asetukset"
#: js/ui/status/network.js:1491
#: js/ui/status/network.js:1498
msgid "VPN"
msgstr "VPN"
#: js/ui/status/network.js:1501
#: js/ui/status/network.js:1508
msgid "VPN Off"
msgstr "VPN pois"
#: js/ui/status/network.js:1565 js/ui/status/rfkill.js:93
#: js/ui/status/network.js:1572 js/ui/status/rfkill.js:93
msgid "Network Settings"
msgstr "Verkkoasetukset"
#: js/ui/status/network.js:1596
#: js/ui/status/network.js:1603
#, javascript-format
msgid "%s Wired Connection"
msgid_plural "%s Wired Connections"
msgstr[0] "%s kiinteä yhteys"
msgstr[1] "%s kiinteää yhteyttä"
#: js/ui/status/network.js:1600
#: js/ui/status/network.js:1607
#, javascript-format
msgid "%s Wi-Fi Connection"
msgid_plural "%s Wi-Fi Connections"
msgstr[0] "%s wifi-yhteys"
msgstr[1] "%s wifi-yhteyttä"
#: js/ui/status/network.js:1604
#: js/ui/status/network.js:1611
#, javascript-format
msgid "%s Modem Connection"
msgid_plural "%s Modem Connections"
msgstr[0] "%s modeemiyhteys"
msgstr[1] "%s modeemiyhteyttä"
#: js/ui/status/network.js:1738
#: js/ui/status/network.js:1759
msgid "Connection failed"
msgstr "Yhteys epäonnistui"
#: js/ui/status/network.js:1739
#: js/ui/status/network.js:1760
msgid "Activation of network connection failed"
msgstr "Verkkoyhteyden aktivointi epäonnistui"
@@ -1958,32 +1912,6 @@ msgstr "Valmiustila"
msgid "Power Off"
msgstr "Sammuta"
#: js/ui/status/thunderbolt.js:272
msgid "Thunderbolt"
msgstr "Thunderbolt"
#. we are done
#: js/ui/status/thunderbolt.js:330
msgid "Unknown Thunderbolt device"
msgstr "Tuntematon Thunderbolt-laite"
#: js/ui/status/thunderbolt.js:331
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:336
msgid "Thunderbolt authorization error"
msgstr "Thunderbolt-valtuutusvirhe"
#: js/ui/status/thunderbolt.js:337
#, javascript-format
msgid "Could not authorize the thunderbolt device: %s"
msgstr "Ei voitu valtuuttaa thunderbolt-laitetta: %s"
#: js/ui/status/volume.js:128
msgid "Volume changed"
msgstr "Äänenvoimakkuutta muutettu"
@@ -1996,6 +1924,7 @@ msgstr "Äänenvoimakkuus"
#. * Try to keep it under around 15 characters.
#.
#: js/ui/switchMonitor.js:21
#| msgid "Error"
msgid "Mirror"
msgstr "Peili"
@@ -2143,19 +2072,19 @@ msgstr "Evolution-kalenteri"
msgid "evolution"
msgstr "evolution"
#: src/main.c:432
#: src/main.c:380
msgid "Print version"
msgstr "Tulosta versio"
#: src/main.c:438
#: src/main.c:386
msgid "Mode used by GDM for login screen"
msgstr "GDM:n kirjautumisruudussa käyttämä tila"
#: src/main.c:444
#: src/main.c:392
msgid "Use a specific mode, e.g. “gdm” for login screen"
msgstr "Käytä tiettyä tilaa (esim. “gdm”) kirjautumisnäkymää varten"
#: src/main.c:450
#: src/main.c:398
msgid "List possible modes"
msgstr "Listaa mahdolliset tilat"
@@ -2203,21 +2132,6 @@ msgstr[1] "%u sisääntuloa"
msgid "System Sounds"
msgstr "Järjestelmän äänet"
#~| msgid "Power Off"
#~ msgctxt "search-result"
#~ msgid "Power off"
#~ msgstr "Sammuta"
#~| 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"
@@ -2717,6 +2631,10 @@ msgstr "Järjestelmän äänet"
#~ msgid "Mouse Settings"
#~ msgstr "Hiiren asetukset"
#~| msgid "Region and Language Settings"
#~ msgid "Region & Language Settings"
#~ msgstr "Kielen & alueen asetukset"
#~ msgid "Volume, network, battery"
#~ msgstr "Äänenvoimakkuus, verkko, akku"

348
po/fur.po
View File

@@ -6,9 +6,10 @@
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: 2018-02-06 01:15+0000\n"
"PO-Revision-Date: 2018-02-06 22:38+0100\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-10-04 18:03+0000\n"
"PO-Revision-Date: 2017-10-11 08:34+0200\n"
"Last-Translator: Fabio Tomat <f.t.public@gmail.com>\n"
"Language-Team: Friulian <fur@li.org>\n"
"Language: fur\n"
@@ -340,7 +341,7 @@ msgstr ""
#: 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:925
#: js/ui/shellMountOperation.js:344 js/ui/status/network.js:936
msgid "Cancel"
msgstr "Anule"
@@ -404,29 +405,29 @@ msgstr "(o passe cul dêt)"
#. Translators: The name of the power-off action in search
#: js/misc/systemActions.js:99
msgctxt "search-result"
msgid "Power Off"
msgid "Power off"
msgstr "Distudâ"
#. Translators: A list of keywords that match the power-off action, separated by semicolons
#: js/misc/systemActions.js:102
msgid "power off;shutdown;reboot;restart"
msgstr "distudâ;studâ;tornâ a inviâ"
msgid "power off;shutdown"
msgstr "distudâ;studâ"
#. Translators: The name of the lock screen action in search
#: js/misc/systemActions.js:106
msgctxt "search-result"
msgid "Lock Screen"
msgstr "Bloc schermi"
msgid "Lock screen"
msgstr "Blocâ il schermi"
#. Translators: A list of keywords that match the lock screen action, separated by semicolons
#: js/misc/systemActions.js:109
msgid "lock screen"
msgstr "bloc schermi"
msgstr "blocâ schermi;blocâ"
#. Translators: The name of the logout action in search
#: js/misc/systemActions.js:113
msgctxt "search-result"
msgid "Log Out"
msgid "Log out"
msgstr "Jessî"
#. Translators: A list of keywords that match the logout action, separated by semicolons
@@ -448,8 +449,8 @@ msgstr "sospindi;polse"
#. Translators: The name of the switch user action in search
#: js/misc/systemActions.js:127
msgctxt "search-result"
msgid "Switch User"
msgstr "Cambi Utent"
msgid "Switch user"
msgstr "Cambiâ utent"
#. Translators: A list of keywords that match the switch user action, separated by semicolons
#: js/misc/systemActions.js:130
@@ -459,13 +460,13 @@ msgstr "cambiâ utent"
#. Translators: The name of the lock orientation action in search
#: js/misc/systemActions.js:134
msgctxt "search-result"
msgid "Lock Orientation"
msgstr "Bloc orientament"
msgid "Lock orientation"
msgstr "Blocâ orientament"
#. Translators: A list of keywords that match the lock orientation action, separated by semicolons
#: js/misc/systemActions.js:137
msgid "lock orientation;screen;rotation"
msgstr "bloc orientament;schermi;rotazion"
msgid "lock orientation"
msgstr "blocâ orientament"
#: js/misc/util.js:122
msgid "Command not found"
@@ -638,23 +639,23 @@ msgstr "Dispès"
msgid "All"
msgstr "Dutis"
#: js/ui/appDisplay.js:1918
#: js/ui/appDisplay.js:1915
msgid "New Window"
msgstr "Gnûf barcon"
#: js/ui/appDisplay.js:1932
#: js/ui/appDisplay.js:1929
msgid "Launch using Dedicated Graphics Card"
msgstr "Invie doprant une schede grafiche dedicade"
#: js/ui/appDisplay.js:1959 js/ui/dash.js:285
#: js/ui/appDisplay.js:1956 js/ui/dash.js:289
msgid "Remove from Favorites"
msgstr "Gjave dai preferîts"
#: js/ui/appDisplay.js:1965
#: js/ui/appDisplay.js:1962
msgid "Add to Favorites"
msgstr "Zonte tai preferîts"
#: js/ui/appDisplay.js:1975
#: js/ui/appDisplay.js:1972
msgid "Show Details"
msgstr "Mostre Detais"
@@ -690,7 +691,7 @@ msgstr "Microfon"
#: js/ui/backgroundMenu.js:19
msgid "Change Background…"
msgstr "Cambie sfont"
msgstr "Cambie sfont..."
#: js/ui/backgroundMenu.js:21 js/ui/status/nightLight.js:51
msgid "Display Settings"
@@ -843,8 +844,8 @@ msgstr "Password:"
msgid "Type again:"
msgstr "Scîf di gnûf:"
#: js/ui/components/networkAgent.js:112 js/ui/status/network.js:245
#: js/ui/status/network.js:338 js/ui/status/network.js:928
#: 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 "Conet"
@@ -872,11 +873,11 @@ msgstr "Password di clâf privade:"
msgid "Service: "
msgstr "Servizi:"
#: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:659
#: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:638
msgid "Authentication required by wireless network"
msgstr "La rêt cence fîl e domande autenticazion"
#: js/ui/components/networkAgent.js:293 js/ui/components/networkAgent.js:660
#: 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 "
@@ -885,7 +886,7 @@ 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:297 js/ui/components/networkAgent.js:663
#: js/ui/components/networkAgent.js:297 js/ui/components/networkAgent.js:642
msgid "Wired 802.1X authentication"
msgstr "Autenticazion vie fîl 802.1X"
@@ -893,15 +894,15 @@ msgstr "Autenticazion vie fîl 802.1X"
msgid "Network name: "
msgstr "Non rêt:"
#: js/ui/components/networkAgent.js:304 js/ui/components/networkAgent.js:667
#: js/ui/components/networkAgent.js:304 js/ui/components/networkAgent.js:646
msgid "DSL authentication"
msgstr "Autenticazion DSL"
#: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:673
#: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:652
msgid "PIN code required"
msgstr "Si pretint un codiç PIN"
#: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:674
#: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:653
msgid "PIN code is needed for the mobile broadband device"
msgstr "Si scugne meti un codiç PIN pal dispositîf a bande largje mobil"
@@ -909,17 +910,17 @@ msgstr "Si scugne meti un codiç PIN pal dispositîf a bande largje mobil"
msgid "PIN: "
msgstr "PIN: "
#: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:680
#: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:659
msgid "Mobile broadband network password"
msgstr "Passowrd rêt mobil a bande largje"
#: js/ui/components/networkAgent.js:321 js/ui/components/networkAgent.js:664
#: js/ui/components/networkAgent.js:668 js/ui/components/networkAgent.js:681
#: 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 "A covente une password par tacâsi a '%s'."
#: js/ui/components/networkAgent.js:648 js/ui/status/network.js:1699
#: js/ui/components/networkAgent.js:627 js/ui/status/network.js:1720
msgid "Network Manager"
msgstr "Ministradôr di rêt"
@@ -954,13 +955,13 @@ msgstr "L'utent %s al è cognossût cumò come %s"
msgid "Windows"
msgstr "Barcons"
#: js/ui/dash.js:246 js/ui/dash.js:287
#: js/ui/dash.js:250 js/ui/dash.js:291
msgid "Show Applications"
msgstr "Mostre Aplicazions"
#. Translators: this is the name of the dock/favorites area on
#. the left of the overview
#: js/ui/dash.js:445
#: js/ui/dash.js:449
msgid "Dash"
msgstr "Dash"
@@ -979,15 +980,15 @@ msgstr "%e di %B dal %Y"
msgid "%A %B %e %Y"
msgstr "%A %e di %B dal %Y"
#: js/ui/dateMenu.js:148
#: js/ui/dateMenu.js:145
msgid "Add world clocks…"
msgstr "Zonte orlois mondiâi"
msgstr "Zonte orlois mondiâi..."
#: js/ui/dateMenu.js:149
#: js/ui/dateMenu.js:146
msgid "World Clocks"
msgstr "Orlois mondiâi"
#: js/ui/dateMenu.js:228
#: js/ui/dateMenu.js:225
msgid "Weather"
msgstr "Timp"
@@ -995,7 +996,7 @@ msgstr "Timp"
#. 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
#: js/ui/dateMenu.js:289
#, javascript-format
msgid "%s all day."
msgstr "%s dut il dì."
@@ -1004,7 +1005,7 @@ msgstr "%s dut il dì."
#. 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
#: js/ui/dateMenu.js:295
#, javascript-format
msgid "%s, then %s later."
msgstr "%s, plui tart %s."
@@ -1013,30 +1014,30 @@ msgstr "%s, plui tart %s."
#. 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:304
#: js/ui/dateMenu.js:301
#, javascript-format
msgid "%s, then %s, followed by %s later."
msgstr "%s, chi di un pôc %s, e plui tart %s."
#: js/ui/dateMenu.js:315
#: js/ui/dateMenu.js:312
msgid "Select a location…"
msgstr "Selezione une posizion"
msgstr "Selezione une posizion..."
#: js/ui/dateMenu.js:318
#: js/ui/dateMenu.js:315
msgid "Loading…"
msgstr "Daûr a cjariâ"
msgstr "Daûr a cjariâ..."
#. Translators: %s is a temperature with unit, e.g. "23℃"
#: js/ui/dateMenu.js:324
#: js/ui/dateMenu.js:321
#, javascript-format
msgid "Feels like %s."
msgstr "Si sint %s."
#: js/ui/dateMenu.js:327
#: js/ui/dateMenu.js:324
msgid "Go online for weather information"
msgstr "Va in rêt pes informazions sul timp"
#: js/ui/dateMenu.js:329
#: js/ui/dateMenu.js:326
msgid "Weather information is currently unavailable"
msgstr "Lis informazions sul timp al moment no son disponibilis"
@@ -1223,73 +1224,9 @@ msgstr "Dinee"
msgid "Allow"
msgstr "Pemet"
#: js/ui/kbdA11yDialog.js:33
msgid "Slow Keys Turned On"
msgstr "Tascj lents ativâts"
#: js/ui/kbdA11yDialog.js:34
msgid "Slow Keys Turned Off"
msgstr "Tascj lents disativâts"
#: 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 ""
"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:59
msgid "Leave On"
msgstr "Lasse ativât"
#: js/ui/kbdA11yDialog.js:59 js/ui/status/bluetooth.js:143
#: js/ui/status/network.js:1287
msgid "Turn On"
msgstr "Impie"
#: js/ui/kbdA11yDialog.js:67 js/ui/status/bluetooth.js:143
#: js/ui/status/network.js:154 js/ui/status/network.js:339
#: js/ui/status/network.js:1287 js/ui/status/network.js:1402
#: js/ui/status/nightLight.js:47 js/ui/status/rfkill.js:90
#: js/ui/status/rfkill.js:117
msgid "Turn Off"
msgstr "Distude"
#: js/ui/kbdA11yDialog.js:67
msgid "Leave Off"
msgstr "Lasse disativât"
#: js/ui/keyboard.js:198
msgid "Region & Language Settings"
msgstr "Impostazions regjon e lenghe"
#: js/ui/keyboard.js:738 js/ui/status/keyboard.js:782
msgid "Keyboard"
msgstr "Tastiere"
#: js/ui/lookingGlass.js:642
msgid "No extensions installed"
@@ -1367,11 +1304,11 @@ msgstr "Panoramiche"
#. characters.
#: js/ui/overview.js:240
msgid "Type to search…"
msgstr "Scrîf par cirî"
msgstr "Scrîf par cirî..."
#: js/ui/padOsd.js:103
msgid "New shortcut…"
msgstr "Gnove scurte"
msgstr "Gnove scurte..."
#: js/ui/padOsd.js:152
msgid "Application defined"
@@ -1395,7 +1332,7 @@ msgstr "Fat"
#: js/ui/padOsd.js:734
msgid "Edit…"
msgstr "Modifiche"
msgstr "Modifiche..."
# masculin o feminin
#: js/ui/padOsd.js:774 js/ui/padOsd.js:879
@@ -1429,7 +1366,7 @@ msgctxt "System menu in the top bar"
msgid "System"
msgstr "Sisteme"
#: js/ui/panel.js:814
#: js/ui/panel.js:812
msgid "Top Bar"
msgstr "Sbare parsore"
@@ -1457,7 +1394,7 @@ msgstr "Il tornâ a tacâ nol è disponibil in Wayland"
#: js/ui/runDialog.js:282
msgid "Restarting…"
msgstr "Daûr a tornâ a inviâ"
msgstr "Daûr a tornâ a inviâ..."
#. Translators: This is a time format for a date in
#. long format
@@ -1485,7 +1422,7 @@ msgstr "Bloche"
#: js/ui/screenShield.js:715
msgid "GNOME needs to lock the screen"
msgstr "GNOME al à di blocâ il visôr"
msgstr "GNOME al scugne blocâ il visôr"
#. We could not become modal, so we can't activate the
#. screenshield. The user is probably very upset at this
@@ -1504,7 +1441,7 @@ msgstr "Il bloc al è stât dineât di une aplicazion"
#: js/ui/search.js:651
msgid "Searching…"
msgstr "Daûr a cirî"
msgstr "Daûr a cirî..."
#: js/ui/search.js:653
msgid "No results."
@@ -1586,39 +1523,46 @@ msgstr "Contrast elevât"
msgid "Large Text"
msgstr "Test Larc"
#: js/ui/status/bluetooth.js:48
#: js/ui/status/bluetooth.js:47
msgid "Bluetooth"
msgstr "Bluetooth"
#: js/ui/status/bluetooth.js:57 js/ui/status/network.js:616
#: js/ui/status/bluetooth.js:56 js/ui/status/network.js:627
msgid "Bluetooth Settings"
msgstr "Impostazions Bluetooth"
#. Translators: this is the number of connected bluetooth devices
#: js/ui/status/bluetooth.js:137
#: js/ui/status/bluetooth.js:136
#, javascript-format
msgid "%d Connected"
msgid_plural "%d Connected"
msgstr[0] "%d tacât"
msgstr[1] "%d tacâts"
#: js/ui/status/bluetooth.js:139
#: js/ui/status/bluetooth.js:138
msgid "Off"
msgstr "Distudât"
#: js/ui/status/bluetooth.js:141
#: js/ui/status/bluetooth.js:140
msgid "On"
msgstr "Impiât"
#: js/ui/status/bluetooth.js:142 js/ui/status/network.js:1299
msgid "Turn On"
msgstr "Impie"
#: 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 "Distude"
#: js/ui/status/brightness.js:44
msgid "Brightness"
msgstr "Luminositât"
#: js/ui/status/keyboard.js:783
msgid "Keyboard"
msgstr "Tastiere"
#: js/ui/status/keyboard.js:806
#: js/ui/status/keyboard.js:805
msgid "Show Keyboard Layout"
msgstr "Mostre la disposizion de tastiere"
@@ -1658,18 +1602,18 @@ msgstr ""
"L'acès ae posizion al pues jessi cambiât cuant che tu vuelis su impostazions "
"privacy."
#: js/ui/status/network.js:90
#: js/ui/status/network.js:104
msgid "<unknown>"
msgstr "<no cognossût>"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:443 js/ui/status/network.js:1316
#: js/ui/status/network.js:454 js/ui/status/network.js:1328
#, javascript-format
msgid "%s Off"
msgstr "%s distudât"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:446
#: js/ui/status/network.js:457
#, javascript-format
msgid "%s Connected"
msgstr "%s tacât"
@@ -1677,189 +1621,189 @@ msgstr "%s tacât"
#. 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
#: js/ui/status/network.js:462
#, javascript-format
msgid "%s Unmanaged"
msgstr "%s no ministrât"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:454
#: js/ui/status/network.js:465
#, javascript-format
msgid "%s Disconnecting"
msgstr "%s daûr a disconeti"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:461 js/ui/status/network.js:1308
#: js/ui/status/network.js:472 js/ui/status/network.js:1320
#, javascript-format
msgid "%s Connecting"
msgstr "%s in conession"
#. 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
#: js/ui/status/network.js:475
#, javascript-format
msgid "%s Requires Authentication"
msgstr "%s al à dibisugne di autenticazion"
#. 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
#: js/ui/status/network.js:483
#, javascript-format
msgid "Firmware Missing For %s"
msgstr "Al mancje il firmware par %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
#: js/ui/status/network.js:487
#, javascript-format
msgid "%s Unavailable"
msgstr "%s no disponibil"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:479
#: js/ui/status/network.js:490
#, javascript-format
msgid "%s Connection Failed"
msgstr "Conession falide su %s"
#: js/ui/status/network.js:495
#: js/ui/status/network.js:506
msgid "Wired Settings"
msgstr "Impostazions rêt vie fîl"
#: js/ui/status/network.js:537
#: js/ui/status/network.js:548
msgid "Mobile Broadband Settings"
msgstr "Impostazions bande largje mobil"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:580 js/ui/status/network.js:1313
#: js/ui/status/network.js:591 js/ui/status/network.js:1325
#, javascript-format
msgid "%s Hardware Disabled"
msgstr "%s disabilitât vie hardware "
#. 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
#: js/ui/status/network.js:595
#, javascript-format
msgid "%s Disabled"
msgstr "%s disabilitât"
#: js/ui/status/network.js:624
#: js/ui/status/network.js:635
msgid "Connect to Internet"
msgstr "Conet a internet"
#: js/ui/status/network.js:822
#: js/ui/status/network.js:833
msgid "Airplane Mode is On"
msgstr "Modalitât avion piade"
#: js/ui/status/network.js:823
#: js/ui/status/network.js:834
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."
#: js/ui/status/network.js:824
#: js/ui/status/network.js:835
msgid "Turn Off Airplane Mode"
msgstr "Distude modalitât avion"
#: js/ui/status/network.js:833
#: js/ui/status/network.js:844
msgid "Wi-Fi is Off"
msgstr "Il Wi-Fi al è distudât"
#: js/ui/status/network.js:834
#: js/ui/status/network.js:845
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."
#: js/ui/status/network.js:835
#: js/ui/status/network.js:846
msgid "Turn On Wi-Fi"
msgstr "Impie il Wi-Fi"
#: js/ui/status/network.js:860
#: js/ui/status/network.js:871
msgid "Wi-Fi Networks"
msgstr "Rêts Wi-Fi"
#: js/ui/status/network.js:862
#: js/ui/status/network.js:873
msgid "Select a network"
msgstr "Selezione une rêt"
#: js/ui/status/network.js:892
#: js/ui/status/network.js:903
msgid "No Networks"
msgstr "Nissune rêt"
#: js/ui/status/network.js:913 js/ui/status/rfkill.js:115
#: js/ui/status/network.js:924 js/ui/status/rfkill.js:115
msgid "Use hardware switch to turn off"
msgstr "Dopre interutôr fisic par distudâ"
#: js/ui/status/network.js:1179
#: js/ui/status/network.js:1191
msgid "Select Network"
msgstr "Selezione rêt"
#: js/ui/status/network.js:1185
#: js/ui/status/network.js:1197
msgid "Wi-Fi Settings"
msgstr "Impostazions Wi-Fi"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1304
#: js/ui/status/network.js:1316
#, javascript-format
msgid "%s Hotspot Active"
msgstr "Hotspot %s atîf"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1319
#: js/ui/status/network.js:1331
#, javascript-format
msgid "%s Not Connected"
msgstr "%s distacât"
#: js/ui/status/network.js:1419
#: js/ui/status/network.js:1435
msgid "connecting…"
msgstr "daûr a coneti…"
#. Translators: this is for network connections that require some kind of key or password
#: js/ui/status/network.js:1422
#: js/ui/status/network.js:1438
msgid "authentication required"
msgstr "autenticazion necessarie"
#: js/ui/status/network.js:1424
#: js/ui/status/network.js:1440
msgid "connection failed"
msgstr "conession falide"
#: js/ui/status/network.js:1478
#: js/ui/status/network.js:1494
msgid "VPN Settings"
msgstr "Impostazions VPN"
#: js/ui/status/network.js:1491
#: js/ui/status/network.js:1498
msgid "VPN"
msgstr "VPN"
#: js/ui/status/network.js:1501
#: js/ui/status/network.js:1508
msgid "VPN Off"
msgstr "VPN distudât"
#: js/ui/status/network.js:1565 js/ui/status/rfkill.js:93
#: js/ui/status/network.js:1572 js/ui/status/rfkill.js:93
msgid "Network Settings"
msgstr "Impostazions rêt"
#: js/ui/status/network.js:1596
#: js/ui/status/network.js:1603
#, javascript-format
msgid "%s Wired Connection"
msgid_plural "%s Wired Connections"
msgstr[0] "%s conession cablade"
msgstr[1] "%s conessions cabladis"
#: js/ui/status/network.js:1600
#: js/ui/status/network.js:1607
#, 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"
#: js/ui/status/network.js:1604
#: js/ui/status/network.js:1611
#, javascript-format
msgid "%s Modem Connection"
msgid_plural "%s Modem Connections"
msgstr[0] "%s conession modem"
msgstr[1] "%s conessions modem"
#: js/ui/status/network.js:1738
#: js/ui/status/network.js:1759
msgid "Connection failed"
msgstr "Conession falide"
#: js/ui/status/network.js:1739
#: js/ui/status/network.js:1760
msgid "Activation of network connection failed"
msgstr "Ativazion de conession di rêt falide"
@@ -1891,7 +1835,7 @@ msgstr "Cjarie"
#. to estimate battery life
#: js/ui/status/power.js:84 js/ui/status/power.js:90
msgid "Estimating…"
msgstr "In stime"
msgstr "In stime..."
#. Translators: this is <hours>:<minutes> Remaining (<percentage>)
#: js/ui/status/power.js:98
@@ -1931,7 +1875,7 @@ msgstr "Impostazions account"
#: js/ui/status/system.js:269
msgid "Orientation Lock"
msgstr "Bloc Orientament"
msgstr "Bloche Orientament"
#: js/ui/status/system.js:295
msgid "Suspend"
@@ -1941,32 +1885,6 @@ msgstr "Sospindi"
msgid "Power Off"
msgstr "Distude"
#: js/ui/status/thunderbolt.js:272
msgid "Thunderbolt"
msgstr "Thunderbolt"
#. we are done
#: js/ui/status/thunderbolt.js:330
msgid "Unknown Thunderbolt device"
msgstr "Dispositîf Thunderbolt no cognossût"
#: js/ui/status/thunderbolt.js:331
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:336
msgid "Thunderbolt authorization error"
msgstr "Erôr di autorizazion di Thunderbolt"
#: js/ui/status/thunderbolt.js:337
#, javascript-format
msgid "Could not authorize the thunderbolt device: %s"
msgstr "Impussibil autorizâ il dispositîf thunderbolt: %s"
#: js/ui/status/volume.js:128
msgid "Volume changed"
msgstr "Volum modificât"
@@ -2022,7 +1940,7 @@ msgstr "Cîr"
#: js/ui/windowAttentionHandler.js:20
#, javascript-format
msgid "“%s” is ready"
msgstr "%s al è pront"
msgstr "'%s' al è pront"
#: js/ui/windowManager.js:72
msgid "Do you want to keep these display settings?"
@@ -2128,19 +2046,19 @@ msgstr "Calendari di Evolution"
msgid "evolution"
msgstr "evolution"
#: src/main.c:432
#: src/main.c:380
msgid "Print version"
msgstr "Stampe version"
#: src/main.c:438
#: src/main.c:386
msgid "Mode used by GDM for login screen"
msgstr "Modalitât doprade da GDM pe videade di acès"
#: src/main.c:444
#: src/main.c:392
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:450
#: src/main.c:398
msgid "List possible modes"
msgstr "Liste modalitâts pussibilis"
@@ -2188,18 +2106,6 @@ msgstr[1] "%u jentradis"
msgid "System Sounds"
msgstr "Suns di sisteme"
#~ msgctxt "search-result"
#~ msgid "Power off"
#~ msgstr "Distudâ"
#~ msgctxt "search-result"
#~ msgid "Log out"
#~ msgstr "Jessî"
#~ msgctxt "search-result"
#~ msgid "Switch user"
#~ msgstr "Cambiâ utent"
#~ msgid "Hide tray"
#~ msgstr "Plate casset"

417
po/gl.po
View File

@@ -6,13 +6,14 @@
# Antón Méixome <meixome@certima.net>, 2009.
# Fran Diéguez <frandieguez@gnome.org>, 2009, 2010, 2011, 2012.
# Leandro Regueiro <leandro.regueiro@gmail.com>, 2012.
# Fran Dieguez <frandieguez@gnome.org>, 2012, 2013, 2014, 2015, 2016, 2017, 2018.
# Fran Dieguez <frandieguez@gnome.org>, 2012, 2013, 2014, 2015, 2016, 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: 2018-02-08 16:48+0000\n"
"PO-Revision-Date: 2018-02-09 12:15+0200\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-08-22 11:17+0000\n"
"PO-Revision-Date: 2017-08-22 15:09+0200\n"
"Last-Translator: Fran Dieguez <frandieguez@gnome.org>\n"
"Language-Team: Galician\n"
"Language: gl\n"
@@ -340,7 +341,7 @@ msgstr "Produciuse un erro ao cargar o diálogo de preferenzas para %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:925
#: js/ui/shellMountOperation.js:344 js/ui/status/network.js:936
msgid "Cancel"
msgstr "Cancelar"
@@ -405,25 +406,24 @@ msgstr "(ou pase o dedo)"
#: js/misc/systemActions.js:99
#| msgid "Power Off"
msgctxt "search-result"
msgid "Power Off"
msgid "Power off"
msgstr "Apagar"
#. Translators: A list of keywords that match the power-off action, separated by semicolons
#: js/misc/systemActions.js:102
#| msgid "power off;shutdown"
msgid "power off;shutdown;reboot;restart"
msgstr "apagar;reiniciar;"
msgid "power off;shutdown"
msgstr "apagar;"
#. Translators: The name of the lock screen action in search
#: js/misc/systemActions.js:106
#| msgctxt "search-result"
#| msgid "Lock screen"
#| msgid "Lock Screen"
msgctxt "search-result"
msgid "Lock Screen"
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:109
#| msgid "Lock Screen"
msgid "lock screen"
msgstr "bloquear pantalla;bloquear"
@@ -431,7 +431,7 @@ msgstr "bloquear pantalla;bloquear"
#: js/misc/systemActions.js:113
#| msgid "Log Out"
msgctxt "search-result"
msgid "Log Out"
msgid "Log out"
msgstr "Saír da sesión"
#. Translators: A list of keywords that match the logout action, separated by semicolons
@@ -441,12 +441,14 @@ msgstr "pechar a sesión;desloguearse;saír da sesión"
#. Translators: The name of the suspend action in search
#: js/misc/systemActions.js:120
#| msgid "Suspend"
msgctxt "search-result"
msgid "Suspend"
msgstr "Suspender"
#. Translators: A list of keywords that match the suspend action, separated by semicolons
#: js/misc/systemActions.js:123
#| msgid "Suspend"
msgid "suspend;sleep"
msgstr "Suspender;durmir"
@@ -454,27 +456,27 @@ msgstr "Suspender;durmir"
#: js/misc/systemActions.js:127
#| msgid "Switch User"
msgctxt "search-result"
msgid "Switch User"
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:130
#| msgid "Switch User"
msgid "switch user"
msgstr "cambiar de usuario"
#. Translators: The name of the lock orientation action in search
#: js/misc/systemActions.js:134
#| msgctxt "search-result"
#| msgid "Lock orientation"
#| msgid "Orientation Lock"
msgctxt "search-result"
msgid "Lock Orientation"
msgid "Lock orientation"
msgstr "Bloquear orientación"
#. Translators: A list of keywords that match the lock orientation action, separated by semicolons
#: js/misc/systemActions.js:137
#| msgid "lock orientation"
msgid "lock orientation;screen;rotation"
msgstr "bloquear orientación;pantalla;rotación"
#| msgid "Clock Format"
msgid "lock orientation"
msgstr "bloquear orientación"
#: js/misc/util.js:122
msgid "Command not found"
@@ -647,32 +649,32 @@ msgstr "Frecuentes"
msgid "All"
msgstr "Todos"
#: js/ui/appDisplay.js:1918
#: js/ui/appDisplay.js:1915
msgid "New Window"
msgstr "Xanela nova"
#: js/ui/appDisplay.js:1932
#: js/ui/appDisplay.js:1929
msgid "Launch using Dedicated Graphics Card"
msgstr "Iniciar usando a Tarxeta Gráfica Adicada"
#: js/ui/appDisplay.js:1959 js/ui/dash.js:285
#: js/ui/appDisplay.js:1956 js/ui/dash.js:289
msgid "Remove from Favorites"
msgstr "Retirar dos marcadores"
#: js/ui/appDisplay.js:1965
#: js/ui/appDisplay.js:1962
msgid "Add to Favorites"
msgstr "Engadir aos favoritos"
#: js/ui/appDisplay.js:1975
#: js/ui/appDisplay.js:1972
msgid "Show Details"
msgstr "Mostrar detalles"
#: js/ui/appFavorites.js:141
#: js/ui/appFavorites.js:140
#, javascript-format
msgid "%s has been added to your favorites."
msgstr "%s foi engadido aos seus favoritos."
#: js/ui/appFavorites.js:175
#: js/ui/appFavorites.js:174
#, javascript-format
msgid "%s has been removed from your favorites."
msgstr "%s retirouse dos seus marcadores."
@@ -710,7 +712,7 @@ 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:44
#: js/ui/calendar.js:47
msgctxt "calendar-no-work"
msgid "06"
msgstr "06"
@@ -720,115 +722,92 @@ msgstr "06"
#. * 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
#: js/ui/calendar.js:76
msgctxt "grid sunday"
msgid "S"
msgstr "D"
#. Translators: Calendar grid abbreviation for Monday
#: js/ui/calendar.js:75
#: js/ui/calendar.js:78
msgctxt "grid monday"
msgid "M"
msgstr "L"
#. Translators: Calendar grid abbreviation for Tuesday
#: js/ui/calendar.js:77
#: js/ui/calendar.js:80
msgctxt "grid tuesday"
msgid "T"
msgstr "M"
#. Translators: Calendar grid abbreviation for Wednesday
#: js/ui/calendar.js:79
#: js/ui/calendar.js:82
msgctxt "grid wednesday"
msgid "W"
msgstr "W"
#. Translators: Calendar grid abbreviation for Thursday
#: js/ui/calendar.js:81
#: js/ui/calendar.js:84
msgctxt "grid thursday"
msgid "T"
msgstr "X"
#. Translators: Calendar grid abbreviation for Friday
#: js/ui/calendar.js:83
#: js/ui/calendar.js:86
msgctxt "grid friday"
msgid "F"
msgstr "V"
#. Translators: Calendar grid abbreviation for Saturday
#: js/ui/calendar.js:85
#: js/ui/calendar.js:88
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:382
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:392
msgid "%OB %Y"
msgstr "%B de %Y"
#: js/ui/calendar.js:449
#: js/ui/calendar.js:442
msgid "Previous month"
msgstr "Anterior mes"
#: js/ui/calendar.js:459
#: js/ui/calendar.js:452
msgid "Next month"
msgstr "Seguinte mes"
#: js/ui/calendar.js:612
#: js/ui/calendar.js:605
#, no-javascript-format
msgctxt "date day number format"
msgid "%d"
msgstr "%d"
#: js/ui/calendar.js:667
#: js/ui/calendar.js:660
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:736
#: js/ui/calendar.js:729
msgctxt "event list time"
msgid "All Day"
msgstr "Todo o día"
#: js/ui/calendar.js:869
#: js/ui/calendar.js:862
msgctxt "calendar heading"
msgid "%A, %B %d"
msgstr "%A, %d de %B"
#: js/ui/calendar.js:873
#: js/ui/calendar.js:866
msgctxt "calendar heading"
msgid "%A, %B %d, %Y"
msgstr "%A, %d de %B de %Y"
#: js/ui/calendar.js:1093
#: js/ui/calendar.js:1086
msgid "No Notifications"
msgstr "Non hai notificacións"
#: js/ui/calendar.js:1096
#: js/ui/calendar.js:1089
msgid "No Events"
msgstr "Non hai eventos"
#: js/ui/calendar.js:1124
#: js/ui/calendar.js:1117
msgid "Clear All"
msgstr "Limpar todo"
@@ -862,7 +841,7 @@ msgstr "Unidade externa conectada"
msgid "External drive disconnected"
msgstr "Unidade externa desconectada"
#: js/ui/components/autorunManager.js:358
#: js/ui/components/autorunManager.js:354
#, javascript-format
msgid "Open with %s"
msgstr "Abrir con %s"
@@ -875,8 +854,8 @@ msgstr "Contrasinal:"
msgid "Type again:"
msgstr "Escriba de novo:"
#: js/ui/components/networkAgent.js:112 js/ui/status/network.js:245
#: js/ui/status/network.js:338 js/ui/status/network.js:928
#: 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 "Conectar"
@@ -904,11 +883,11 @@ msgstr "Contrasinal da chave privada: "
msgid "Service: "
msgstr "Servizo: "
#: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:659
#: js/ui/components/networkAgent.js:292 js/ui/components/networkAgent.js:638
msgid "Authentication required by wireless network"
msgstr "A rede sen fíos require autenticación"
#: js/ui/components/networkAgent.js:293 js/ui/components/networkAgent.js:660
#: 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 "
@@ -917,7 +896,7 @@ msgstr ""
"Requírense contrasinais ou chaves de cifrado para acceder á rede sen fíos "
"«%s»."
#: js/ui/components/networkAgent.js:297 js/ui/components/networkAgent.js:663
#: js/ui/components/networkAgent.js:297 js/ui/components/networkAgent.js:642
msgid "Wired 802.1X authentication"
msgstr "Autenticación con fíos 802.1X"
@@ -925,15 +904,15 @@ msgstr "Autenticación con fíos 802.1X"
msgid "Network name: "
msgstr "Nome da rede:"
#: js/ui/components/networkAgent.js:304 js/ui/components/networkAgent.js:667
#: js/ui/components/networkAgent.js:304 js/ui/components/networkAgent.js:646
msgid "DSL authentication"
msgstr "Autenticación DSL"
#: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:673
#: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:652
msgid "PIN code required"
msgstr "Requírese un código PIN"
#: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:674
#: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:653
msgid "PIN code is needed for the mobile broadband device"
msgstr "É necesario un código PIN para o dispositivo de banda larga móbil"
@@ -941,17 +920,17 @@ msgstr "É necesario un código PIN para o dispositivo de banda larga móbil"
msgid "PIN: "
msgstr "PIN:"
#: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:680
#: js/ui/components/networkAgent.js:320 js/ui/components/networkAgent.js:659
msgid "Mobile broadband network password"
msgstr "Contrasinal da rede de banda larga móbil"
#: js/ui/components/networkAgent.js:321 js/ui/components/networkAgent.js:664
#: js/ui/components/networkAgent.js:668 js/ui/components/networkAgent.js:681
#: 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 "Requírese un contrasinal para conectarse a «%s»."
#: js/ui/components/networkAgent.js:648 js/ui/status/network.js:1699
#: js/ui/components/networkAgent.js:627 js/ui/status/network.js:1720
msgid "Network Manager"
msgstr "Xestor da rede"
@@ -986,20 +965,20 @@ msgstr "Agora %s chámase %s"
msgid "Windows"
msgstr "Xanelas"
#: js/ui/dash.js:246 js/ui/dash.js:287
#: js/ui/dash.js:250 js/ui/dash.js:291
msgid "Show Applications"
msgstr "Mostrar aplicativos"
#. Translators: this is the name of the dock/favorites area on
#. the left of the overview
#: js/ui/dash.js:445
#: js/ui/dash.js:449
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 shell (e.g. "Tue 9:29 AM").
#.
#: js/ui/dateMenu.js:76
#: js/ui/dateMenu.js:75
msgid "%B %e %Y"
msgstr "%e de %B de %Y"
@@ -1007,19 +986,19 @@ msgstr "%e de %B de %Y"
#. * below the time in the shell; it should combine the weekday and the
#. * date, e.g. "Tuesday February 17 2015".
#.
#: js/ui/dateMenu.js:83
#: js/ui/dateMenu.js:82
msgid "%A %B %e %Y"
msgstr "%A, %e de %B de %Y"
#: js/ui/dateMenu.js:148
#: js/ui/dateMenu.js:144
msgid "Add world clocks…"
msgstr "Engadir reloxos do mundo…"
#: js/ui/dateMenu.js:149
#: js/ui/dateMenu.js:145
msgid "World Clocks"
msgstr "Reloxos do mundo"
#: js/ui/dateMenu.js:228
#: js/ui/dateMenu.js:224
msgid "Weather"
msgstr "Tempo"
@@ -1027,7 +1006,7 @@ msgstr "Tempo"
#. 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
#: js/ui/dateMenu.js:286
#, javascript-format
msgid "%s all day."
msgstr "%s todo o día"
@@ -1036,7 +1015,7 @@ msgstr "%s todo o día"
#. 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
#: js/ui/dateMenu.js:292
#, javascript-format
msgid "%s, then %s later."
msgstr "%s, entón %s máis tarde."
@@ -1045,30 +1024,30 @@ msgstr "%s, entón %s máis tarde."
#. 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:304
#: js/ui/dateMenu.js:298
#, javascript-format
msgid "%s, then %s, followed by %s later."
msgstr "%s, entón %s, seguido de %s máis tarde."
#: js/ui/dateMenu.js:315
#: js/ui/dateMenu.js:309
msgid "Select a location…"
msgstr "Seleccione unha localizacion…"
#: js/ui/dateMenu.js:318
#: js/ui/dateMenu.js:312
msgid "Loading…"
msgstr "Cargando…"
#. Translators: %s is a temperature with unit, e.g. "23℃"
#: js/ui/dateMenu.js:324
#: js/ui/dateMenu.js:318
#, javascript-format
msgid "Feels like %s."
msgstr "Sensación de %s."
#: js/ui/dateMenu.js:327
#: js/ui/dateMenu.js:321
msgid "Go online for weather information"
msgstr "Conectarse para var a información do tempo"
#: js/ui/dateMenu.js:329
#: js/ui/dateMenu.js:323
msgid "Weather information is currently unavailable"
msgstr "A información do tempo non está dispoñíbel actualmente"
@@ -1253,78 +1232,9 @@ msgstr "Denegar"
msgid "Allow"
msgstr "Permitir"
#: js/ui/kbdA11yDialog.js:33
#| msgid "Slow Keys"
msgid "Slow Keys Turned On"
msgstr "Teclas lentas activadas"
#: js/ui/kbdA11yDialog.js:34
#| msgid "Slow Keys"
msgid "Slow Keys Turned Off"
msgstr "Teclas lentas desactivadas"
#: 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 ""
"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"
msgid "Sticky Keys Turned On"
msgstr "Teclas persistentes activadas"
#: js/ui/kbdA11yDialog.js:43
#| msgid "Sticky Keys"
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 presionado 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:59
msgid "Leave On"
msgstr "Deixar activado"
#: js/ui/kbdA11yDialog.js:59 js/ui/status/bluetooth.js:143
#: js/ui/status/network.js:1287
msgid "Turn On"
msgstr "Activar"
#: js/ui/kbdA11yDialog.js:67 js/ui/status/bluetooth.js:143
#: js/ui/status/network.js:154 js/ui/status/network.js:339
#: js/ui/status/network.js:1287 js/ui/status/network.js:1402
#: js/ui/status/nightLight.js:47 js/ui/status/rfkill.js:90
#: js/ui/status/rfkill.js:117
msgid "Turn Off"
msgstr "Apagar"
#: js/ui/kbdA11yDialog.js:67
msgid "Leave Off"
msgstr "Deixar desactivado"
#: js/ui/keyboard.js:198
msgid "Region & Language Settings"
msgstr "Preferencias de rexión e idioma"
#: js/ui/keyboard.js:738 js/ui/status/keyboard.js:782
msgid "Keyboard"
msgstr "Teclado"
#: js/ui/lookingGlass.js:642
msgid "No extensions installed"
@@ -1374,7 +1284,7 @@ msgstr "Ver fonte"
msgid "Web Page"
msgstr "Páxina web"
#: js/ui/messageTray.js:1494
#: js/ui/messageTray.js:1493
msgid "System Information"
msgstr "Información do sistema"
@@ -1463,7 +1373,7 @@ msgctxt "System menu in the top bar"
msgid "System"
msgstr "Sistema"
#: js/ui/panel.js:814
#: js/ui/panel.js:812
msgid "Top Bar"
msgstr "Barra superior"
@@ -1527,11 +1437,11 @@ msgstr "GNOME precisa bloquear a pantalla"
#.
#. 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:1311
#: js/ui/screenShield.js:836 js/ui/screenShield.js:1308
msgid "Unable to lock"
msgstr "Non foi posíbel bloquear"
#: js/ui/screenShield.js:837 js/ui/screenShield.js:1312
#: js/ui/screenShield.js:837 js/ui/screenShield.js:1309
msgid "Lock was blocked by an application"
msgstr "Un aplicativo impediu o bloqueo"
@@ -1618,39 +1528,46 @@ msgstr "Contraste alto"
msgid "Large Text"
msgstr "Texto grande"
#: js/ui/status/bluetooth.js:48
#: js/ui/status/bluetooth.js:47
msgid "Bluetooth"
msgstr "Bluetooth"
#: js/ui/status/bluetooth.js:57 js/ui/status/network.js:616
#: js/ui/status/bluetooth.js:56 js/ui/status/network.js:627
msgid "Bluetooth Settings"
msgstr "Preferencias do Bluetooth"
#. Translators: this is the number of connected bluetooth devices
#: js/ui/status/bluetooth.js:137
#: js/ui/status/bluetooth.js:136
#, javascript-format
msgid "%d Connected"
msgid_plural "%d Connected"
msgstr[0] "%d conectado"
msgstr[1] "%d conectados"
#: js/ui/status/bluetooth.js:139
#: js/ui/status/bluetooth.js:138
msgid "Off"
msgstr "Desactivar"
#: js/ui/status/bluetooth.js:141
#: js/ui/status/bluetooth.js:140
msgid "On"
msgstr "Activado"
#: js/ui/status/bluetooth.js:142 js/ui/status/network.js:1299
msgid "Turn On"
msgstr "Activar"
#: 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 "Apagar"
#: js/ui/status/brightness.js:44
msgid "Brightness"
msgstr "Brillo"
#: js/ui/status/keyboard.js:783
msgid "Keyboard"
msgstr "Teclado"
#: js/ui/status/keyboard.js:806
#: js/ui/status/keyboard.js:805
msgid "Show Keyboard Layout"
msgstr "Mostrar a distribución do teclado"
@@ -1690,18 +1607,18 @@ msgstr ""
"Pode cambiar o acceso á localización en calquera momento desde as "
"preferencias de privacidade."
#: js/ui/status/network.js:90
#: js/ui/status/network.js:104
msgid "<unknown>"
msgstr "<descoñecido>"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:443 js/ui/status/network.js:1316
#: js/ui/status/network.js:454 js/ui/status/network.js:1328
#, javascript-format
msgid "%s Off"
msgstr "%s apagado"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:446
#: js/ui/status/network.js:457
#, javascript-format
msgid "%s Connected"
msgstr "%s conectado"
@@ -1709,189 +1626,189 @@ msgstr "%s conectado"
#. 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
#: js/ui/status/network.js:462
#, javascript-format
msgid "%s Unmanaged"
msgstr "%s sen xestionar"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:454
#: js/ui/status/network.js:465
#, javascript-format
msgid "%s Disconnecting"
msgstr "%s desconectando"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:461 js/ui/status/network.js:1308
#: js/ui/status/network.js:472 js/ui/status/network.js:1320
#, javascript-format
msgid "%s Connecting"
msgstr "%s conectando"
#. 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
#: js/ui/status/network.js:475
#, javascript-format
msgid "%s Requires Authentication"
msgstr "%s require autenticación"
#. 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
#: js/ui/status/network.js:483
#, javascript-format
msgid "Firmware Missing For %s"
msgstr "Falta o firmware para %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
#: js/ui/status/network.js:487
#, javascript-format
msgid "%s Unavailable"
msgstr "%s non dispoñíbel"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:479
#: js/ui/status/network.js:490
#, javascript-format
msgid "%s Connection Failed"
msgstr "%s conexión fallada"
#: js/ui/status/network.js:495
#: js/ui/status/network.js:506
msgid "Wired Settings"
msgstr "Preferencias da rede con fíos"
#: js/ui/status/network.js:537
#: js/ui/status/network.js:548
msgid "Mobile Broadband Settings"
msgstr "Preferencias da banda larga móbil"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:580 js/ui/status/network.js:1313
#: js/ui/status/network.js:591 js/ui/status/network.js:1325
#, javascript-format
msgid "%s Hardware Disabled"
msgstr "%s hardware desactivado"
#. 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
#: js/ui/status/network.js:595
#, javascript-format
msgid "%s Disabled"
msgstr "%s desactivado"
#: js/ui/status/network.js:624
#: js/ui/status/network.js:635
msgid "Connect to Internet"
msgstr "Conectarse a internet"
#: js/ui/status/network.js:822
#: js/ui/status/network.js:833
msgid "Airplane Mode is On"
msgstr "Modo avión activado"
#: js/ui/status/network.js:823
#: js/ui/status/network.js:834
msgid "Wi-Fi is disabled when airplane mode is on."
msgstr "A Wifi está desactivada cando o modo avión está activo."
#: js/ui/status/network.js:824
#: js/ui/status/network.js:835
msgid "Turn Off Airplane Mode"
msgstr "Desactivar o modo avión"
#: js/ui/status/network.js:833
#: js/ui/status/network.js:844
msgid "Wi-Fi is Off"
msgstr "Wifi desactivada"
#: js/ui/status/network.js:834
#: js/ui/status/network.js:845
msgid "Wi-Fi needs to be turned on in order to connect to a network."
msgstr "A Wifi precisa activarse para poder conectarse á rede."
#: js/ui/status/network.js:835
#: js/ui/status/network.js:846
msgid "Turn On Wi-Fi"
msgstr "Activar Wifi"
#: js/ui/status/network.js:860
#: js/ui/status/network.js:871
msgid "Wi-Fi Networks"
msgstr "Redes WiFi"
#: js/ui/status/network.js:862
#: js/ui/status/network.js:873
msgid "Select a network"
msgstr "Seleccione unha rede"
#: js/ui/status/network.js:892
#: js/ui/status/network.js:903
msgid "No Networks"
msgstr "Sen redes"
#: js/ui/status/network.js:913 js/ui/status/rfkill.js:115
#: js/ui/status/network.js:924 js/ui/status/rfkill.js:115
msgid "Use hardware switch to turn off"
msgstr "Usar interruptor hardware para apagar"
#: js/ui/status/network.js:1179
#: js/ui/status/network.js:1191
msgid "Select Network"
msgstr "Seleccione unha rede"
#: js/ui/status/network.js:1185
#: js/ui/status/network.js:1197
msgid "Wi-Fi Settings"
msgstr "Preferencias da WiFi"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1304
#: js/ui/status/network.js:1316
#, javascript-format
msgid "%s Hotspot Active"
msgstr "%s punto wifi activo"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1319
#: js/ui/status/network.js:1331
#, javascript-format
msgid "%s Not Connected"
msgstr "%s non conectado"
#: js/ui/status/network.js:1419
#: js/ui/status/network.js:1435
msgid "connecting…"
msgstr "conectando…"
#. Translators: this is for network connections that require some kind of key or password
#: js/ui/status/network.js:1422
#: js/ui/status/network.js:1438
msgid "authentication required"
msgstr "requírese autenticación"
#: js/ui/status/network.js:1424
#: js/ui/status/network.js:1440
msgid "connection failed"
msgstr "conexión fallada"
#: js/ui/status/network.js:1478
#: js/ui/status/network.js:1494
msgid "VPN Settings"
msgstr "Preferencias de VPN"
#: js/ui/status/network.js:1491
#: js/ui/status/network.js:1498
msgid "VPN"
msgstr "VPN"
#: js/ui/status/network.js:1501
#: js/ui/status/network.js:1508
msgid "VPN Off"
msgstr "VPN desactivada"
#: js/ui/status/network.js:1565 js/ui/status/rfkill.js:93
#: js/ui/status/network.js:1572 js/ui/status/rfkill.js:93
msgid "Network Settings"
msgstr "Preferencias da rede"
#: js/ui/status/network.js:1596
#: js/ui/status/network.js:1603
#, javascript-format
msgid "%s Wired Connection"
msgid_plural "%s Wired Connections"
msgstr[0] "%s conectando con fíos"
msgstr[1] "%s conectando con fíos"
#: js/ui/status/network.js:1600
#: js/ui/status/network.js:1607
#, javascript-format
msgid "%s Wi-Fi Connection"
msgid_plural "%s Wi-Fi Connections"
msgstr[0] "%s conectando sen fíos"
msgstr[1] "%s con fíos conectando"
#: js/ui/status/network.js:1604
#: js/ui/status/network.js:1611
#, javascript-format
msgid "%s Modem Connection"
msgid_plural "%s Modem Connections"
msgstr[0] "%s con módem conectando"
msgstr[1] "%s conectando sen fíos"
#: js/ui/status/network.js:1738
#: js/ui/status/network.js:1759
msgid "Connection failed"
msgstr "Produciuse un fallo na conexión"
#: js/ui/status/network.js:1739
#: js/ui/status/network.js:1760
msgid "Activation of network connection failed"
msgstr "Produciuse un fallo na activación da conexión de rede"
@@ -1973,32 +1890,6 @@ msgstr "Suspender"
msgid "Power Off"
msgstr "Apagar"
#: js/ui/status/thunderbolt.js:272
msgid "Thunderbolt"
msgstr "Thunderbolt"
#. we are done
#: js/ui/status/thunderbolt.js:330
msgid "Unknown Thunderbolt device"
msgstr "Dispositivo Thunderbolt descoñecido"
#: js/ui/status/thunderbolt.js:331
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:336
msgid "Thunderbolt authorization error"
msgstr "Erro de autorización de Thunderbolt"
#: js/ui/status/thunderbolt.js:337
#, 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:128
msgid "Volume changed"
msgstr "Volume cambiado"
@@ -2011,6 +1902,7 @@ msgstr "Volume"
#. * Try to keep it under around 15 characters.
#.
#: js/ui/switchMonitor.js:21
#| msgid "Error"
msgid "Mirror"
msgstr "Espello"
@@ -2018,6 +1910,7 @@ msgstr "Espello"
#. * Try to keep it under around 15 characters.
#.
#: js/ui/switchMonitor.js:26
#| msgid "Panel Display"
msgid "Join Displays"
msgstr "Unir pantallas"
@@ -2158,21 +2051,21 @@ msgstr "Calendario de Evolution"
msgid "evolution"
msgstr "evolution"
#: src/main.c:432
#: src/main.c:380
msgid "Print version"
msgstr "Imprimir versión"
#: src/main.c:438
#: src/main.c:386
msgid "Mode used by GDM for login screen"
msgstr "Modo usado por GDM para a pantalla de inicio"
#: src/main.c:444
#: src/main.c:392
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:450
#: src/main.c:398
msgid "List possible modes"
msgstr "Listar os modos posíbeis"
@@ -2220,21 +2113,6 @@ msgstr[1] "%u entradas"
msgid "System Sounds"
msgstr "Sons do sistema"
#~| msgid "Power Off"
#~ msgctxt "search-result"
#~ msgid "Power off"
#~ msgstr "Apagar"
#~| msgid "Log Out"
#~ msgctxt "search-result"
#~ msgid "Log out"
#~ msgstr "Saír da sesión"
#~| msgid "Switch User"
#~ msgctxt "search-result"
#~ msgid "Switch user"
#~ msgstr "Cambiar de usuario"
#~ msgid "Hide tray"
#~ msgstr "Ocultar bandexa"
@@ -2774,6 +2652,9 @@ msgstr "Sons do sistema"
#~ msgid "Mouse Settings"
#~ msgstr "Preferencias do rato"
#~ msgid "Region & Language Settings"
#~ msgstr "Preferencias de rexión e idioma"
#~ msgid "Wi-Fi"
#~ msgstr "Wifi"

Some files were not shown because too many files have changed in this diff Show More