Merge remote branch origin/master into zeitgeist
This commit is contained in:
commit
e4e6b26e15
3
.gitignore
vendored
3
.gitignore
vendored
@ -44,8 +44,9 @@ src/calendar-server/org.gnome.Shell.CalendarServer.service
|
|||||||
src/gnome-shell
|
src/gnome-shell
|
||||||
src/gnome-shell-calendar-server
|
src/gnome-shell-calendar-server
|
||||||
src/gnome-shell-extension-tool
|
src/gnome-shell-extension-tool
|
||||||
src/gnome-shell-real
|
|
||||||
src/gnome-shell-jhbuild
|
src/gnome-shell-jhbuild
|
||||||
|
src/gnome-shell-perf-helper
|
||||||
|
src/gnome-shell-real
|
||||||
src/run-js-test
|
src/run-js-test
|
||||||
src/test-recorder
|
src/test-recorder
|
||||||
src/test-recorder.ogg
|
src/test-recorder.ogg
|
||||||
|
18
configure.ac
18
configure.ac
@ -1,5 +1,5 @@
|
|||||||
AC_PREREQ(2.63)
|
AC_PREREQ(2.63)
|
||||||
AC_INIT([gnome-shell],[2.91.91],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell])
|
AC_INIT([gnome-shell],[2.91.92],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell])
|
||||||
|
|
||||||
AC_CONFIG_HEADERS([config.h])
|
AC_CONFIG_HEADERS([config.h])
|
||||||
AC_CONFIG_SRCDIR([src/shell-global.c])
|
AC_CONFIG_SRCDIR([src/shell-global.c])
|
||||||
@ -71,13 +71,14 @@ LIBEDATASERVER_MIN_VERSION=1.2.0
|
|||||||
LIBEDATASERVERUI2_MIN_VERSION=1.2.0
|
LIBEDATASERVERUI2_MIN_VERSION=1.2.0
|
||||||
LIBEDATASERVERUI3_MIN_VERSION=2.91.6
|
LIBEDATASERVERUI3_MIN_VERSION=2.91.6
|
||||||
TELEPATHY_GLIB_MIN_VERSION=0.13.12
|
TELEPATHY_GLIB_MIN_VERSION=0.13.12
|
||||||
|
TELEPATHY_LOGGER_MIN_VERSION=0.2.4
|
||||||
POLKIT_MIN_VERSION=0.100
|
POLKIT_MIN_VERSION=0.100
|
||||||
|
|
||||||
# Collect more than 20 libraries for a prize!
|
# Collect more than 20 libraries for a prize!
|
||||||
PKG_CHECK_MODULES(GNOME_SHELL, gio-2.0 >= $GIO_MIN_VERSION
|
PKG_CHECK_MODULES(GNOME_SHELL, gio-2.0 >= $GIO_MIN_VERSION
|
||||||
gio-unix-2.0 dbus-glib-1 libxml-2.0
|
gio-unix-2.0 dbus-glib-1 libxml-2.0
|
||||||
gtk+-3.0 >= $GTK_MIN_VERSION
|
gtk+-3.0 >= $GTK_MIN_VERSION
|
||||||
libmutter-wm >= $MUTTER_MIN_VERSION
|
libmutter >= $MUTTER_MIN_VERSION
|
||||||
gjs-internals-1.0 >= $GJS_MIN_VERSION
|
gjs-internals-1.0 >= $GJS_MIN_VERSION
|
||||||
libgnome-menu $recorder_modules gconf-2.0
|
libgnome-menu $recorder_modules gconf-2.0
|
||||||
gdk-x11-3.0
|
gdk-x11-3.0
|
||||||
@ -87,6 +88,7 @@ PKG_CHECK_MODULES(GNOME_SHELL, gio-2.0 >= $GIO_MIN_VERSION
|
|||||||
gobject-introspection-1.0 >= $GOBJECT_INTROSPECTION_MIN_VERSION
|
gobject-introspection-1.0 >= $GOBJECT_INTROSPECTION_MIN_VERSION
|
||||||
libcanberra
|
libcanberra
|
||||||
telepathy-glib >= $TELEPATHY_GLIB_MIN_VERSION
|
telepathy-glib >= $TELEPATHY_GLIB_MIN_VERSION
|
||||||
|
telepathy-logger-0.2 >= $TELEPATHY_LOGGER_MIN_VERSION
|
||||||
polkit-agent-1 >= $POLKIT_MIN_VERSION)
|
polkit-agent-1 >= $POLKIT_MIN_VERSION)
|
||||||
|
|
||||||
PKG_CHECK_MODULES(SHELL_PERF_HELPER, gtk+-3.0 gio-2.0)
|
PKG_CHECK_MODULES(SHELL_PERF_HELPER, gtk+-3.0 gio-2.0)
|
||||||
@ -96,6 +98,14 @@ AC_DEFINE_UNQUOTED([GJS_VERSION], ["$GJS_VERSION"], [The version of GJS we're li
|
|||||||
AC_SUBST([GJS_VERSION], ["$GJS_VERSION"])
|
AC_SUBST([GJS_VERSION], ["$GJS_VERSION"])
|
||||||
|
|
||||||
GOBJECT_INTROSPECTION_CHECK([$GOBJECT_INTROSPECTION_MIN_VERSION])
|
GOBJECT_INTROSPECTION_CHECK([$GOBJECT_INTROSPECTION_MIN_VERSION])
|
||||||
|
JHBUILD_TYPELIBDIR="$INTROSPECTION_TYPELIBDIR"
|
||||||
|
# NM is the only typelib we use that we don't jhbuild
|
||||||
|
PKG_CHECK_EXISTS([libnm-glib >= 0.8.995],
|
||||||
|
[NM_TYPELIBDIR=`$PKG_CONFIG --variable=libdir libnm-glib`/girepository-1.0
|
||||||
|
if test "$INTROSPECTION_TYPELIBDIR" != "$NM_TYPELIBDIR"; then
|
||||||
|
JHBUILD_TYPELIBDIR="$JHBUILD_TYPELIBDIR:$NM_TYPELIBDIR"
|
||||||
|
fi])
|
||||||
|
AC_SUBST(JHBUILD_TYPELIBDIR)
|
||||||
|
|
||||||
saved_CFLAGS=$CFLAGS
|
saved_CFLAGS=$CFLAGS
|
||||||
saved_LIBS=$LIBS
|
saved_LIBS=$LIBS
|
||||||
@ -136,8 +146,8 @@ PKG_CHECK_MODULES(CALENDAR_SERVER, libecal-1.2 >= $LIBECAL_MIN_VERSION libedatas
|
|||||||
AC_SUBST(CALENDAR_SERVER_CFLAGS)
|
AC_SUBST(CALENDAR_SERVER_CFLAGS)
|
||||||
AC_SUBST(CALENDAR_SERVER_LIBS)
|
AC_SUBST(CALENDAR_SERVER_LIBS)
|
||||||
|
|
||||||
MUTTER_GIR_DIR=`$PKG_CONFIG --variable=girdir libmutter-wm`
|
MUTTER_GIR_DIR=`$PKG_CONFIG --variable=girdir libmutter`
|
||||||
MUTTER_TYPELIB_DIR=`$PKG_CONFIG --variable=typelibdir libmutter-wm`
|
MUTTER_TYPELIB_DIR=`$PKG_CONFIG --variable=typelibdir libmutter`
|
||||||
AC_SUBST(MUTTER_GIR_DIR)
|
AC_SUBST(MUTTER_GIR_DIR)
|
||||||
AC_SUBST(MUTTER_TYPELIB_DIR)
|
AC_SUBST(MUTTER_TYPELIB_DIR)
|
||||||
|
|
||||||
|
@ -24,7 +24,8 @@ dist_theme_DATA = \
|
|||||||
theme/calendar-today.svg \
|
theme/calendar-today.svg \
|
||||||
theme/close-window.svg \
|
theme/close-window.svg \
|
||||||
theme/close.svg \
|
theme/close.svg \
|
||||||
theme/corner-ripple.png \
|
theme/corner-ripple-ltr.png \
|
||||||
|
theme/corner-ripple-rtl.png \
|
||||||
theme/dash-placeholder.svg \
|
theme/dash-placeholder.svg \
|
||||||
theme/filter-selected-ltr.svg \
|
theme/filter-selected-ltr.svg \
|
||||||
theme/filter-selected-rtl.svg \
|
theme/filter-selected-rtl.svg \
|
||||||
@ -49,6 +50,7 @@ dist_theme_DATA = \
|
|||||||
theme/separator-white.png \
|
theme/separator-white.png \
|
||||||
theme/single-view-active.svg \
|
theme/single-view-active.svg \
|
||||||
theme/single-view.svg \
|
theme/single-view.svg \
|
||||||
|
theme/source-button-border.svg \
|
||||||
theme/toggle-off-us.svg \
|
theme/toggle-off-us.svg \
|
||||||
theme/toggle-off-intl.svg \
|
theme/toggle-off-intl.svg \
|
||||||
theme/toggle-on-us.svg \
|
theme/toggle-on-us.svg \
|
||||||
|
@ -13,3 +13,4 @@ NoDisplay=true
|
|||||||
X-GNOME-Autostart-Phase=WindowManager
|
X-GNOME-Autostart-Phase=WindowManager
|
||||||
X-GNOME-Provides=panel;windowmanager;
|
X-GNOME-Provides=panel;windowmanager;
|
||||||
X-GNOME-Autostart-Notify=true
|
X-GNOME-Autostart-Notify=true
|
||||||
|
X-GNOME-AutoRestart=true
|
||||||
|
@ -81,5 +81,20 @@
|
|||||||
</locale>
|
</locale>
|
||||||
</schema>
|
</schema>
|
||||||
|
|
||||||
|
<schema>
|
||||||
|
<key>/schemas/desktop/gnome/shell/windows/workspaces_only_on_primary</key>
|
||||||
|
<applyto>/desktop/gnome/shell/windows/workspaces_only_on_primary</applyto>
|
||||||
|
<owner>gnome-shell</owner>
|
||||||
|
<type>bool</type>
|
||||||
|
<default>true</default>
|
||||||
|
<locale name="C">
|
||||||
|
<short>Workspaces only on primary monitor</short>
|
||||||
|
<long>
|
||||||
|
This key overrides /apps/mutter/general/workspaces_only_on_primary when
|
||||||
|
running GNOME Shell.
|
||||||
|
</long>
|
||||||
|
</locale>
|
||||||
|
</schema>
|
||||||
|
|
||||||
</schemalist>
|
</schemalist>
|
||||||
</gconfschemafile>
|
</gconfschemafile>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<schemalist>
|
<schemalist>
|
||||||
<schema id="org.gnome.shell" path="/apps/gnome-shell/"
|
<schema id="org.gnome.shell" path="/org/gnome/shell/"
|
||||||
gettext-domain="@GETTEXT_PACKAGE@">
|
gettext-domain="@GETTEXT_PACKAGE@">
|
||||||
<key name="development-tools" type="b">
|
<key name="development-tools" type="b">
|
||||||
<default>true</default>
|
<default>true</default>
|
||||||
@ -54,7 +54,7 @@
|
|||||||
<child name="recorder" schema="org.gnome.shell.recorder"/>
|
<child name="recorder" schema="org.gnome.shell.recorder"/>
|
||||||
</schema>
|
</schema>
|
||||||
|
|
||||||
<schema id="org.gnome.shell.calendar" path="/apps/gnome-shell/calendar/"
|
<schema id="org.gnome.shell.calendar" path="/org/gnome/shell/calendar/"
|
||||||
gettext-domain="@GETTEXT_PACKAGE@">
|
gettext-domain="@GETTEXT_PACKAGE@">
|
||||||
<key name="show-weekdate" type="b">
|
<key name="show-weekdate" type="b">
|
||||||
<default>false</default>
|
<default>false</default>
|
||||||
@ -65,7 +65,7 @@
|
|||||||
</key>
|
</key>
|
||||||
</schema>
|
</schema>
|
||||||
|
|
||||||
<schema id="org.gnome.shell.clock" path="/apps/gnome-shell/clock/"
|
<schema id="org.gnome.shell.clock" path="/org/gnome/shell/clock/"
|
||||||
gettext-domain="@GETTEXT_PACKAGE@">
|
gettext-domain="@GETTEXT_PACKAGE@">
|
||||||
<key name="show-seconds" type="b">
|
<key name="show-seconds" type="b">
|
||||||
<default>false</default>
|
<default>false</default>
|
||||||
@ -83,7 +83,7 @@
|
|||||||
</key>
|
</key>
|
||||||
</schema>
|
</schema>
|
||||||
|
|
||||||
<schema id="org.gnome.shell.recorder" path="/apps/gnome-shell/recorder/"
|
<schema id="org.gnome.shell.recorder" path="/org/gnome/shell/recorder/"
|
||||||
gettext-domain="@GETTEXT_PACKAGE@">
|
gettext-domain="@GETTEXT_PACKAGE@">
|
||||||
<key name="framerate" type="i">
|
<key name="framerate" type="i">
|
||||||
<default>15</default>
|
<default>15</default>
|
||||||
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 2.4 KiB |
BIN
data/theme/corner-ripple-rtl.png
Normal file
BIN
data/theme/corner-ripple-rtl.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.3 KiB |
@ -34,13 +34,6 @@ stage {
|
|||||||
color: rgba(0,0,0,0.5);
|
color: rgba(0,0,0,0.5);
|
||||||
}
|
}
|
||||||
|
|
||||||
.label-real-shadow {
|
|
||||||
background-gradient-direction: horizontal;
|
|
||||||
background-gradient-start: rgba(0, 0, 0, 0);
|
|
||||||
background-gradient-end: rgba(0, 0, 0, 255);
|
|
||||||
width: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
StScrollBar
|
StScrollBar
|
||||||
{
|
{
|
||||||
padding: 0px;
|
padding: 0px;
|
||||||
@ -82,10 +75,10 @@ StScrollBar StButton#vhandle:hover
|
|||||||
}
|
}
|
||||||
|
|
||||||
StTooltip StLabel {
|
StTooltip StLabel {
|
||||||
border: 1px solid rgba(79,111,173,1);
|
border: 1px solid rgba(255,255,255,0.6);
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
padding: 4px;
|
padding: 2px 12px;
|
||||||
background-color: rgba(79,111,173,0.9);
|
background-color: rgba(0,0,0,0.9);
|
||||||
color: #ffffff;
|
color: #ffffff;
|
||||||
font-size: 0.8em;
|
font-size: 0.8em;
|
||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
@ -105,7 +98,7 @@ StTooltip StLabel {
|
|||||||
|
|
||||||
.popup-menu {
|
.popup-menu {
|
||||||
color: #ffffff;
|
color: #ffffff;
|
||||||
font-size: 14px;
|
font-size: 10.5pt;
|
||||||
min-width: 200px;
|
min-width: 200px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -160,6 +153,14 @@ StTooltip StLabel {
|
|||||||
spacing: .5em;
|
spacing: .5em;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.popup-inactive-menu-item {
|
||||||
|
color: #999;
|
||||||
|
}
|
||||||
|
|
||||||
|
.popup-subtitle-menu-item {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
.popup-menu-icon {
|
.popup-menu-icon {
|
||||||
icon-size: 1.14em;
|
icon-size: 1.14em;
|
||||||
}
|
}
|
||||||
@ -190,6 +191,8 @@ StTooltip StLabel {
|
|||||||
color: #ffffff;
|
color: #ffffff;
|
||||||
background-color: black;
|
background-color: black;
|
||||||
border-image: url("panel-border.svg") 1;
|
border-image: url("panel-border.svg") 1;
|
||||||
|
font-size: 10.5pt;
|
||||||
|
height: 1.86em;
|
||||||
}
|
}
|
||||||
|
|
||||||
#panelLeft, #panelCenter, #panelRight {
|
#panelLeft, #panelCenter, #panelRight {
|
||||||
@ -249,12 +252,16 @@ StTooltip StLabel {
|
|||||||
|
|
||||||
.panel-button {
|
.panel-button {
|
||||||
padding: 0px 12px;
|
padding: 0px 12px;
|
||||||
font-size: 14px;
|
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
color: #ccc;
|
color: #ccc;
|
||||||
transition-duration: 100;
|
transition-duration: 100;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.panel-button:hover {
|
||||||
|
color: white;
|
||||||
|
text-shadow: black 0px 2px 2px;
|
||||||
|
}
|
||||||
|
|
||||||
.panel-button:active,
|
.panel-button:active,
|
||||||
.panel-button:checked,
|
.panel-button:checked,
|
||||||
.panel-button:focus {
|
.panel-button:focus {
|
||||||
@ -317,7 +324,7 @@ StTooltip StLabel {
|
|||||||
background-color: rgba(0,0,0,0.6);
|
background-color: rgba(0,0,0,0.6);
|
||||||
}
|
}
|
||||||
|
|
||||||
.workspaces-view {
|
.window-caption {
|
||||||
color: white;
|
color: white;
|
||||||
spacing: 25px;
|
spacing: 25px;
|
||||||
}
|
}
|
||||||
@ -346,13 +353,14 @@ StTooltip StLabel {
|
|||||||
|
|
||||||
.workspace-thumbnail-indicator {
|
.workspace-thumbnail-indicator {
|
||||||
outline: 2px solid white;
|
outline: 2px solid white;
|
||||||
|
border: 1px solid #888;
|
||||||
}
|
}
|
||||||
|
|
||||||
.window-caption {
|
.window-caption {
|
||||||
background: rgba(0,0,0,0.8);
|
background: rgba(0,0,0,0.8);
|
||||||
border: 1px solid rgba(128,128,128,0.40);
|
border: 1px solid rgba(128,128,128,0.40);
|
||||||
border-radius: 10px;
|
border-radius: 10px;
|
||||||
font-size: 12px;
|
font-size: 9pt;
|
||||||
padding: 2px 8px;
|
padding: 2px 8px;
|
||||||
-shell-caption-spacing: 4px;
|
-shell-caption-spacing: 4px;
|
||||||
}
|
}
|
||||||
@ -372,7 +380,7 @@ StTooltip StLabel {
|
|||||||
|
|
||||||
#dash {
|
#dash {
|
||||||
color: #5f5f5f;
|
color: #5f5f5f;
|
||||||
font-size: 12px;
|
font-size: 9pt;
|
||||||
padding: 4px 0px;
|
padding: 4px 0px;
|
||||||
background-color: rgba(0, 0, 0, 0.5);
|
background-color: rgba(0, 0, 0, 0.5);
|
||||||
border: 1px solid rgba(128, 128, 128, 0.4);
|
border: 1px solid rgba(128, 128, 128, 0.4);
|
||||||
@ -398,12 +406,12 @@ StTooltip StLabel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#viewSelector {
|
#viewSelector {
|
||||||
spacing: 16px;
|
spacing: 1em;
|
||||||
font-size: 16px;
|
font-size: 12pt;
|
||||||
}
|
}
|
||||||
|
|
||||||
#viewSelectorTabBar {
|
#viewSelectorTabBar {
|
||||||
padding: 16px;
|
padding: 1em;
|
||||||
}
|
}
|
||||||
|
|
||||||
#searchArea {
|
#searchArea {
|
||||||
@ -451,8 +459,8 @@ StTooltip StLabel {
|
|||||||
.view-tab-title {
|
.view-tab-title {
|
||||||
color: #888a85;
|
color: #888a85;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
padding: 0px 12px;
|
padding: 0px 0.75em;
|
||||||
height: 24px;
|
height: 1.5em;
|
||||||
}
|
}
|
||||||
|
|
||||||
.view-tab-title:hover {
|
.view-tab-title:hover {
|
||||||
@ -462,8 +470,7 @@ StTooltip StLabel {
|
|||||||
.view-tab-title:selected {
|
.view-tab-title:selected {
|
||||||
color: #000000;
|
color: #000000;
|
||||||
background-color: #c2c7cd;
|
background-color: #c2c7cd;
|
||||||
border-radius: 4px;
|
border-radius: 0.25em;
|
||||||
height: 24px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#searchResults {
|
#searchResults {
|
||||||
@ -526,7 +533,7 @@ StTooltip StLabel {
|
|||||||
|
|
||||||
.dash-search-button-label {
|
.dash-search-button-label {
|
||||||
color: #cccccc;
|
color: #cccccc;
|
||||||
font-size: 16px;
|
font-size: 12pt;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Apps */
|
/* Apps */
|
||||||
@ -551,9 +558,9 @@ StTooltip StLabel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.app-filter {
|
.app-filter {
|
||||||
font-size: 14px;
|
font-size: 10.5pt;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
height: 40px;
|
height: 2.85em;
|
||||||
color: #aaa;
|
color: #aaa;
|
||||||
width: 200px;
|
width: 200px;
|
||||||
}
|
}
|
||||||
@ -596,7 +603,7 @@ StTooltip StLabel {
|
|||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
padding: 3px;
|
padding: 3px;
|
||||||
border: 1px rgba(0,0,0,0);
|
border: 1px rgba(0,0,0,0);
|
||||||
font-size: 10px;
|
font-size: 7.5pt;
|
||||||
color: white;
|
color: white;
|
||||||
transition-duration: 100;
|
transition-duration: 100;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
@ -626,7 +633,7 @@ StTooltip StLabel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.app-well-menu {
|
.app-well-menu {
|
||||||
font-size: 12px
|
font-size: 9pt;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* LookingGlass */
|
/* LookingGlass */
|
||||||
@ -782,7 +789,7 @@ StTooltip StLabel {
|
|||||||
|
|
||||||
.calendar-month-label {
|
.calendar-month-label {
|
||||||
color: #666666;
|
color: #666666;
|
||||||
font-size: 10px;
|
font-size: 7.5pt;
|
||||||
padding: 2px;
|
padding: 2px;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
@ -825,16 +832,16 @@ StTooltip StLabel {
|
|||||||
|
|
||||||
.datemenu-date-label {
|
.datemenu-date-label {
|
||||||
padding: .4em 1.75em;
|
padding: .4em 1.75em;
|
||||||
font-size: 14px;
|
font-size: 10.5pt;
|
||||||
color: #cccccc;
|
color: #cccccc;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
.calendar-day-base {
|
.calendar-day-base {
|
||||||
font-size: 10px;
|
font-size: 7.5pt;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
width: 24px;
|
width: 2.4em;
|
||||||
height: 24px;
|
height: 2.4em;
|
||||||
}
|
}
|
||||||
|
|
||||||
.calendar-day-base:hover {
|
.calendar-day-base:hover {
|
||||||
@ -904,7 +911,7 @@ StTooltip StLabel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.events-day-header {
|
.events-day-header {
|
||||||
font-size: 12px;
|
font-size: 9pt;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
color: rgba(153, 153, 153, 1.0);
|
color: rgba(153, 153, 153, 1.0);
|
||||||
padding-left: 0.3em;
|
padding-left: 0.3em;
|
||||||
@ -916,7 +923,7 @@ StTooltip StLabel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.events-day-dayname {
|
.events-day-dayname {
|
||||||
font-size: 12px;
|
font-size: 9pt;
|
||||||
color: rgba(153, 153, 153, 1.0);
|
color: rgba(153, 153, 153, 1.0);
|
||||||
text-align: left;
|
text-align: left;
|
||||||
}
|
}
|
||||||
@ -926,7 +933,7 @@ StTooltip StLabel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.events-day-time {
|
.events-day-time {
|
||||||
font-size: 12px;
|
font-size: 9pt;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
text-align: right;
|
text-align: right;
|
||||||
}
|
}
|
||||||
@ -936,7 +943,7 @@ StTooltip StLabel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.events-day-task {
|
.events-day-task {
|
||||||
font-size: 12px;
|
font-size: 9pt;
|
||||||
color: rgba(153, 153, 153, 1.0);
|
color: rgba(153, 153, 153, 1.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -965,13 +972,13 @@ StTooltip StLabel {
|
|||||||
#message-tray {
|
#message-tray {
|
||||||
background-gradient-direction: vertical;
|
background-gradient-direction: vertical;
|
||||||
background-gradient-start: rgba(0,0,0,0.01);
|
background-gradient-start: rgba(0,0,0,0.01);
|
||||||
background-gradient-end: rgba(0,0,0,0.95);
|
background-gradient-end: rgba(0,0,0,0.82);
|
||||||
height: 36px;
|
height: 36px;
|
||||||
color: white;
|
color: white;
|
||||||
}
|
}
|
||||||
|
|
||||||
#notification {
|
#notification {
|
||||||
font-size: 16px;
|
font-size: 12pt;
|
||||||
border-radius: 5px 5px 0px 0px;
|
border-radius: 5px 5px 0px 0px;
|
||||||
background: rgba(0,0,0,0.9);
|
background: rgba(0,0,0,0.9);
|
||||||
padding: 8px 8px 4px 8px;
|
padding: 8px 8px 4px 8px;
|
||||||
@ -1000,11 +1007,29 @@ StTooltip StLabel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.summary-boxpointer #summary-right-click-menu {
|
.summary-boxpointer #summary-right-click-menu {
|
||||||
font-size: 14px;
|
font-size: 10.5pt;
|
||||||
padding-top: 12px;
|
padding-top: 12px;
|
||||||
padding-bottom: 12px;
|
padding-bottom: 12px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#summary-notification-stack-scrollview {
|
||||||
|
max-height: 18em;
|
||||||
|
padding-top: 6px;
|
||||||
|
padding-bottom: 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#summary-notification-stack-scrollview > .top-shadow, #summary-notification-stack-scrollview > .bottom-shadow {
|
||||||
|
height: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#summary-notification-stack-scrollview:ltr {
|
||||||
|
padding-right: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#summary-notification-stack-scrollview:rtl {
|
||||||
|
padding-left: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
#notification-scrollview {
|
#notification-scrollview {
|
||||||
max-height: 10em;
|
max-height: 10em;
|
||||||
}
|
}
|
||||||
@ -1102,7 +1127,7 @@ StTooltip StLabel {
|
|||||||
.chat-meta-message {
|
.chat-meta-message {
|
||||||
padding-left: 4px;
|
padding-left: 4px;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
font-size: 14px;
|
font-size: 10.5pt;
|
||||||
color: #bbbbbb;
|
color: #bbbbbb;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1151,14 +1176,32 @@ StTooltip StLabel {
|
|||||||
padding: 2px 4px 0px 0px;
|
padding: 2px 4px 0px 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.summary-source-button {
|
||||||
|
color: #fff;
|
||||||
|
text-shadow: black 0px 2px 2px;
|
||||||
|
}
|
||||||
|
|
||||||
.summary-source-button:ltr {
|
.summary-source-button:ltr {
|
||||||
padding-left: 4px;
|
padding-right: 12px;
|
||||||
padding-right: 16px;
|
}
|
||||||
|
|
||||||
|
.summary-source-button:selected .summary-source {
|
||||||
|
background-image: url("panel-button-highlight-narrow.svg");
|
||||||
|
border-image: url("source-button-border.svg") 10 10 0 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.summary-source-button:expanded:selected .summary-source {
|
||||||
|
background-image: none;
|
||||||
|
border-image: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.summary-source-button:expanded:selected {
|
||||||
|
background-image: url("panel-button-highlight-wide.svg");
|
||||||
|
border-image: url("source-button-border.svg") 10 10 0 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
.summary-source-button:rtl {
|
.summary-source-button:rtl {
|
||||||
padding-right: 4px;
|
padding-left: 12px;
|
||||||
padding-left: 16px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.summary-source-button:last-child:ltr {
|
.summary-source-button:last-child:ltr {
|
||||||
@ -1169,8 +1212,13 @@ StTooltip StLabel {
|
|||||||
padding-left: 12px;
|
padding-left: 12px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.summary-source {
|
||||||
|
padding-right: 4px;
|
||||||
|
padding-left: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
.source-title {
|
.source-title {
|
||||||
font-size: 12px;
|
font-size: 9pt;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
padding-left: 4px;
|
padding-left: 4px;
|
||||||
}
|
}
|
||||||
@ -1192,7 +1240,7 @@ StTooltip StLabel {
|
|||||||
border-radius: 24px;
|
border-radius: 24px;
|
||||||
padding: 20px;
|
padding: 20px;
|
||||||
|
|
||||||
font-size: 12px;
|
font-size: 9pt;
|
||||||
color: white;
|
color: white;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1251,7 +1299,11 @@ StTooltip StLabel {
|
|||||||
.ripple-box {
|
.ripple-box {
|
||||||
width: 52px;
|
width: 52px;
|
||||||
height: 52px;
|
height: 52px;
|
||||||
background-image: url("corner-ripple.png");
|
background-image: url("corner-ripple-ltr.png");
|
||||||
|
}
|
||||||
|
|
||||||
|
.ripple-box:rtl {
|
||||||
|
background-image: url("corner-ripple-rtl.png");
|
||||||
}
|
}
|
||||||
|
|
||||||
.switcher-arrow {
|
.switcher-arrow {
|
||||||
@ -1321,10 +1373,14 @@ StTooltip StLabel {
|
|||||||
padding-top: 30px;
|
padding-top: 30px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.modal-dialog-button-box {
|
||||||
|
spacing: 21px;
|
||||||
|
}
|
||||||
|
|
||||||
.modal-dialog-button {
|
.modal-dialog-button {
|
||||||
border: 1px solid #8b8b8b;
|
border: 1px solid #8b8b8b;
|
||||||
border-radius: 18px;
|
border-radius: 18px;
|
||||||
font-size: 14px;
|
font-size: 10.5pt;
|
||||||
|
|
||||||
margin-left: 10px;
|
margin-left: 10px;
|
||||||
margin-right: 10px;
|
margin-right: 10px;
|
||||||
@ -1357,12 +1413,12 @@ StTooltip StLabel {
|
|||||||
|
|
||||||
/* Run Dialog */
|
/* Run Dialog */
|
||||||
.run-dialog-label {
|
.run-dialog-label {
|
||||||
font-size: 12px;
|
font-size: 9pt;
|
||||||
color: white;
|
color: white;
|
||||||
}
|
}
|
||||||
|
|
||||||
.run-dialog-error-label {
|
.run-dialog-error-label {
|
||||||
font-size: 12px;
|
font-size: 9pt;
|
||||||
color: white;
|
color: white;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1372,9 +1428,9 @@ StTooltip StLabel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.run-dialog-entry {
|
.run-dialog-entry {
|
||||||
font-size: 14px;
|
font-size: 10.5pt;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
width: 320px;
|
width: 23em;
|
||||||
color: white;
|
color: white;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1392,6 +1448,10 @@ StTooltip StLabel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* End Session Dialog */
|
/* End Session Dialog */
|
||||||
|
.end-session-dialog {
|
||||||
|
spacing: 42px;
|
||||||
|
}
|
||||||
|
|
||||||
.end-session-dialog-subject {
|
.end-session-dialog-subject {
|
||||||
font-size: 12pt;
|
font-size: 12pt;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
@ -1410,13 +1470,11 @@ StTooltip StLabel {
|
|||||||
font-size: 10pt;
|
font-size: 10pt;
|
||||||
color: white;
|
color: white;
|
||||||
padding-left: 17px;
|
padding-left: 17px;
|
||||||
padding-right: 40px;
|
width: 28em;
|
||||||
width: 16em;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.end-session-dialog-description:rtl {
|
.end-session-dialog-description:rtl {
|
||||||
padding-right: 17px;
|
padding-right: 17px;
|
||||||
padding-left: 40px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.end-session-dialog-logout-icon {
|
.end-session-dialog-logout-icon {
|
||||||
@ -1435,16 +1493,23 @@ StTooltip StLabel {
|
|||||||
font-size: 10pt;
|
font-size: 10pt;
|
||||||
max-height: 200px;
|
max-height: 200px;
|
||||||
padding-top: 42px;
|
padding-top: 42px;
|
||||||
padding-bottom: 42px;
|
padding-left: 49px;
|
||||||
padding-left: 17px;
|
|
||||||
padding-right: 32px;
|
padding-right: 32px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.end-session-dialog-app-list:rtl {
|
.end-session-dialog-app-list:rtl {
|
||||||
padding-right: 17px;
|
padding-right: 49px;
|
||||||
padding-left: 32px;
|
padding-left: 32px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.end-session-dialog-app-list-item {
|
||||||
|
color: #ccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.end-session-dialog-app-list-item:hover {
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
.end-session-dialog-app-list-item:ltr {
|
.end-session-dialog-app-list-item:ltr {
|
||||||
padding-right: 1em;
|
padding-right: 1em;
|
||||||
}
|
}
|
||||||
|
74
data/theme/source-button-border.svg
Normal file
74
data/theme/source-button-border.svg
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
width="21"
|
||||||
|
height="10"
|
||||||
|
id="svg2"
|
||||||
|
version="1.1"
|
||||||
|
inkscape:version="0.48.0 r9654"
|
||||||
|
sodipodi:docname="source-button-border.svg">
|
||||||
|
<defs
|
||||||
|
id="defs4" />
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#000000"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageopacity="0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="44.8"
|
||||||
|
inkscape:cx="8.704132"
|
||||||
|
inkscape:cy="5.7029946"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
inkscape:current-layer="layer1"
|
||||||
|
showgrid="true"
|
||||||
|
showguides="true"
|
||||||
|
inkscape:guide-bbox="true"
|
||||||
|
inkscape:window-width="1600"
|
||||||
|
inkscape:window-height="1145"
|
||||||
|
inkscape:window-x="0"
|
||||||
|
inkscape:window-y="26"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
guidetolerance="10000"
|
||||||
|
objecttolerance="10000">
|
||||||
|
<inkscape:grid
|
||||||
|
type="xygrid"
|
||||||
|
id="grid3792"
|
||||||
|
empspacing="10"
|
||||||
|
visible="true"
|
||||||
|
enabled="true"
|
||||||
|
snapvisiblegridlinesonly="true" />
|
||||||
|
</sodipodi:namedview>
|
||||||
|
<metadata
|
||||||
|
id="metadata7">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title></dc:title>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<g
|
||||||
|
inkscape:label="Layer 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1">
|
||||||
|
<rect
|
||||||
|
style="opacity:0.8;fill:#ffffff;fill-opacity:1;stroke-width:0.43599999;stroke-miterlimit:4;stroke-dasharray:none"
|
||||||
|
id="rect3796"
|
||||||
|
width="19"
|
||||||
|
height="2"
|
||||||
|
x="1"
|
||||||
|
y="8" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 2.0 KiB |
@ -8,6 +8,7 @@ nobase_dist_js_DATA = \
|
|||||||
misc/format.js \
|
misc/format.js \
|
||||||
misc/gnomeSession.js \
|
misc/gnomeSession.js \
|
||||||
misc/history.js \
|
misc/history.js \
|
||||||
|
misc/modemManager.js \
|
||||||
misc/params.js \
|
misc/params.js \
|
||||||
misc/semantic.js \
|
misc/semantic.js \
|
||||||
misc/util.js \
|
misc/util.js \
|
||||||
@ -51,6 +52,7 @@ nobase_dist_js_DATA = \
|
|||||||
ui/statusMenu.js \
|
ui/statusMenu.js \
|
||||||
ui/status/accessibility.js \
|
ui/status/accessibility.js \
|
||||||
ui/status/keyboard.js \
|
ui/status/keyboard.js \
|
||||||
|
ui/status/network.js \
|
||||||
ui/status/power.js \
|
ui/status/power.js \
|
||||||
ui/status/volume.js \
|
ui/status/volume.js \
|
||||||
ui/status/bluetooth.js \
|
ui/status/bluetooth.js \
|
||||||
|
225
js/misc/modemManager.js
Normal file
225
js/misc/modemManager.js
Normal file
@ -0,0 +1,225 @@
|
|||||||
|
// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
|
||||||
|
|
||||||
|
const DBus = imports.dbus;
|
||||||
|
const Lang = imports.lang;
|
||||||
|
const Shell = imports.gi.Shell;
|
||||||
|
const Signals = imports.signals;
|
||||||
|
|
||||||
|
// The following are not the complete interfaces, just the methods we need
|
||||||
|
// (or may need in the future)
|
||||||
|
|
||||||
|
const ModemGsmNetworkInterface = {
|
||||||
|
name: 'org.freedesktop.ModemManager.Modem.Gsm.Network',
|
||||||
|
methods: [
|
||||||
|
{ name: 'GetRegistrationInfo', inSignature: '', outSignature: 'uss' },
|
||||||
|
{ name: 'GetSignalQuality', inSignature: '', outSignature: 'u' }
|
||||||
|
],
|
||||||
|
properties: [
|
||||||
|
{ name: 'AccessTechnology', signature: 'u', access: 'read' }
|
||||||
|
],
|
||||||
|
signals: [
|
||||||
|
{ name: 'SignalQuality', inSignature: 'u' },
|
||||||
|
{ name: 'RegistrationInfo', inSignature: 'uss' }
|
||||||
|
]
|
||||||
|
};
|
||||||
|
const ModemGsmNetworkProxy = DBus.makeProxyClass(ModemGsmNetworkInterface);
|
||||||
|
|
||||||
|
const ModemCdmaInterface = {
|
||||||
|
name: 'org.freedesktop.ModemManager.Modem.Cdma',
|
||||||
|
methods: [
|
||||||
|
{ name: 'GetSignalQuality', inSignature: '', outSignature: 'u' },
|
||||||
|
{ name: 'GetServingSystem', inSignature: '', outSignature: 'usu' }
|
||||||
|
],
|
||||||
|
signals: [
|
||||||
|
{ name: 'SignalQuality', inSignature: 'u' }
|
||||||
|
]
|
||||||
|
};
|
||||||
|
const ModemCdmaProxy = DBus.makeProxyClass(ModemCdmaInterface);
|
||||||
|
|
||||||
|
let _providersTable;
|
||||||
|
function _getProvidersTable() {
|
||||||
|
if (_providersTable)
|
||||||
|
return _providersTable;
|
||||||
|
let [providers, countryCodes] = Shell.mobile_providers_parse();
|
||||||
|
return _providersTable = providers;
|
||||||
|
}
|
||||||
|
|
||||||
|
function ModemGsm() {
|
||||||
|
this._init.apply(this, arguments);
|
||||||
|
}
|
||||||
|
|
||||||
|
ModemGsm.prototype = {
|
||||||
|
_init: function(path) {
|
||||||
|
this._proxy = new ModemGsmNetworkProxy(DBus.system, 'org.freedesktop.ModemManager', path);
|
||||||
|
|
||||||
|
this.signal_quality = 0;
|
||||||
|
this.operator_name = null;
|
||||||
|
|
||||||
|
// Code is duplicated because the function have different signatures
|
||||||
|
this._proxy.connect('SignalQuality', Lang.bind(this, function(proxy, quality) {
|
||||||
|
this.signal_quality = quality;
|
||||||
|
this.emit('notify::signal-quality');
|
||||||
|
}));
|
||||||
|
this._proxy.connect('RegistrationInfo', Lang.bind(this, function(proxy, status, code, name) {
|
||||||
|
this.operator_name = this._findOperatorName(name, code);
|
||||||
|
this.emit('notify::operator-name');
|
||||||
|
}));
|
||||||
|
this._proxy.GetRegistrationInfoRemote(Lang.bind(this, function(result, err) {
|
||||||
|
if (err) {
|
||||||
|
log(err);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
let [status, code, name] = result;
|
||||||
|
this.operator_name = this._findOperatorName(name, code);
|
||||||
|
this.emit('notify::operator-name');
|
||||||
|
}));
|
||||||
|
this._proxy.GetSignalQualityRemote(Lang.bind(this, function(result, err) {
|
||||||
|
if (err) {
|
||||||
|
// it will return an error if the device is not connected
|
||||||
|
this.signal_quality = 0;
|
||||||
|
} else {
|
||||||
|
let [quality] = result;
|
||||||
|
this.signal_quality = quality;
|
||||||
|
}
|
||||||
|
this.emit('notify::signal-quality');
|
||||||
|
}));
|
||||||
|
},
|
||||||
|
|
||||||
|
_findOperatorName: function(name, opCode) {
|
||||||
|
if (name.length != 0 && (name.length > 6 || name.length < 5)) {
|
||||||
|
// this looks like a valid name, i.e. not an MCCMNC (that some
|
||||||
|
// devices return when not yet connected
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
if (isNaN(parseInt(name))) {
|
||||||
|
// name is definitely not a MCCMNC, so it may be a name
|
||||||
|
// after all; return that
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
let needle;
|
||||||
|
if (name.length == 0 && opCode)
|
||||||
|
needle = opCode;
|
||||||
|
else if (name.length == 6 || name.length == 5)
|
||||||
|
needle = name;
|
||||||
|
else // nothing to search
|
||||||
|
return null;
|
||||||
|
|
||||||
|
return this._findProviderForMCCMNC(needle);
|
||||||
|
},
|
||||||
|
|
||||||
|
_findProviderForMCCMNC: function(needle) {
|
||||||
|
let table = _getProvidersTable();
|
||||||
|
let needlemcc = needle.substring(0, 3);
|
||||||
|
let needlemnc = needle.substring(3, needle.length);
|
||||||
|
|
||||||
|
let name2, name3;
|
||||||
|
for (let iter in table) {
|
||||||
|
let providers = table[iter];
|
||||||
|
|
||||||
|
// Search through each country's providers
|
||||||
|
for (let i = 0; i < providers.length; i++) {
|
||||||
|
let provider = providers[i];
|
||||||
|
|
||||||
|
// Search through MCC/MNC list
|
||||||
|
let list = provider.get_gsm_mcc_mnc();
|
||||||
|
for (let j = 0; j < list.length; j++) {
|
||||||
|
let mccmnc = list[j];
|
||||||
|
|
||||||
|
// Match both 2-digit and 3-digit MNC; prefer a
|
||||||
|
// 3-digit match if found, otherwise a 2-digit one.
|
||||||
|
if (mccmnc.mcc != needlemcc)
|
||||||
|
continue; // MCC was wrong
|
||||||
|
|
||||||
|
if (!name3 && needle.length == 6 && needlemnc == mccmnc.mnc)
|
||||||
|
name3 = provider.name;
|
||||||
|
|
||||||
|
if (!name2 && needlemnc.substring(0, 2) == mccmnc.mnc.substring(0, 2))
|
||||||
|
name2 = provider.name;
|
||||||
|
|
||||||
|
if (name2 && name3)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return name3 || name2 || null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Signals.addSignalMethods(ModemGsm.prototype);
|
||||||
|
|
||||||
|
function ModemCdma() {
|
||||||
|
this._init.apply(this, arguments);
|
||||||
|
}
|
||||||
|
|
||||||
|
ModemCdma.prototype = {
|
||||||
|
_init: function(path) {
|
||||||
|
this._proxy = new ModemCdmaProxy(DBus.system, 'org.freedesktop.ModemManager', path);
|
||||||
|
|
||||||
|
this.signal_quality = 0;
|
||||||
|
this.operator_name = null;
|
||||||
|
this._proxy.connect('SignalQuality', Lang.bind(this, function(proxy, quality) {
|
||||||
|
this.signal_quality = quality;
|
||||||
|
this.emit('notify::signal-quality');
|
||||||
|
|
||||||
|
// receiving this signal means the device got activated
|
||||||
|
// and we can finally call GetServingSystem
|
||||||
|
if (this.operator_name == null)
|
||||||
|
this._refreshServingSystem();
|
||||||
|
}));
|
||||||
|
this._proxy.GetSignalQualityRemote(Lang.bind(this, function(result, err) {
|
||||||
|
if (err) {
|
||||||
|
// it will return an error if the device is not connected
|
||||||
|
this.signal_quality = 0;
|
||||||
|
} else {
|
||||||
|
let [quality] = result;
|
||||||
|
this.signal_quality = quality;
|
||||||
|
}
|
||||||
|
this.emit('notify::signal-quality');
|
||||||
|
}));
|
||||||
|
},
|
||||||
|
|
||||||
|
_refreshServingSystem: function() {
|
||||||
|
this._proxy.GetServingSystemRemote(Lang.bind(this, function(result, err) {
|
||||||
|
if (err) {
|
||||||
|
// it will return an error if the device is not connected
|
||||||
|
this.operator_name = null;
|
||||||
|
} else {
|
||||||
|
let [bandClass, band, id] = result;
|
||||||
|
if (name.length > 0)
|
||||||
|
this.operator_name = this._findProviderForSid(id);
|
||||||
|
else
|
||||||
|
this.operator_name = null;
|
||||||
|
}
|
||||||
|
this.emit('notify::operator-name');
|
||||||
|
}));
|
||||||
|
},
|
||||||
|
|
||||||
|
_findProviderForSid: function(sid) {
|
||||||
|
if (sid == 0)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
let table = _getProvidersTable();
|
||||||
|
|
||||||
|
// Search through each country
|
||||||
|
for (let iter in table) {
|
||||||
|
let providers = table[iter];
|
||||||
|
|
||||||
|
// Search through each country's providers
|
||||||
|
for (let i = 0; i < providers.length; i++) {
|
||||||
|
let provider = providers[i];
|
||||||
|
let cdma_sid = provider.get_cdma_sid();
|
||||||
|
|
||||||
|
// Search through CDMA SID list
|
||||||
|
for (let j = 0; j < cdma_sid.length; j++) {
|
||||||
|
if (cdma_sid[j] == sid)
|
||||||
|
return provider.name;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
Signals.addSignalMethods(ModemCdma.prototype);
|
129
js/misc/util.js
129
js/misc/util.js
@ -6,7 +6,6 @@ const GLib = imports.gi.GLib;
|
|||||||
const Shell = imports.gi.Shell;
|
const Shell = imports.gi.Shell;
|
||||||
|
|
||||||
const Main = imports.ui.main;
|
const Main = imports.ui.main;
|
||||||
const MessageTray = imports.ui.messageTray;
|
|
||||||
|
|
||||||
const Gettext = imports.gettext.domain('gnome-shell');
|
const Gettext = imports.gettext.domain('gnome-shell');
|
||||||
const _ = Gettext.gettext;
|
const _ = Gettext.gettext;
|
||||||
@ -56,20 +55,6 @@ function spawnCommandLine(command_line) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// spawnDesktop:
|
|
||||||
// @id: a desktop file ID
|
|
||||||
//
|
|
||||||
// Spawns the desktop file identified by @id using startup notification,
|
|
||||||
// etc, handling any errors that occur when trying to find or start
|
|
||||||
// the program.
|
|
||||||
function spawnDesktop(id) {
|
|
||||||
try {
|
|
||||||
trySpawnDesktop(id);
|
|
||||||
} catch (err) {
|
|
||||||
_handleSpawnError(id, err);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// trySpawn:
|
// trySpawn:
|
||||||
// @argv: an argv array
|
// @argv: an argv array
|
||||||
//
|
//
|
||||||
@ -117,41 +102,9 @@ function trySpawnCommandLine(command_line) {
|
|||||||
trySpawn(argv);
|
trySpawn(argv);
|
||||||
}
|
}
|
||||||
|
|
||||||
// trySpawnDesktop:
|
|
||||||
// @id: a desktop file ID
|
|
||||||
//
|
|
||||||
// Spawns the desktop file identified by @id using startup notification.
|
|
||||||
// On error, throws an exception.
|
|
||||||
function trySpawnDesktop(id) {
|
|
||||||
let app;
|
|
||||||
|
|
||||||
// shell_app_system_load_from_desktop_file() will end up returning
|
|
||||||
// a stupid error message if the desktop file doesn't exist, but
|
|
||||||
// that's the only case it returns an error for, so we just
|
|
||||||
// substitute our own error in instead
|
|
||||||
try {
|
|
||||||
app = Shell.AppSystem.get_default().load_from_desktop_file(id + '.desktop');
|
|
||||||
} catch (err) {
|
|
||||||
throw new Error(_("No such application"));
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
app.launch();
|
|
||||||
} catch(err) {
|
|
||||||
// see trySpawn
|
|
||||||
err.message = err.message.replace(/.*\((.+)\)/, '$1');
|
|
||||||
throw err;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function _handleSpawnError(command, err) {
|
function _handleSpawnError(command, err) {
|
||||||
let title = _("Execution of '%s' failed:").format(command);
|
let title = _("Execution of '%s' failed:").format(command);
|
||||||
|
Main.notifyError(title, err.message);
|
||||||
let source = new MessageTray.SystemNotificationSource();
|
|
||||||
Main.messageTray.add(source);
|
|
||||||
let notification = new MessageTray.Notification(source, title, err.message);
|
|
||||||
notification.setTransient(true);
|
|
||||||
source.notify(notification);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// killall:
|
// killall:
|
||||||
@ -178,3 +131,83 @@ function killall(processName) {
|
|||||||
logError(e, 'Failed to kill ' + processName);
|
logError(e, 'Failed to kill ' + processName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// This was ported from network-manager-applet
|
||||||
|
// Copyright 2007 - 2011 Red Hat, Inc.
|
||||||
|
// Author: Dan Williams <dcbw@redhat.com>
|
||||||
|
|
||||||
|
const _IGNORED_WORDS = [
|
||||||
|
'Semiconductor',
|
||||||
|
'Components',
|
||||||
|
'Corporation',
|
||||||
|
'Communications',
|
||||||
|
'Company',
|
||||||
|
'Corp.',
|
||||||
|
'Corp',
|
||||||
|
'Co.',
|
||||||
|
'Inc.',
|
||||||
|
'Inc',
|
||||||
|
'Incorporated',
|
||||||
|
'Ltd.',
|
||||||
|
'Limited.',
|
||||||
|
'Intel?',
|
||||||
|
'chipset',
|
||||||
|
'adapter',
|
||||||
|
'[hex]',
|
||||||
|
'NDIS',
|
||||||
|
'Module'
|
||||||
|
];
|
||||||
|
|
||||||
|
const _IGNORED_PHRASES = [
|
||||||
|
'Multiprotocol MAC/baseband processor',
|
||||||
|
'Wireless LAN Controller',
|
||||||
|
'Wireless LAN Adapter',
|
||||||
|
'Wireless Adapter',
|
||||||
|
'Network Connection',
|
||||||
|
'Wireless Cardbus Adapter',
|
||||||
|
'Wireless CardBus Adapter',
|
||||||
|
'54 Mbps Wireless PC Card',
|
||||||
|
'Wireless PC Card',
|
||||||
|
'Wireless PC',
|
||||||
|
'PC Card with XJACK(r) Antenna',
|
||||||
|
'Wireless cardbus',
|
||||||
|
'Wireless LAN PC Card',
|
||||||
|
'Technology Group Ltd.',
|
||||||
|
'Communication S.p.A.',
|
||||||
|
'Business Mobile Networks BV',
|
||||||
|
'Mobile Broadband Minicard Composite Device',
|
||||||
|
'Mobile Communications AB',
|
||||||
|
'(PC-Suite Mode)'
|
||||||
|
];
|
||||||
|
|
||||||
|
function fixupPCIDescription(desc) {
|
||||||
|
desc.replace(/[_,]/, ' ');
|
||||||
|
|
||||||
|
/* Attempt to shorten ID by ignoring certain phrases */
|
||||||
|
for (let i = 0; i < _IGNORED_PHRASES.length; i++) {
|
||||||
|
let item = _IGNORED_PHRASES[i];
|
||||||
|
let pos = desc.indexOf(item);
|
||||||
|
if (pos != -1) {
|
||||||
|
let before = desc.substring(0, pos);
|
||||||
|
let after = desc.substring(pos + item.length, desc.length);
|
||||||
|
desc = before + after;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Attmept to shorten ID by ignoring certain individual words */
|
||||||
|
let words = desc.split(' ');
|
||||||
|
let out = [ ];
|
||||||
|
for (let i = 0; i < words; i++) {
|
||||||
|
let item = words[i];
|
||||||
|
|
||||||
|
// skip empty items (that come out from consecutive spaces)
|
||||||
|
if (item.length == 0)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (_IGNORED_WORDS.indexOf(item) == -1) {
|
||||||
|
out.push(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return out.join(' ');
|
||||||
|
}
|
||||||
|
@ -376,7 +376,15 @@ AltTabPopup.prototype = {
|
|||||||
this.destroy();
|
this.destroy();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_popModal: function() {
|
||||||
|
if (this._haveModal) {
|
||||||
|
Main.popModal(this.actor);
|
||||||
|
this._haveModal = false;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
destroy : function() {
|
destroy : function() {
|
||||||
|
this._popModal();
|
||||||
if (this.actor.visible) {
|
if (this.actor.visible) {
|
||||||
Tweener.addTween(this.actor,
|
Tweener.addTween(this.actor,
|
||||||
{ opacity: 0,
|
{ opacity: 0,
|
||||||
@ -392,8 +400,7 @@ AltTabPopup.prototype = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
_onDestroy : function() {
|
_onDestroy : function() {
|
||||||
if (this._haveModal)
|
this._popModal();
|
||||||
Main.popModal(this.actor);
|
|
||||||
|
|
||||||
if (this._thumbnails)
|
if (this._thumbnails)
|
||||||
this._destroyThumbnails();
|
this._destroyThumbnails();
|
||||||
|
@ -86,10 +86,14 @@ AlphabeticalView.prototype = {
|
|||||||
if (vfade)
|
if (vfade)
|
||||||
offset = vfade.fade_offset;
|
offset = vfade.fade_offset;
|
||||||
|
|
||||||
if (icon.y < value + offset)
|
// If this gets called as part of a right-click, the actor
|
||||||
value = Math.max(0, icon.y - offset);
|
// will be needs_allocation, and so "icon.y" would return 0
|
||||||
else if (icon.y + icon.height > value + pageSize - offset)
|
let box = icon.get_allocation_box();
|
||||||
value = Math.min(upper, icon.y + icon.height + offset - pageSize);
|
|
||||||
|
if (box.y1 < value + offset)
|
||||||
|
value = Math.max(0, box.y1 - offset);
|
||||||
|
else if (box.y2 > value + pageSize - offset)
|
||||||
|
value = Math.min(upper, box.y2 + offset - pageSize);
|
||||||
else
|
else
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@ -412,6 +416,10 @@ AppWellIcon.prototype = {
|
|||||||
this._removeMenuTimeout();
|
this._removeMenuTimeout();
|
||||||
Main.overview.beginItemDrag(this);
|
Main.overview.beginItemDrag(this);
|
||||||
}));
|
}));
|
||||||
|
this._draggable.connect('drag-cancelled', Lang.bind(this,
|
||||||
|
function () {
|
||||||
|
Main.overview.cancelledItemDrag(this);
|
||||||
|
}));
|
||||||
this._draggable.connect('drag-end', Lang.bind(this,
|
this._draggable.connect('drag-end', Lang.bind(this,
|
||||||
function () {
|
function () {
|
||||||
Main.overview.endItemDrag(this);
|
Main.overview.endItemDrag(this);
|
||||||
@ -505,6 +513,8 @@ AppWellIcon.prototype = {
|
|||||||
this._menuManager.addMenu(this._menu);
|
this._menuManager.addMenu(this._menu);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.actor.set_hover(true);
|
||||||
|
this.actor.show_tooltip();
|
||||||
this._menu.popup();
|
this._menu.popup();
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
@ -568,6 +578,9 @@ AppIconMenu.prototype = {
|
|||||||
|
|
||||||
PopupMenu.PopupMenu.prototype._init.call(this, source.actor, 0.5, side, 0);
|
PopupMenu.PopupMenu.prototype._init.call(this, source.actor, 0.5, side, 0);
|
||||||
|
|
||||||
|
// We want to keep the item hovered while the menu is up
|
||||||
|
this.blockSourceEvents = true;
|
||||||
|
|
||||||
this._source = source;
|
this._source = source;
|
||||||
|
|
||||||
this.connect('activate', Lang.bind(this, this._onActivate));
|
this.connect('activate', Lang.bind(this, this._onActivate));
|
||||||
|
@ -36,7 +36,7 @@ Chrome.prototype = {
|
|||||||
|
|
||||||
this._trackedActors = [];
|
this._trackedActors = [];
|
||||||
|
|
||||||
global.gdk_screen.connect('monitors-changed',
|
global.screen.connect('monitors-changed',
|
||||||
Lang.bind(this, this._monitorsChanged));
|
Lang.bind(this, this._monitorsChanged));
|
||||||
global.screen.connect('restacked',
|
global.screen.connect('restacked',
|
||||||
Lang.bind(this, this._windowsRestacked));
|
Lang.bind(this, this._windowsRestacked));
|
||||||
@ -335,6 +335,11 @@ Chrome.prototype = {
|
|||||||
this._updateVisibility();
|
this._updateVisibility();
|
||||||
this._queueUpdateRegions();
|
this._queueUpdateRegions();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Figure out where the pointer is in case we lost track of
|
||||||
|
// it during a grab. (In particular, if a trayicon popup menu
|
||||||
|
// is dismissed, see if we need to close the message tray.)
|
||||||
|
global.sync_pointer();
|
||||||
},
|
},
|
||||||
|
|
||||||
_updateRegions: function() {
|
_updateRegions: function() {
|
||||||
|
@ -281,6 +281,7 @@ CtrlAltTabPopup.prototype = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
_onDestroy : function() {
|
_onDestroy : function() {
|
||||||
|
this._popModal();
|
||||||
if (this._keyPressEventId)
|
if (this._keyPressEventId)
|
||||||
this.actor.disconnect(this._keyPressEventId);
|
this.actor.disconnect(this._keyPressEventId);
|
||||||
if (this._keyReleaseEventId)
|
if (this._keyReleaseEventId)
|
||||||
|
@ -283,20 +283,37 @@ Dash.prototype = {
|
|||||||
Lang.bind(this, this._onDragBegin));
|
Lang.bind(this, this._onDragBegin));
|
||||||
Main.overview.connect('item-drag-end',
|
Main.overview.connect('item-drag-end',
|
||||||
Lang.bind(this, this._onDragEnd));
|
Lang.bind(this, this._onDragEnd));
|
||||||
|
Main.overview.connect('item-drag-cancelled',
|
||||||
|
Lang.bind(this, this._onDragCancelled));
|
||||||
Main.overview.connect('window-drag-begin',
|
Main.overview.connect('window-drag-begin',
|
||||||
Lang.bind(this, this._onDragBegin));
|
Lang.bind(this, this._onDragBegin));
|
||||||
|
Main.overview.connect('window-drag-cancelled',
|
||||||
|
Lang.bind(this, this._onDragCancelled));
|
||||||
Main.overview.connect('window-drag-end',
|
Main.overview.connect('window-drag-end',
|
||||||
Lang.bind(this, this._onDragEnd));
|
Lang.bind(this, this._onDragEnd));
|
||||||
},
|
},
|
||||||
|
|
||||||
_onDragBegin: function() {
|
_onDragBegin: function() {
|
||||||
|
this._dragCancelled = false;
|
||||||
this._dragMonitor = {
|
this._dragMonitor = {
|
||||||
dragMotion: Lang.bind(this, this._onDragMotion)
|
dragMotion: Lang.bind(this, this._onDragMotion)
|
||||||
};
|
};
|
||||||
DND.addDragMonitor(this._dragMonitor);
|
DND.addDragMonitor(this._dragMonitor);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_onDragCancelled: function() {
|
||||||
|
this._dragCancelled = true;
|
||||||
|
this._endDrag();
|
||||||
|
},
|
||||||
|
|
||||||
_onDragEnd: function() {
|
_onDragEnd: function() {
|
||||||
|
if (this._dragCancelled)
|
||||||
|
return;
|
||||||
|
|
||||||
|
this._endDrag();
|
||||||
|
},
|
||||||
|
|
||||||
|
_endDrag: function() {
|
||||||
this._clearDragPlaceholder();
|
this._clearDragPlaceholder();
|
||||||
if (this._favRemoveTarget) {
|
if (this._favRemoveTarget) {
|
||||||
this._favRemoveTarget.actor.hide();
|
this._favRemoveTarget.actor.hide();
|
||||||
@ -372,6 +389,8 @@ Dash.prototype = {
|
|||||||
Lang.bind(this, function() {
|
Lang.bind(this, function() {
|
||||||
display.actor.opacity = 255;
|
display.actor.opacity = 255;
|
||||||
}));
|
}));
|
||||||
|
display.actor.set_tooltip_text(app.get_name());
|
||||||
|
|
||||||
let item = new DashItemContainer();
|
let item = new DashItemContainer();
|
||||||
item.setChild(display.actor);
|
item.setChild(display.actor);
|
||||||
|
|
||||||
|
@ -200,13 +200,13 @@ DateMenuButton.prototype = {
|
|||||||
|
|
||||||
_onPreferencesActivate: function() {
|
_onPreferencesActivate: function() {
|
||||||
this.menu.close();
|
this.menu.close();
|
||||||
Util.spawnDesktop('gnome-datetime-panel');
|
let app = Shell.AppSystem.get_default().get_app('gnome-datetime-panel.desktop');
|
||||||
|
app.activate(-1);
|
||||||
},
|
},
|
||||||
|
|
||||||
_onOpenCalendarActivate: function() {
|
_onOpenCalendarActivate: function() {
|
||||||
this.menu.close();
|
this.menu.close();
|
||||||
// TODO: pass '-c calendar' (to force the calendar at startup)
|
|
||||||
// TODO: pass the selected day
|
// TODO: pass the selected day
|
||||||
Util.spawnDesktop('evolution');
|
Util.spawn(['evolution', '-c', 'calendar']);
|
||||||
},
|
}
|
||||||
};
|
};
|
||||||
|
@ -507,6 +507,9 @@ _Draggable.prototype = {
|
|||||||
if (!this._buttonDown)
|
if (!this._buttonDown)
|
||||||
this._dragComplete();
|
this._dragComplete();
|
||||||
this.emit('drag-end', eventTime, false);
|
this.emit('drag-end', eventTime, false);
|
||||||
|
if (!this._dragOrigParent)
|
||||||
|
this._dragActor.destroy();
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -66,16 +66,20 @@ const logoutDialogContent = {
|
|||||||
uninhibitedDescriptionWithUser: _("%s will be logged out automatically in %d seconds."),
|
uninhibitedDescriptionWithUser: _("%s will be logged out automatically in %d seconds."),
|
||||||
uninhibitedDescription: _("You will be logged out automatically in %d seconds."),
|
uninhibitedDescription: _("You will be logged out automatically in %d seconds."),
|
||||||
endDescription: _("Logging out of the system."),
|
endDescription: _("Logging out of the system."),
|
||||||
confirmButtonText: _("Log Out"),
|
confirmButtons: [{ signal: 'ConfirmedLogout',
|
||||||
|
label: _("Log Out") }],
|
||||||
iconStyleClass: 'end-session-dialog-logout-icon'
|
iconStyleClass: 'end-session-dialog-logout-icon'
|
||||||
};
|
};
|
||||||
|
|
||||||
const shutdownDialogContent = {
|
const shutdownDialogContent = {
|
||||||
subject: _("Shut Down"),
|
subject: _("Power Off"),
|
||||||
inhibitedDescription: _("Click Shut Down to quit these applications and shut down the system."),
|
inhibitedDescription: _("Click Power Off to quit these applications and power off the system."),
|
||||||
uninhibitedDescription: _("The system will shut down automatically in %d seconds."),
|
uninhibitedDescription: _("The system will power off automatically in %d seconds."),
|
||||||
endDescription: _("Shutting down the system."),
|
endDescription: _("Powering off the system."),
|
||||||
confirmButtonText: _("Shut Down"),
|
confirmButtons: [{ signal: 'ConfirmedReboot',
|
||||||
|
label: _("Restart") },
|
||||||
|
{ signal: 'ConfirmedShutdown',
|
||||||
|
label: _("Power Off") }],
|
||||||
iconName: 'system-shutdown',
|
iconName: 'system-shutdown',
|
||||||
iconStyleClass: 'end-session-dialog-shutdown-icon'
|
iconStyleClass: 'end-session-dialog-shutdown-icon'
|
||||||
};
|
};
|
||||||
@ -85,7 +89,8 @@ const restartDialogContent = {
|
|||||||
inhibitedDescription: _("Click Restart to quit these applications and restart the system."),
|
inhibitedDescription: _("Click Restart to quit these applications and restart the system."),
|
||||||
uninhibitedDescription: _("The system will restart automatically in %d seconds."),
|
uninhibitedDescription: _("The system will restart automatically in %d seconds."),
|
||||||
endDescription: _("Restarting the system."),
|
endDescription: _("Restarting the system."),
|
||||||
confirmButtonText: _("Restart"),
|
confirmButtons: [{ signal: 'ConfirmedReboot',
|
||||||
|
label: _("Restart") }],
|
||||||
iconName: 'system-shutdown',
|
iconName: 'system-shutdown',
|
||||||
iconStyleClass: 'end-session-dialog-shutdown-icon'
|
iconStyleClass: 'end-session-dialog-shutdown-icon'
|
||||||
};
|
};
|
||||||
@ -233,7 +238,7 @@ EndSessionDialog.prototype = {
|
|||||||
__proto__: ModalDialog.ModalDialog.prototype,
|
__proto__: ModalDialog.ModalDialog.prototype,
|
||||||
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
ModalDialog.ModalDialog.prototype._init.call(this);
|
ModalDialog.ModalDialog.prototype._init.call(this, { styleClass: 'end-session-dialog' });
|
||||||
|
|
||||||
this._user = Gdm.UserManager.ref_default().get_user(GLib.get_user_name());
|
this._user = Gdm.UserManager.ref_default().get_user(GLib.get_user_name());
|
||||||
|
|
||||||
@ -288,12 +293,26 @@ EndSessionDialog.prototype = {
|
|||||||
this.contentLayout.add(scrollView,
|
this.contentLayout.add(scrollView,
|
||||||
{ x_fill: true,
|
{ x_fill: true,
|
||||||
y_fill: true });
|
y_fill: true });
|
||||||
|
scrollView.hide();
|
||||||
|
|
||||||
this._applicationList = new St.BoxLayout({ vertical: true });
|
this._applicationList = new St.BoxLayout({ vertical: true });
|
||||||
scrollView.add_actor(this._applicationList,
|
scrollView.add_actor(this._applicationList,
|
||||||
{ x_fill: true,
|
{ x_fill: true,
|
||||||
y_fill: true,
|
y_fill: true,
|
||||||
x_align: St.Align.START,
|
x_align: St.Align.START,
|
||||||
y_align: St.Align.MIDDLE });
|
y_align: St.Align.MIDDLE });
|
||||||
|
|
||||||
|
this._applicationList.connect('actor-added',
|
||||||
|
Lang.bind(this, function() {
|
||||||
|
if (this._applicationList.get_children().length == 1)
|
||||||
|
scrollView.show();
|
||||||
|
}));
|
||||||
|
|
||||||
|
this._applicationList.connect('actor-removed',
|
||||||
|
Lang.bind(this, function() {
|
||||||
|
if (this._applicationList.get_children().length == 0)
|
||||||
|
scrollView.hide();
|
||||||
|
}));
|
||||||
},
|
},
|
||||||
|
|
||||||
_onDestroy: function() {
|
_onDestroy: function() {
|
||||||
@ -392,18 +411,27 @@ EndSessionDialog.prototype = {
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
let dialogContent = DialogContent[this._type];
|
let dialogContent = DialogContent[this._type];
|
||||||
let confirmButtonText = _("Confirm");
|
let buttons = [{ action: Lang.bind(this, this.cancel),
|
||||||
|
label: _("Cancel"),
|
||||||
|
key: Clutter.Escape }];
|
||||||
|
|
||||||
if (dialogContent.confirmButtonText)
|
for (let i = 0; i < dialogContent.confirmButtons.length; i++) {
|
||||||
confirmButtonText = dialogContent.confirmButtonText;
|
let signal = dialogContent.confirmButtons[i].signal;
|
||||||
|
let label = dialogContent.confirmButtons[i].label;
|
||||||
|
buttons.push({ action: Lang.bind(this, function() {
|
||||||
|
this._confirm(signal);
|
||||||
|
}),
|
||||||
|
label: label });
|
||||||
|
}
|
||||||
|
|
||||||
this.setButtons([{ label: _("Cancel"),
|
this.setButtons(buttons);
|
||||||
action: Lang.bind(this, this.cancel),
|
|
||||||
key: Clutter.Escape
|
|
||||||
},
|
},
|
||||||
{ label: confirmButtonText,
|
|
||||||
action: Lang.bind(this, this._confirm)
|
close: function() {
|
||||||
}]);
|
ModalDialog.ModalDialog.prototype.close.call(this);
|
||||||
|
DBus.session.emit_signal('/org/gnome/SessionManager/EndSessionDialog',
|
||||||
|
'org.gnome.SessionManager.EndSessionDialog',
|
||||||
|
'Closed', '', []);
|
||||||
},
|
},
|
||||||
|
|
||||||
cancel: function() {
|
cancel: function() {
|
||||||
@ -414,12 +442,12 @@ EndSessionDialog.prototype = {
|
|||||||
this.close(global.get_current_time());
|
this.close(global.get_current_time());
|
||||||
},
|
},
|
||||||
|
|
||||||
_confirm: function() {
|
_confirm: function(signal) {
|
||||||
this._fadeOutDialog();
|
this._fadeOutDialog();
|
||||||
this._stopTimer();
|
this._stopTimer();
|
||||||
DBus.session.emit_signal('/org/gnome/SessionManager/EndSessionDialog',
|
DBus.session.emit_signal('/org/gnome/SessionManager/EndSessionDialog',
|
||||||
'org.gnome.SessionManager.EndSessionDialog',
|
'org.gnome.SessionManager.EndSessionDialog',
|
||||||
'Confirmed', '', []);
|
signal, '', []);
|
||||||
},
|
},
|
||||||
|
|
||||||
_onOpened: function() {
|
_onOpened: function() {
|
||||||
@ -434,7 +462,11 @@ EndSessionDialog.prototype = {
|
|||||||
time: this._secondsLeft,
|
time: this._secondsLeft,
|
||||||
transition: 'linear',
|
transition: 'linear',
|
||||||
onUpdate: Lang.bind(this, this._updateContent),
|
onUpdate: Lang.bind(this, this._updateContent),
|
||||||
onComplete: Lang.bind(this, this._confirm),
|
onComplete: Lang.bind(this, function() {
|
||||||
|
let dialogContent = DialogContent[this._type];
|
||||||
|
let button = dialogContent.confirmButtons[dialogContent.confirmButtons.length - 1];
|
||||||
|
this._confirm(button.signal);
|
||||||
|
}),
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -281,8 +281,11 @@ IconGrid.prototype = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
childrenInRow: function(rowWidth) {
|
||||||
|
return this._computeLayout(rowWidth)[0];
|
||||||
|
},
|
||||||
|
|
||||||
_computeLayout: function (forWidth) {
|
_computeLayout: function (forWidth) {
|
||||||
let children = this._grid.get_children();
|
|
||||||
let nColumns = 0;
|
let nColumns = 0;
|
||||||
let usedWidth = 0;
|
let usedWidth = 0;
|
||||||
while ((this._colLimit == null || nColumns < this._colLimit) &&
|
while ((this._colLimit == null || nColumns < this._colLimit) &&
|
||||||
|
100
js/ui/main.js
100
js/ui/main.js
@ -86,6 +86,9 @@ function start() {
|
|||||||
global.logError = _logError;
|
global.logError = _logError;
|
||||||
global.log = _logDebug;
|
global.log = _logDebug;
|
||||||
|
|
||||||
|
// Chain up async errors reported from C
|
||||||
|
global.connect('notify-error', function (global, msg, detail) { notifyError(msg, detail); });
|
||||||
|
|
||||||
Gio.DesktopAppInfo.set_desktop_env('GNOME');
|
Gio.DesktopAppInfo.set_desktop_env('GNOME');
|
||||||
|
|
||||||
shellDBusService = new ShellDBus.GnomeShell();
|
shellDBusService = new ShellDBus.GnomeShell();
|
||||||
@ -133,6 +136,7 @@ function start() {
|
|||||||
|
|
||||||
// Set up stage hierarchy to group all UI actors under one container.
|
// Set up stage hierarchy to group all UI actors under one container.
|
||||||
uiGroup = new Clutter.Group();
|
uiGroup = new Clutter.Group();
|
||||||
|
St.set_ui_root(global.stage, uiGroup);
|
||||||
global.window_group.reparent(uiGroup);
|
global.window_group.reparent(uiGroup);
|
||||||
global.overlay_group.reparent(uiGroup);
|
global.overlay_group.reparent(uiGroup);
|
||||||
global.stage.add_actor(uiGroup);
|
global.stage.add_actor(uiGroup);
|
||||||
@ -189,7 +193,7 @@ function start() {
|
|||||||
// Attempt to become a PolicyKit authentication agent
|
// Attempt to become a PolicyKit authentication agent
|
||||||
PolkitAuthenticationAgent.init()
|
PolkitAuthenticationAgent.init()
|
||||||
|
|
||||||
global.gdk_screen.connect('monitors-changed', _relayout);
|
global.screen.connect('monitors-changed', _relayout);
|
||||||
|
|
||||||
ExtensionSystem.init();
|
ExtensionSystem.init();
|
||||||
ExtensionSystem.loadExtensions();
|
ExtensionSystem.loadExtensions();
|
||||||
@ -216,7 +220,11 @@ function start() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
global.screen.connect('notify::n-workspaces', _nWorkspacesChanged);
|
global.screen.connect('notify::n-workspaces', _nWorkspacesChanged);
|
||||||
Mainloop.idle_add(_nWorkspacesChanged);
|
|
||||||
|
global.screen.connect('window-entered-monitor', _windowEnteredMonitor);
|
||||||
|
global.screen.connect('window-left-monitor', _windowLeftMonitor);
|
||||||
|
|
||||||
|
_nWorkspacesChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
let _workspaces = [];
|
let _workspaces = [];
|
||||||
@ -303,6 +311,20 @@ function _windowRemoved(workspace, window) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function _windowLeftMonitor(metaScreen, monitorIndex, metaWin) {
|
||||||
|
// If the window left the primary monitor, that
|
||||||
|
// might make that workspace empty
|
||||||
|
if (monitorIndex == global.get_primary_monitor_index())
|
||||||
|
_queueCheckWorkspaces();
|
||||||
|
}
|
||||||
|
|
||||||
|
function _windowEnteredMonitor(metaScreen, monitorIndex, metaWin) {
|
||||||
|
// If the window entered the primary monitor, that
|
||||||
|
// might make that workspace non-empty
|
||||||
|
if (monitorIndex == global.get_primary_monitor_index())
|
||||||
|
_queueCheckWorkspaces();
|
||||||
|
}
|
||||||
|
|
||||||
function _queueCheckWorkspaces() {
|
function _queueCheckWorkspaces() {
|
||||||
if (_checkWorkspacesId == 0)
|
if (_checkWorkspacesId == 0)
|
||||||
_checkWorkspacesId = Meta.later_add(Meta.LaterType.BEFORE_REDRAW, _checkWorkspaces);
|
_checkWorkspacesId = Meta.later_add(Meta.LaterType.BEFORE_REDRAW, _checkWorkspaces);
|
||||||
@ -395,6 +417,27 @@ function loadTheme() {
|
|||||||
themeContext.set_theme (theme);
|
themeContext.set_theme (theme);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* notifyError:
|
||||||
|
* @msg: An error message
|
||||||
|
* @details: Additional information
|
||||||
|
*
|
||||||
|
* See shell_global_notify_problem().
|
||||||
|
*/
|
||||||
|
function notifyError(msg, details) {
|
||||||
|
// Also print to stderr so it's logged somewhere
|
||||||
|
if (details)
|
||||||
|
log("error: " + msg + ": " + details);
|
||||||
|
else
|
||||||
|
log("error: " + msg)
|
||||||
|
|
||||||
|
let source = new MessageTray.SystemNotificationSource();
|
||||||
|
messageTray.add(source);
|
||||||
|
let notification = new MessageTray.Notification(source, msg, details);
|
||||||
|
notification.setTransient(true);
|
||||||
|
source.notify(notification);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* _log:
|
* _log:
|
||||||
* @category: string message type ('info', 'error')
|
* @category: string message type ('info', 'error')
|
||||||
@ -438,28 +481,67 @@ function _getAndClearErrorStack() {
|
|||||||
|
|
||||||
function _relayout() {
|
function _relayout() {
|
||||||
let monitors = global.get_monitors();
|
let monitors = global.get_monitors();
|
||||||
if (monitors.length != hotCorners.length) {
|
|
||||||
// destroy old corners
|
// destroy old corners
|
||||||
for (let i = 0; i < hotCorners.length; i++)
|
for (let i = 0; i < hotCorners.length; i++)
|
||||||
hotCorners[i].destroy();
|
hotCorners[i].destroy();
|
||||||
hotCorners = [];
|
hotCorners = [];
|
||||||
for (let i = 0; i < monitors.length; i++)
|
|
||||||
hotCorners[i] = new Panel.HotCorner();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
let primary = global.get_primary_monitor();
|
let primary = global.get_primary_monitor();
|
||||||
for (let i = 0; i < monitors.length; i++) {
|
for (let i = 0; i < monitors.length; i++) {
|
||||||
let monitor = monitors[i];
|
let monitor = monitors[i];
|
||||||
let corner = hotCorners[i];
|
|
||||||
let isPrimary = (monitor.x == primary.x &&
|
let isPrimary = (monitor.x == primary.x &&
|
||||||
monitor.y == primary.y &&
|
monitor.y == primary.y &&
|
||||||
monitor.width == primary.width &&
|
monitor.width == primary.width &&
|
||||||
monitor.height == primary.height);
|
monitor.height == primary.height);
|
||||||
|
|
||||||
|
let cornerX = monitor.x;
|
||||||
|
let cornerY = monitor.y;
|
||||||
if (St.Widget.get_default_direction() == St.TextDirection.RTL)
|
if (St.Widget.get_default_direction() == St.TextDirection.RTL)
|
||||||
corner.actor.set_position(monitor.x + monitor.width, monitor.y);
|
cornerX += monitor.width;
|
||||||
|
|
||||||
|
|
||||||
|
let haveTopLeftCorner = true;
|
||||||
|
|
||||||
|
/* Check if we have a top left (right for RTL) corner.
|
||||||
|
* I.e. if there is no monitor directly above or to the left(right) */
|
||||||
|
let besideX;
|
||||||
|
if (St.Widget.get_default_direction() == St.TextDirection.RTL)
|
||||||
|
besideX = monitor.x + 1;
|
||||||
else
|
else
|
||||||
corner.actor.set_position(monitor.x, monitor.y);
|
besideX = cornerX - 1;
|
||||||
|
let besideY = cornerY;
|
||||||
|
let aboveX = cornerX;
|
||||||
|
let aboveY = cornerY - 1;
|
||||||
|
|
||||||
|
for (let j = 0; j < monitors.length; j++) {
|
||||||
|
if (i == j)
|
||||||
|
continue;
|
||||||
|
let otherMonitor = monitors[j];
|
||||||
|
if (besideX >= otherMonitor.x &&
|
||||||
|
besideX < otherMonitor.x + otherMonitor.width &&
|
||||||
|
besideY >= otherMonitor.y &&
|
||||||
|
besideY < otherMonitor.y + otherMonitor.height) {
|
||||||
|
haveTopLeftCorner = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (aboveX >= otherMonitor.x &&
|
||||||
|
aboveX < otherMonitor.x + otherMonitor.width &&
|
||||||
|
aboveY >= otherMonitor.y &&
|
||||||
|
aboveY < otherMonitor.y + otherMonitor.height) {
|
||||||
|
haveTopLeftCorner = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* We only want hot corners where there is a natural top-left
|
||||||
|
* corner, and on the primary monitor */
|
||||||
|
if (!isPrimary && !haveTopLeftCorner)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
let corner = new Panel.HotCorner();
|
||||||
|
hotCorners.push(corner);
|
||||||
|
corner.actor.set_position(cornerX, cornerY);
|
||||||
if (isPrimary)
|
if (isPrimary)
|
||||||
panel.setHotCorner(corner);
|
panel.setHotCorner(corner);
|
||||||
}
|
}
|
||||||
|
@ -406,24 +406,23 @@ Notification.prototype = {
|
|||||||
this._bannerBodyMarkup = false;
|
this._bannerBodyMarkup = false;
|
||||||
this._titleFitsInBannerMode = true;
|
this._titleFitsInBannerMode = true;
|
||||||
this._spacing = 0;
|
this._spacing = 0;
|
||||||
|
this._scrollPolicy = Gtk.PolicyType.AUTOMATIC;
|
||||||
|
|
||||||
source.connect('destroy', Lang.bind(this,
|
source.connect('destroy', Lang.bind(this,
|
||||||
// Avoid passing 'source' as an argument to this.destroy()
|
function (source, reason) {
|
||||||
function () {
|
this.destroy(reason);
|
||||||
this.destroy();
|
|
||||||
}));
|
}));
|
||||||
|
|
||||||
this.actor = new St.Table({ name: 'notification',
|
this.actor = new St.Button();
|
||||||
reactive: true });
|
this.actor._delegate = this;
|
||||||
this.actor.connect('style-changed', Lang.bind(this, this._styleChanged));
|
this.actor.connect('clicked', Lang.bind(this, this._onClicked));
|
||||||
this.actor.connect('button-release-event', Lang.bind(this,
|
|
||||||
function (actor, event) {
|
|
||||||
if (!this._actionArea ||
|
|
||||||
!this._actionArea.contains(event.get_source()))
|
|
||||||
this._onClicked();
|
|
||||||
}));
|
|
||||||
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
|
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
|
||||||
|
|
||||||
|
this._table = new St.Table({ name: 'notification',
|
||||||
|
reactive: true });
|
||||||
|
this._table.connect('style-changed', Lang.bind(this, this._styleChanged));
|
||||||
|
this.actor.set_child(this._table);
|
||||||
|
|
||||||
this._buttonFocusManager = St.FocusManager.get_for_stage(global.stage);
|
this._buttonFocusManager = St.FocusManager.get_for_stage(global.stage);
|
||||||
|
|
||||||
// The first line should have the title, followed by the
|
// The first line should have the title, followed by the
|
||||||
@ -435,7 +434,7 @@ Notification.prototype = {
|
|||||||
this._bannerBox.connect('get-preferred-width', Lang.bind(this, this._bannerBoxGetPreferredWidth));
|
this._bannerBox.connect('get-preferred-width', Lang.bind(this, this._bannerBoxGetPreferredWidth));
|
||||||
this._bannerBox.connect('get-preferred-height', Lang.bind(this, this._bannerBoxGetPreferredHeight));
|
this._bannerBox.connect('get-preferred-height', Lang.bind(this, this._bannerBoxGetPreferredHeight));
|
||||||
this._bannerBox.connect('allocate', Lang.bind(this, this._bannerBoxAllocate));
|
this._bannerBox.connect('allocate', Lang.bind(this, this._bannerBoxAllocate));
|
||||||
this.actor.add(this._bannerBox, { row: 0,
|
this._table.add(this._bannerBox, { row: 0,
|
||||||
col: 1,
|
col: 1,
|
||||||
y_expand: false,
|
y_expand: false,
|
||||||
y_fill: false });
|
y_fill: false });
|
||||||
@ -468,26 +467,34 @@ Notification.prototype = {
|
|||||||
|
|
||||||
this._customContent = params.customContent;
|
this._customContent = params.customContent;
|
||||||
|
|
||||||
|
let oldFocus = global.stage.key_focus;
|
||||||
|
|
||||||
if (this._icon)
|
if (this._icon)
|
||||||
this._icon.destroy();
|
this._icon.destroy();
|
||||||
// We always clear the content area if we don't have custom
|
// We always clear the content area if we don't have custom
|
||||||
// content because it might contain the @banner that didn't
|
// content because it might contain the @banner that didn't
|
||||||
// fit in the banner mode.
|
// fit in the banner mode.
|
||||||
if (this._scrollArea && (!this._customContent || params.clear)) {
|
if (this._scrollArea && (!this._customContent || params.clear)) {
|
||||||
|
if (oldFocus && this._scrollArea.contains(oldFocus))
|
||||||
|
this.actor.grab_key_focus();
|
||||||
|
|
||||||
this._scrollArea.destroy();
|
this._scrollArea.destroy();
|
||||||
this._scrollArea = null;
|
this._scrollArea = null;
|
||||||
this._contentArea = null;
|
this._contentArea = null;
|
||||||
}
|
}
|
||||||
if (this._actionArea && params.clear) {
|
if (this._actionArea && params.clear) {
|
||||||
|
if (oldFocus && this._actionArea.contains(oldFocus))
|
||||||
|
this.actor.grab_key_focus();
|
||||||
|
|
||||||
this._actionArea.destroy();
|
this._actionArea.destroy();
|
||||||
this._actionArea = null;
|
this._actionArea = null;
|
||||||
this._buttonBox = null;
|
this._buttonBox = null;
|
||||||
}
|
}
|
||||||
if (!this._scrollArea && !this._actionArea)
|
if (!this._scrollArea && !this._actionArea)
|
||||||
this.actor.remove_style_class_name('multi-line-notification');
|
this._table.remove_style_class_name('multi-line-notification');
|
||||||
|
|
||||||
this._icon = params.icon || this.source.createNotificationIcon();
|
this._icon = params.icon || this.source.createNotificationIcon();
|
||||||
this.actor.add(this._icon, { row: 0,
|
this._table.add(this._icon, { row: 0,
|
||||||
col: 0,
|
col: 0,
|
||||||
x_expand: false,
|
x_expand: false,
|
||||||
y_expand: false,
|
y_expand: false,
|
||||||
@ -518,13 +525,23 @@ Notification.prototype = {
|
|||||||
this._updated();
|
this._updated();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
setIconVisible: function(visible) {
|
||||||
|
this._icon.visible = visible;
|
||||||
|
},
|
||||||
|
|
||||||
|
enableScrolling: function(enableScrolling) {
|
||||||
|
this._scrollPolicy = enableScrolling ? Gtk.PolicyType.AUTOMATIC : Gtk.PolicyType.NEVER;
|
||||||
|
if (this._scrollArea)
|
||||||
|
this._scrollArea.vscrollbar_policy = this._scrollPolicy;
|
||||||
|
},
|
||||||
|
|
||||||
_createScrollArea: function() {
|
_createScrollArea: function() {
|
||||||
this.actor.add_style_class_name('multi-line-notification');
|
this._table.add_style_class_name('multi-line-notification');
|
||||||
this._scrollArea = new St.ScrollView({ name: 'notification-scrollview',
|
this._scrollArea = new St.ScrollView({ name: 'notification-scrollview',
|
||||||
vscrollbar_policy: Gtk.PolicyType.AUTOMATIC,
|
vscrollbar_policy: this._scrollPolicy,
|
||||||
hscrollbar_policy: Gtk.PolicyType.NEVER,
|
hscrollbar_policy: Gtk.PolicyType.NEVER,
|
||||||
vfade: true });
|
vfade: true });
|
||||||
this.actor.add(this._scrollArea, { row: 1, col: 1 });
|
this._table.add(this._scrollArea, { row: 1, col: 1 });
|
||||||
this._contentArea = new St.BoxLayout({ name: 'notification-body',
|
this._contentArea = new St.BoxLayout({ name: 'notification-body',
|
||||||
vertical: true });
|
vertical: true });
|
||||||
this._scrollArea.add_actor(this._contentArea);
|
this._scrollArea.add_actor(this._contentArea);
|
||||||
@ -603,8 +620,8 @@ Notification.prototype = {
|
|||||||
props.row = 2;
|
props.row = 2;
|
||||||
props.col = 1;
|
props.col = 1;
|
||||||
|
|
||||||
this.actor.add_style_class_name('multi-line-notification');
|
this._table.add_style_class_name('multi-line-notification');
|
||||||
this.actor.add(this._actionArea, props);
|
this._table.add(this._actionArea, props);
|
||||||
this._updated();
|
this._updated();
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -665,7 +682,7 @@ Notification.prototype = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
_styleChanged: function() {
|
_styleChanged: function() {
|
||||||
this._spacing = this.actor.get_theme_node().get_length('spacing-columns');
|
this._spacing = this._table.get_theme_node().get_length('spacing-columns');
|
||||||
},
|
},
|
||||||
|
|
||||||
_bannerBoxGetPreferredWidth: function(actor, forHeight, alloc) {
|
_bannerBoxGetPreferredWidth: function(actor, forHeight, alloc) {
|
||||||
@ -710,7 +727,7 @@ Notification.prototype = {
|
|||||||
// Make _bannerLabel visible if the entire notification
|
// Make _bannerLabel visible if the entire notification
|
||||||
// fits on one line, or if the notification is currently
|
// fits on one line, or if the notification is currently
|
||||||
// unexpanded and only showing one line anyway.
|
// unexpanded and only showing one line anyway.
|
||||||
if (!this.expanded || (bannerFits && this.actor.row_count == 1))
|
if (!this.expanded || (bannerFits && this._table.row_count == 1))
|
||||||
this._bannerLabel.opacity = 255;
|
this._bannerLabel.opacity = 255;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -722,7 +739,7 @@ Notification.prototype = {
|
|||||||
function() {
|
function() {
|
||||||
this._addBannerBody();
|
this._addBannerBody();
|
||||||
if (!this._titleFitsInBannerMode)
|
if (!this._titleFitsInBannerMode)
|
||||||
this.actor.add_style_class_name('multi-line-notification');
|
this._table.add_style_class_name('multi-line-notification');
|
||||||
this._updated();
|
this._updated();
|
||||||
return false;
|
return false;
|
||||||
}));
|
}));
|
||||||
@ -743,7 +760,7 @@ Notification.prototype = {
|
|||||||
this._titleLabel.clutter_text.line_wrap = true;
|
this._titleLabel.clutter_text.line_wrap = true;
|
||||||
this._titleLabel.clutter_text.line_wrap_mode = Pango.WrapMode.WORD_CHAR;
|
this._titleLabel.clutter_text.line_wrap_mode = Pango.WrapMode.WORD_CHAR;
|
||||||
this._titleLabel.clutter_text.ellipsize = Pango.EllipsizeMode.NONE;
|
this._titleLabel.clutter_text.ellipsize = Pango.EllipsizeMode.NONE;
|
||||||
} else if (this.actor.row_count > 1 && this._bannerLabel.opacity != 0) {
|
} else if (this._table.row_count > 1 && this._bannerLabel.opacity != 0) {
|
||||||
// We always hide the banner if the notification has additional content.
|
// We always hide the banner if the notification has additional content.
|
||||||
//
|
//
|
||||||
// We don't need to wrap the banner that doesn't fit the way we wrap the
|
// We don't need to wrap the banner that doesn't fit the way we wrap the
|
||||||
@ -808,6 +825,7 @@ Notification.prototype = {
|
|||||||
destroy: function(reason) {
|
destroy: function(reason) {
|
||||||
this._destroyedReason = reason;
|
this._destroyedReason = reason;
|
||||||
this.actor.destroy();
|
this.actor.destroy();
|
||||||
|
this.actor._delegate = null;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
Signals.addSignalMethods(Notification.prototype);
|
Signals.addSignalMethods(Notification.prototype);
|
||||||
@ -822,9 +840,13 @@ Source.prototype = {
|
|||||||
_init: function(title) {
|
_init: function(title) {
|
||||||
this.title = title;
|
this.title = title;
|
||||||
this._iconBin = new St.Bin({ width: this.ICON_SIZE,
|
this._iconBin = new St.Bin({ width: this.ICON_SIZE,
|
||||||
height: this.ICON_SIZE });
|
height: this.ICON_SIZE,
|
||||||
|
x_fill: true,
|
||||||
|
y_fill: true });
|
||||||
this.isTransient = false;
|
this.isTransient = false;
|
||||||
this.isChat = false;
|
this.isChat = false;
|
||||||
|
|
||||||
|
this.notifications = [];
|
||||||
},
|
},
|
||||||
|
|
||||||
setTransient: function(isTransient) {
|
setTransient: function(isTransient) {
|
||||||
@ -844,30 +866,40 @@ Source.prototype = {
|
|||||||
return this._iconBin;
|
return this._iconBin;
|
||||||
},
|
},
|
||||||
|
|
||||||
notify: function(notification) {
|
pushNotification: function(notification) {
|
||||||
if (this.notification) {
|
if (this.notifications.indexOf(notification) < 0) {
|
||||||
this.notification.disconnect(this._notificationClickedId);
|
this.notifications.push(notification);
|
||||||
this.notification.disconnect(this._notificationDestroyedId);
|
this.emit('notification-added', notification);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.notification = notification;
|
notification.connect('clicked', Lang.bind(this, this.open));
|
||||||
|
notification.connect('destroy', Lang.bind(this,
|
||||||
this._notificationClickedId = notification.connect('clicked', Lang.bind(this, this.open));
|
|
||||||
this._notificationDestroyedId = notification.connect('destroy', Lang.bind(this,
|
|
||||||
function () {
|
function () {
|
||||||
if (this.notification == notification) {
|
let index = this.notifications.indexOf(notification);
|
||||||
this.notification = null;
|
if (index < 0)
|
||||||
this._notificationDestroyedId = 0;
|
return;
|
||||||
this._notificationClickedId = 0;
|
|
||||||
this._notificationRemoved();
|
|
||||||
}
|
|
||||||
}));
|
|
||||||
|
|
||||||
|
this.notifications.splice(index, 1);
|
||||||
|
if (this.notifications.length == 0)
|
||||||
|
this._lastNotificationRemoved();
|
||||||
|
}));
|
||||||
|
},
|
||||||
|
|
||||||
|
notify: function(notification) {
|
||||||
|
this.pushNotification(notification);
|
||||||
this.emit('notify', notification);
|
this.emit('notify', notification);
|
||||||
},
|
},
|
||||||
|
|
||||||
destroy: function() {
|
destroy: function(reason) {
|
||||||
this.emit('destroy');
|
this.emit('destroy', reason);
|
||||||
|
},
|
||||||
|
|
||||||
|
// A subclass can redefine this to "steal" clicks from the
|
||||||
|
// summaryitem; Use Clutter.get_current_event() to get the
|
||||||
|
// details, return true to prevent the default handling from
|
||||||
|
// ocurring.
|
||||||
|
handleSummaryClick: function() {
|
||||||
|
return false;
|
||||||
},
|
},
|
||||||
|
|
||||||
//// Protected methods ////
|
//// Protected methods ////
|
||||||
@ -883,8 +915,14 @@ Source.prototype = {
|
|||||||
open: function(notification) {
|
open: function(notification) {
|
||||||
},
|
},
|
||||||
|
|
||||||
|
destroyNonResidentNotifications: function() {
|
||||||
|
for (let i = this.notifications.length - 1; i >= 0; i--)
|
||||||
|
if (!this.notifications[i].resident)
|
||||||
|
this.notifications[i].destroy();
|
||||||
|
},
|
||||||
|
|
||||||
// Default implementation is to destroy this source, but subclasses can override
|
// Default implementation is to destroy this source, but subclasses can override
|
||||||
_notificationRemoved: function() {
|
_lastNotificationRemoved: function() {
|
||||||
this.destroy();
|
this.destroy();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -897,8 +935,12 @@ function SummaryItem(source) {
|
|||||||
SummaryItem.prototype = {
|
SummaryItem.prototype = {
|
||||||
_init: function(source) {
|
_init: function(source) {
|
||||||
this.source = source;
|
this.source = source;
|
||||||
|
this.source.connect('notification-added', Lang.bind(this, this._notificationAddedToSource));
|
||||||
|
|
||||||
this.actor = new St.Button({ style_class: 'summary-source-button',
|
this.actor = new St.Button({ style_class: 'summary-source-button',
|
||||||
|
y_fill: true,
|
||||||
reactive: true,
|
reactive: true,
|
||||||
|
button_mask: St.ButtonMask.ONE | St.ButtonMask.TWO | St.ButtonMask.THREE,
|
||||||
track_hover: true });
|
track_hover: true });
|
||||||
|
|
||||||
this._sourceBox = new St.BoxLayout({ style_class: 'summary-source' });
|
this._sourceBox = new St.BoxLayout({ style_class: 'summary-source' });
|
||||||
@ -913,9 +955,30 @@ SummaryItem.prototype = {
|
|||||||
this._sourceTitleBin.child = this._sourceTitle;
|
this._sourceTitleBin.child = this._sourceTitle;
|
||||||
this._sourceTitleBin.width = 0;
|
this._sourceTitleBin.width = 0;
|
||||||
|
|
||||||
this._sourceBox.add_actor(this._sourceIcon);
|
this._sourceBox.add(this._sourceIcon, { y_fill: false });
|
||||||
this._sourceBox.add_actor(this._sourceTitleBin, { expand: true });
|
this._sourceBox.add(this._sourceTitleBin, { expand: true, y_fill: false });
|
||||||
this.actor.child = this._sourceBox;
|
this.actor.child = this._sourceBox;
|
||||||
|
|
||||||
|
this.notificationStackView = new St.ScrollView({ name: source.isChat ? '' : 'summary-notification-stack-scrollview',
|
||||||
|
vscrollbar_policy: source.isChat ? Gtk.PolicyType.NEVER : Gtk.PolicyType.AUTOMATIC,
|
||||||
|
hscrollbar_policy: Gtk.PolicyType.NEVER,
|
||||||
|
vfade: true });
|
||||||
|
this.notificationStack = new St.BoxLayout({ name: 'summary-notification-stack',
|
||||||
|
vertical: true });
|
||||||
|
this.notificationStackView.add_actor(this.notificationStack);
|
||||||
|
this._notificationExpandedIds = [];
|
||||||
|
this._notificationDoneDisplayingIds = [];
|
||||||
|
this._notificationDestroyedIds = [];
|
||||||
|
|
||||||
|
this._oldMaxScrollAdjustment = 0;
|
||||||
|
|
||||||
|
this.notificationStackView.vscroll.adjustment.connect('changed', Lang.bind(this, function(adjustment) {
|
||||||
|
let currentValue = adjustment.value + adjustment.page_size;
|
||||||
|
if (currentValue == this._oldMaxScrollAdjustment)
|
||||||
|
this.scrollTo(St.Side.BOTTOM);
|
||||||
|
this._oldMaxScrollAdjustment = adjustment.upper;
|
||||||
|
}));
|
||||||
|
|
||||||
this.rightClickMenu = new St.BoxLayout({ name: 'summary-right-click-menu',
|
this.rightClickMenu = new St.BoxLayout({ name: 'summary-right-click-menu',
|
||||||
vertical: true });
|
vertical: true });
|
||||||
|
|
||||||
@ -924,14 +987,14 @@ SummaryItem.prototype = {
|
|||||||
item = new PopupMenu.PopupMenuItem(_("Open"));
|
item = new PopupMenu.PopupMenuItem(_("Open"));
|
||||||
item.connect('activate', Lang.bind(this, function() {
|
item.connect('activate', Lang.bind(this, function() {
|
||||||
source.open();
|
source.open();
|
||||||
this.emit('right-click-menu-done-displaying');
|
this.emit('done-displaying-content');
|
||||||
}));
|
}));
|
||||||
this.rightClickMenu.add(item.actor);
|
this.rightClickMenu.add(item.actor);
|
||||||
|
|
||||||
item = new PopupMenu.PopupMenuItem(_("Remove"));
|
item = new PopupMenu.PopupMenuItem(_("Remove"));
|
||||||
item.connect('activate', Lang.bind(this, function() {
|
item.connect('activate', Lang.bind(this, function() {
|
||||||
source.destroy();
|
source.destroy();
|
||||||
this.emit('right-click-menu-done-displaying');
|
this.emit('done-displaying-content');
|
||||||
}));
|
}));
|
||||||
this.rightClickMenu.add(item.actor);
|
this.rightClickMenu.add(item.actor);
|
||||||
|
|
||||||
@ -961,6 +1024,87 @@ SummaryItem.prototype = {
|
|||||||
|
|
||||||
setEllipsization: function(mode) {
|
setEllipsization: function(mode) {
|
||||||
this._sourceTitle.clutter_text.ellipsize = mode;
|
this._sourceTitle.clutter_text.ellipsize = mode;
|
||||||
|
},
|
||||||
|
|
||||||
|
prepareNotificationStackForShowing: function() {
|
||||||
|
if (this.notificationStack.get_children().length > 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
for (let i = 0; i < this.source.notifications.length; i++) {
|
||||||
|
this._appendNotificationToStack(this.source.notifications[i]);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
doneShowingNotificationStack: function() {
|
||||||
|
let notificationActors = this.notificationStack.get_children();
|
||||||
|
for (let i = 0; i < notificationActors.length; i++) {
|
||||||
|
notificationActors[i]._delegate.collapseCompleted();
|
||||||
|
notificationActors[i]._delegate.disconnect(this._notificationExpandedIds[i]);
|
||||||
|
notificationActors[i]._delegate.disconnect(this._notificationDoneDisplayingIds[i]);
|
||||||
|
notificationActors[i]._delegate.disconnect(this._notificationDestroyedIds[i]);
|
||||||
|
this.notificationStack.remove_actor(notificationActors[i]);
|
||||||
|
notificationActors[i]._delegate.setIconVisible(true);
|
||||||
|
notificationActors[i]._delegate.enableScrolling(true);
|
||||||
|
}
|
||||||
|
this._notificationExpandedIds = [];
|
||||||
|
this._notificationDoneDisplayingIds = [];
|
||||||
|
this._notificationDestroyedIds = [];
|
||||||
|
},
|
||||||
|
|
||||||
|
_notificationAddedToSource: function(source, notification) {
|
||||||
|
if (this.notificationStack.mapped)
|
||||||
|
this._appendNotificationToStack(notification);
|
||||||
|
},
|
||||||
|
|
||||||
|
_appendNotificationToStack: function(notification) {
|
||||||
|
let notificationExpandedId = notification.connect('expanded', Lang.bind(this, this._contentUpdated));
|
||||||
|
this._notificationExpandedIds.push(notificationExpandedId);
|
||||||
|
let notificationDoneDisplayingId = notification.connect('done-displaying', Lang.bind(this, this._notificationDoneDisplaying));
|
||||||
|
this._notificationDoneDisplayingIds.push(notificationDoneDisplayingId);
|
||||||
|
let notificationDestroyedId = notification.connect('destroy', Lang.bind(this, this._notificationDestroyed));
|
||||||
|
this._notificationDestroyedIds.push(notificationDestroyedId);
|
||||||
|
if (!this.source.isChat)
|
||||||
|
notification.enableScrolling(false);
|
||||||
|
if (this.notificationStack.get_children().length > 0)
|
||||||
|
notification.setIconVisible(false);
|
||||||
|
this.notificationStack.add(notification.actor);
|
||||||
|
notification.expand(false);
|
||||||
|
},
|
||||||
|
|
||||||
|
// scrollTo:
|
||||||
|
// @side: St.Side.TOP or St.Side.BOTTOM
|
||||||
|
//
|
||||||
|
// Scrolls the notifiction stack to the indicated edge
|
||||||
|
scrollTo: function(side) {
|
||||||
|
let adjustment = this.notificationStackView.vscroll.adjustment;
|
||||||
|
if (side == St.Side.TOP)
|
||||||
|
adjustment.value = adjustment.lower;
|
||||||
|
else if (side == St.Side.BOTTOM)
|
||||||
|
adjustment.value = adjustment.upper;
|
||||||
|
},
|
||||||
|
|
||||||
|
_contentUpdated: function() {
|
||||||
|
this.emit('content-updated');
|
||||||
|
},
|
||||||
|
|
||||||
|
_notificationDoneDisplaying: function() {
|
||||||
|
this.emit('done-displaying-content');
|
||||||
|
},
|
||||||
|
|
||||||
|
_notificationDestroyed: function(notification) {
|
||||||
|
let index = this.notificationStack.get_children().indexOf(notification.actor);
|
||||||
|
if (index >= 0) {
|
||||||
|
notification.disconnect(this._notificationExpandedIds[index]);
|
||||||
|
this._notificationExpandedIds.splice(index, 1);
|
||||||
|
notification.disconnect(this._notificationDoneDisplayingIds[index]);
|
||||||
|
this._notificationDoneDisplayingIds.splice(index, 1);
|
||||||
|
notification.disconnect(this._notificationDestroyedIds[index]);
|
||||||
|
this._notificationDestroyedIds.splice(index, 1);
|
||||||
|
this.notificationStack.remove_actor(notification.actor);
|
||||||
|
this._contentUpdated();
|
||||||
|
}
|
||||||
|
if (this.notificationStack.get_children().length > 0)
|
||||||
|
this.notificationStack.get_children()[0]._delegate.setIconVisible(true);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
Signals.addSignalMethods(SummaryItem.prototype);
|
Signals.addSignalMethods(SummaryItem.prototype);
|
||||||
@ -1009,14 +1153,15 @@ MessageTray.prototype = {
|
|||||||
this._summaryBoxPointer.actor.lower_bottom();
|
this._summaryBoxPointer.actor.lower_bottom();
|
||||||
this._summaryBoxPointer.actor.hide();
|
this._summaryBoxPointer.actor.hide();
|
||||||
|
|
||||||
this._summaryNotification = null;
|
this._summaryBoxPointerItem = null;
|
||||||
this._summaryNotificationClickedId = 0;
|
this._summaryBoxPointerContentUpdatedId = 0;
|
||||||
this._summaryRightClickMenuClickedId = 0;
|
this._summaryBoxPointerDoneDisplayingId = 0;
|
||||||
this._clickedSummaryItem = null;
|
this._clickedSummaryItem = null;
|
||||||
this._clickedSummaryItemMouseButton = -1;
|
this._clickedSummaryItemMouseButton = -1;
|
||||||
this._clickedSummaryItemAllocationChangedId = 0;
|
this._clickedSummaryItemAllocationChangedId = 0;
|
||||||
this._expandedSummaryItem = null;
|
this._expandedSummaryItem = null;
|
||||||
this._summaryItemTitleWidth = 0;
|
this._summaryItemTitleWidth = 0;
|
||||||
|
this._pointerBarrier = 0;
|
||||||
|
|
||||||
// To simplify the summary item animation code, we pretend
|
// To simplify the summary item animation code, we pretend
|
||||||
// that there's an invisible SummaryItem to the left of the
|
// that there's an invisible SummaryItem to the left of the
|
||||||
@ -1051,18 +1196,17 @@ MessageTray.prototype = {
|
|||||||
this._notificationTimeoutId = 0;
|
this._notificationTimeoutId = 0;
|
||||||
this._notificationExpandedId = 0;
|
this._notificationExpandedId = 0;
|
||||||
this._summaryBoxPointerState = State.HIDDEN;
|
this._summaryBoxPointerState = State.HIDDEN;
|
||||||
this._summaryNotificationTimeoutId = 0;
|
this._summaryBoxPointerTimeoutId = 0;
|
||||||
this._summaryNotificationExpandedId = 0;
|
|
||||||
this._overviewVisible = Main.overview.visible;
|
this._overviewVisible = Main.overview.visible;
|
||||||
this._notificationRemoved = false;
|
this._notificationRemoved = false;
|
||||||
this._reNotifyWithSummaryNotificationAfterHide = false;
|
this._reNotifyAfterHideNotification = null;
|
||||||
|
|
||||||
Main.chrome.addActor(this.actor, { affectsStruts: false,
|
Main.chrome.addActor(this.actor, { affectsStruts: false,
|
||||||
visibleInOverview: true });
|
visibleInOverview: true });
|
||||||
Main.chrome.trackActor(this._notificationBin);
|
Main.chrome.trackActor(this._notificationBin);
|
||||||
Main.chrome.trackActor(this._summaryBoxPointer.actor);
|
Main.chrome.trackActor(this._summaryBoxPointer.actor);
|
||||||
|
|
||||||
global.gdk_screen.connect('monitors-changed', Lang.bind(this, this._setSizePosition));
|
global.screen.connect('monitors-changed', Lang.bind(this, this._setSizePosition));
|
||||||
|
|
||||||
this._setSizePosition();
|
this._setSizePosition();
|
||||||
|
|
||||||
@ -1106,6 +1250,15 @@ MessageTray.prototype = {
|
|||||||
this._notificationBin.width = primary.width;
|
this._notificationBin.width = primary.width;
|
||||||
this._summaryBin.x = 0;
|
this._summaryBin.x = 0;
|
||||||
this._summaryBin.width = primary.width;
|
this._summaryBin.width = primary.width;
|
||||||
|
|
||||||
|
if (this._pointerBarrier)
|
||||||
|
global.destroy_pointer_barrier(this._pointerBarrier);
|
||||||
|
this._pointerBarrier =
|
||||||
|
global.create_pointer_barrier(primary.x + primary.width, primary.y + primary.height - this.actor.height,
|
||||||
|
primary.x + primary.width, primary.y + primary.height,
|
||||||
|
4 /* BarrierNegativeX */);
|
||||||
|
|
||||||
|
|
||||||
},
|
},
|
||||||
|
|
||||||
contains: function(source) {
|
contains: function(source) {
|
||||||
@ -1161,9 +1314,9 @@ MessageTray.prototype = {
|
|||||||
this._onSummaryItemHoverChanged(summaryItem);
|
this._onSummaryItemHoverChanged(summaryItem);
|
||||||
}));
|
}));
|
||||||
|
|
||||||
summaryItem.actor.connect('button-press-event', Lang.bind(this,
|
summaryItem.actor.connect('clicked', Lang.bind(this,
|
||||||
function (actor, event) {
|
function (actor, button) {
|
||||||
this._onSummaryItemClicked(summaryItem, event);
|
this._onSummaryItemClicked(summaryItem, button);
|
||||||
}));
|
}));
|
||||||
|
|
||||||
source.connect('destroy', Lang.bind(this, this._onSourceDestroy));
|
source.connect('destroy', Lang.bind(this, this._onSourceDestroy));
|
||||||
@ -1227,13 +1380,6 @@ MessageTray.prototype = {
|
|||||||
|
|
||||||
if (needUpdate);
|
if (needUpdate);
|
||||||
this._updateState();
|
this._updateState();
|
||||||
|
|
||||||
// remove all notifications with this source from the queue
|
|
||||||
let newNotificationQueue = [];
|
|
||||||
for (let i = this._notificationQueue.length - 1; i >= 0; i--) {
|
|
||||||
if (this._notificationQueue[i].source == source)
|
|
||||||
this._notificationQueue[i].destroy();
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_onNotificationDestroy: function(notification) {
|
_onNotificationDestroy: function(notification) {
|
||||||
@ -1262,14 +1408,18 @@ MessageTray.prototype = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
_onNotify: function(source, notification) {
|
_onNotify: function(source, notification) {
|
||||||
if (notification == this._summaryNotification) {
|
if (this._summaryBoxPointerItem && this._summaryBoxPointerItem.source == source) {
|
||||||
if (!this._summaryNotificationExpandedId)
|
if (this._summaryBoxPointerState == State.HIDING)
|
||||||
// We must be in the process of hiding the summary notification.
|
// We are in the process of hiding the summary box pointer.
|
||||||
// If the summary notification is updated while it is being
|
// If there is an update for one of the notifications or
|
||||||
// hidden, we show the update as a new notification. However,
|
// a new notification to be added to the notification stack
|
||||||
// we must first wait till the hide is complete and the
|
// while it is in the process of being hidden, we show it as
|
||||||
// notification actor is not part of the stage.
|
// a new notification. However, we first wait till the hide
|
||||||
this._reNotifyWithSummaryNotificationAfterHide = true;
|
// is complete. This is especially important if one of the
|
||||||
|
// notifications in the stack was updated because we will
|
||||||
|
// need to be able to re-parent its actor to a different
|
||||||
|
// part of the stage.
|
||||||
|
this._reNotifyAfterHideNotification = notification;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1308,12 +1458,18 @@ MessageTray.prototype = {
|
|||||||
// Turn off ellipsization for the previously expanded item that is
|
// Turn off ellipsization for the previously expanded item that is
|
||||||
// collapsing and for the item that is expanding because it looks
|
// collapsing and for the item that is expanding because it looks
|
||||||
// better that way.
|
// better that way.
|
||||||
if (this._expandedSummaryItem)
|
if (this._expandedSummaryItem) {
|
||||||
|
// Ideally, we would remove 'expanded' pseudo class when the item
|
||||||
|
// is done collapsing, but we don't track when that happens.
|
||||||
|
this._expandedSummaryItem.actor.remove_style_pseudo_class('expanded');
|
||||||
this._expandedSummaryItem.setEllipsization(Pango.EllipsizeMode.NONE);
|
this._expandedSummaryItem.setEllipsization(Pango.EllipsizeMode.NONE);
|
||||||
|
}
|
||||||
|
|
||||||
this._expandedSummaryItem = summaryItem;
|
this._expandedSummaryItem = summaryItem;
|
||||||
if (this._expandedSummaryItem)
|
if (this._expandedSummaryItem) {
|
||||||
|
this._expandedSummaryItem.actor.add_style_pseudo_class('expanded');
|
||||||
this._expandedSummaryItem.setEllipsization(Pango.EllipsizeMode.NONE);
|
this._expandedSummaryItem.setEllipsization(Pango.EllipsizeMode.NONE);
|
||||||
|
}
|
||||||
|
|
||||||
// We tween on a "_expandedSummaryItemTitleWidth" pseudo-property
|
// We tween on a "_expandedSummaryItemTitleWidth" pseudo-property
|
||||||
// that represents the current title width of the
|
// that represents the current title width of the
|
||||||
@ -1335,6 +1491,8 @@ MessageTray.prototype = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
set _expandedSummaryItemTitleWidth(expansion) {
|
set _expandedSummaryItemTitleWidth(expansion) {
|
||||||
|
expansion = Math.round(expansion);
|
||||||
|
|
||||||
// Expand the expanding item to its new width
|
// Expand the expanding item to its new width
|
||||||
if (this._expandedSummaryItem)
|
if (this._expandedSummaryItem)
|
||||||
this._expandedSummaryItem.setTitleWidth(expansion);
|
this._expandedSummaryItem.setTitleWidth(expansion);
|
||||||
@ -1365,11 +1523,32 @@ MessageTray.prototype = {
|
|||||||
if (this._summaryItems[i] == this._expandedSummaryItem)
|
if (this._summaryItems[i] == this._expandedSummaryItem)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
let width = this._summaryItems[i].getTitleWidth();
|
let oldWidth = this._summaryItems[i].getTitleWidth();
|
||||||
this._summaryItems[i].setTitleWidth(width * shrinkage);
|
let newWidth = Math.floor(oldWidth * shrinkage);
|
||||||
|
excess -= newWidth;
|
||||||
|
this._summaryItems[i].setTitleWidth(newWidth);
|
||||||
|
}
|
||||||
|
if (this._expandedSummaryItem) {
|
||||||
|
let oldWidth = this._imaginarySummaryItemTitleWidth;
|
||||||
|
let newWidth = Math.floor(oldWidth * shrinkage);
|
||||||
|
excess -= newWidth;
|
||||||
|
this._imaginarySummaryItemTitleWidth = newWidth;
|
||||||
|
}
|
||||||
|
|
||||||
|
// If the tray as a whole is fully-expanded, make sure the
|
||||||
|
// left edge doesn't wobble during animation due to rounding.
|
||||||
|
if (this._imaginarySummaryItemTitleWidth == 0 && excess != 0) {
|
||||||
|
for (let i = 0; i < this._summaryItems.length; i++) {
|
||||||
|
if (this._summaryItems[i] == this._expandedSummaryItem)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
let oldWidth = this._summaryItems[i].getTitleWidth();
|
||||||
|
if (oldWidth != 0) {
|
||||||
|
this._summaryItems[i].setTitleWidth (oldWidth + excess);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (this._expandedSummaryItem)
|
|
||||||
this._imaginarySummaryItemTitleWidth *= shrinkage;
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_expandSummaryItemCompleted: function() {
|
_expandSummaryItemCompleted: function() {
|
||||||
@ -1377,13 +1556,14 @@ MessageTray.prototype = {
|
|||||||
this._expandedSummaryItem.setEllipsization(Pango.EllipsizeMode.END);
|
this._expandedSummaryItem.setEllipsization(Pango.EllipsizeMode.END);
|
||||||
},
|
},
|
||||||
|
|
||||||
_onSummaryItemClicked: function(summaryItem, event) {
|
_onSummaryItemClicked: function(summaryItem, button) {
|
||||||
let clickedButton = event.get_button();
|
if (summaryItem.source.handleSummaryClick())
|
||||||
if (!this._clickedSummaryItem ||
|
this._unsetClickedSummaryItem();
|
||||||
|
else if (!this._clickedSummaryItem ||
|
||||||
this._clickedSummaryItem != summaryItem ||
|
this._clickedSummaryItem != summaryItem ||
|
||||||
this._clickedSummaryItemMouseButton != clickedButton) {
|
this._clickedSummaryItemMouseButton != button) {
|
||||||
this._clickedSummaryItem = summaryItem;
|
this._clickedSummaryItem = summaryItem;
|
||||||
this._clickedSummaryItemMouseButton = clickedButton;
|
this._clickedSummaryItemMouseButton = button;
|
||||||
} else {
|
} else {
|
||||||
this._unsetClickedSummaryItem();
|
this._unsetClickedSummaryItem();
|
||||||
}
|
}
|
||||||
@ -1519,14 +1699,15 @@ MessageTray.prototype = {
|
|||||||
// at the present time.
|
// at the present time.
|
||||||
_updateState: function() {
|
_updateState: function() {
|
||||||
// Notifications
|
// Notifications
|
||||||
let notificationsPending = this._notificationQueue.length > 0 &&
|
let notificationUrgent = this._notificationQueue.length > 0 && this._notificationQueue[0].urgency == Urgency.CRITICAL;
|
||||||
(!this._busy || this._notificationQueue[0].urgency == Urgency.CRITICAL);
|
let notificationsPending = this._notificationQueue.length > 0 && (!this._busy || notificationUrgent);
|
||||||
let notificationPinned = this._pointerInTray && !this._pointerInSummary && !this._notificationRemoved;
|
let notificationPinned = this._pointerInTray && !this._pointerInSummary && !this._notificationRemoved;
|
||||||
let notificationExpanded = this._notificationBin.y < 0;
|
let notificationExpanded = this._notificationBin.y < 0;
|
||||||
let notificationExpired = (this._notificationTimeoutId == 0 && !(this._notification && this._notification.urgency == Urgency.CRITICAL) && !this._pointerInTray && !this._locked) || this._notificationRemoved;
|
let notificationExpired = (this._notificationTimeoutId == 0 && !(this._notification && this._notification.urgency == Urgency.CRITICAL) && !this._pointerInTray && !this._locked) || this._notificationRemoved;
|
||||||
|
let canShowNotification = notificationsPending && this._summaryState == State.HIDDEN;
|
||||||
|
|
||||||
if (this._notificationState == State.HIDDEN) {
|
if (this._notificationState == State.HIDDEN) {
|
||||||
if (notificationsPending)
|
if (canShowNotification)
|
||||||
this._showNotification();
|
this._showNotification();
|
||||||
} else if (this._notificationState == State.SHOWN) {
|
} else if (this._notificationState == State.SHOWN) {
|
||||||
if (notificationExpired)
|
if (notificationExpired)
|
||||||
@ -1548,7 +1729,11 @@ MessageTray.prototype = {
|
|||||||
this._notificationState == State.SHOWN);
|
this._notificationState == State.SHOWN);
|
||||||
let notificationsDone = !notificationsVisible && !notificationsPending;
|
let notificationsDone = !notificationsVisible && !notificationsPending;
|
||||||
|
|
||||||
if (this._summaryState == State.HIDDEN) {
|
let summaryOptionalInOverview = this._overviewVisible && !this._locked && !summaryHovered;
|
||||||
|
let mustHideSummary = (notificationsPending && (notificationUrgent || summaryOptionalInOverview))
|
||||||
|
|| notificationsVisible;
|
||||||
|
|
||||||
|
if (this._summaryState == State.HIDDEN && !mustHideSummary) {
|
||||||
if (this._backFromAway) {
|
if (this._backFromAway) {
|
||||||
// Immediately set this to false, so that we don't schedule a timeout later
|
// Immediately set this to false, so that we don't schedule a timeout later
|
||||||
this._backFromAway = false;
|
this._backFromAway = false;
|
||||||
@ -1560,7 +1745,7 @@ MessageTray.prototype = {
|
|||||||
this._showSummary(0);
|
this._showSummary(0);
|
||||||
}
|
}
|
||||||
} else if (this._summaryState == State.SHOWN) {
|
} else if (this._summaryState == State.SHOWN) {
|
||||||
if (!summaryPinned)
|
if (!summaryPinned || mustHideSummary)
|
||||||
this._hideSummary();
|
this._hideSummary();
|
||||||
else if (summaryVisibleWithNoHover && !summaryNotificationIsForExpandedSummaryItem)
|
else if (summaryVisibleWithNoHover && !summaryNotificationIsForExpandedSummaryItem)
|
||||||
// If we are hiding the summary, we'll collapse the expanded summary item when we are done
|
// If we are hiding the summary, we'll collapse the expanded summary item when we are done
|
||||||
@ -1575,18 +1760,21 @@ MessageTray.prototype = {
|
|||||||
let summarySourceIsMainNotificationSource = (haveClickedSummaryItem && this._notification &&
|
let summarySourceIsMainNotificationSource = (haveClickedSummaryItem && this._notification &&
|
||||||
this._clickedSummaryItem.source == this._notification.source);
|
this._clickedSummaryItem.source == this._notification.source);
|
||||||
let canShowSummaryBoxPointer = this._summaryState == State.SHOWN;
|
let canShowSummaryBoxPointer = this._summaryState == State.SHOWN;
|
||||||
let wrongSummaryNotification = (this._clickedSummaryItemMouseButton == 1 &&
|
// We only have sources with empty notification stacks for legacy tray icons. Currently, we never attempt
|
||||||
this._summaryNotification != this._clickedSummaryItem.source.notification);
|
// to show notifications for legacy tray icons, but this would be necessary if we did.
|
||||||
|
let requestedNotificationStackIsEmpty = (this._clickedSummaryItemMouseButton == 1 && this._clickedSummaryItem.source.notifications.length == 0);
|
||||||
|
let wrongSummaryNotificationStack = (this._clickedSummaryItemMouseButton == 1 &&
|
||||||
|
this._summaryBoxPointer.bin.child != this._clickedSummaryItem.notificationStackView);
|
||||||
let wrongSummaryRightClickMenu = (this._clickedSummaryItemMouseButton == 3 &&
|
let wrongSummaryRightClickMenu = (this._clickedSummaryItemMouseButton == 3 &&
|
||||||
this._summaryBoxPointer.bin.child != this._clickedSummaryItem.rightClickMenu);
|
this._summaryBoxPointer.bin.child != this._clickedSummaryItem.rightClickMenu);
|
||||||
let wrongSummaryBoxPointer = (haveClickedSummaryItem &&
|
let wrongSummaryBoxPointer = (haveClickedSummaryItem &&
|
||||||
(wrongSummaryNotification || wrongSummaryRightClickMenu));
|
(wrongSummaryNotificationStack || wrongSummaryRightClickMenu));
|
||||||
|
|
||||||
if (this._summaryBoxPointerState == State.HIDDEN) {
|
if (this._summaryBoxPointerState == State.HIDDEN) {
|
||||||
if (haveClickedSummaryItem && !summarySourceIsMainNotificationSource && canShowSummaryBoxPointer)
|
if (haveClickedSummaryItem && !summarySourceIsMainNotificationSource && canShowSummaryBoxPointer && !requestedNotificationStackIsEmpty)
|
||||||
this._showSummaryBoxPointer();
|
this._showSummaryBoxPointer();
|
||||||
} else if (this._summaryBoxPointerState == State.SHOWN) {
|
} else if (this._summaryBoxPointerState == State.SHOWN) {
|
||||||
if (!haveClickedSummaryItem || !canShowSummaryBoxPointer || wrongSummaryBoxPointer)
|
if (!haveClickedSummaryItem || !canShowSummaryBoxPointer || wrongSummaryBoxPointer || mustHideSummary)
|
||||||
this._hideSummaryBoxPointer();
|
this._hideSummaryBoxPointer();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1841,38 +2029,33 @@ MessageTray.prototype = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
_hideSummaryCompleted: function() {
|
_hideSummaryCompleted: function() {
|
||||||
this._expandedSummaryItem = null;
|
this._setExpandedSummaryItem(null);
|
||||||
this._expandedSummaryItemTitleWidth = this._summaryItemTitleWidth;
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_showSummaryBoxPointer: function() {
|
_showSummaryBoxPointer: function() {
|
||||||
|
this._summaryBoxPointerItem = this._clickedSummaryItem;
|
||||||
|
this._summaryBoxPointerContentUpdatedId = this._summaryBoxPointerItem.connect('content-updated',
|
||||||
|
Lang.bind(this, this._adjustSummaryBoxPointerPosition));
|
||||||
|
this._summaryBoxPointerDoneDisplayingId = this._summaryBoxPointerItem.connect('done-displaying-content',
|
||||||
|
Lang.bind(this, this._escapeTray));
|
||||||
if (this._clickedSummaryItemMouseButton == 1) {
|
if (this._clickedSummaryItemMouseButton == 1) {
|
||||||
let clickedSummaryItemNotification = this._clickedSummaryItem.source.notification;
|
this._notificationQueue = this._notificationQueue.filter( Lang.bind(this,
|
||||||
let index = this._notificationQueue.indexOf(clickedSummaryItemNotification);
|
function(notification) {
|
||||||
if (index != -1)
|
return this._summaryBoxPointerItem.source != notification.source;
|
||||||
this._notificationQueue.splice(index, 1);
|
}));
|
||||||
|
this._summaryBoxPointerItem.prepareNotificationStackForShowing();
|
||||||
this._summaryNotification = clickedSummaryItemNotification;
|
this._summaryBoxPointer.bin.child = this._summaryBoxPointerItem.notificationStackView;
|
||||||
this._summaryNotificationClickedId = this._summaryNotification.connect('done-displaying',
|
this._summaryBoxPointerItem.scrollTo(St.Side.BOTTOM);
|
||||||
Lang.bind(this, this._escapeTray));
|
|
||||||
this._summaryBoxPointer.bin.child = this._summaryNotification.actor;
|
|
||||||
if (!this._summaryNotificationExpandedId)
|
|
||||||
this._summaryNotificationExpandedId = this._summaryNotification.connect('expanded',
|
|
||||||
Lang.bind(this, this._onSummaryBoxPointerExpanded));
|
|
||||||
this._summaryNotification.expand(false);
|
|
||||||
} else if (this._clickedSummaryItemMouseButton == 3) {
|
} else if (this._clickedSummaryItemMouseButton == 3) {
|
||||||
this._summaryRightClickMenuClickedId = this._clickedSummaryItem.connect('right-click-menu-done-displaying',
|
|
||||||
Lang.bind(this, this._escapeTray));
|
|
||||||
this._summaryBoxPointer.bin.child = this._clickedSummaryItem.rightClickMenu;
|
this._summaryBoxPointer.bin.child = this._clickedSummaryItem.rightClickMenu;
|
||||||
}
|
}
|
||||||
|
|
||||||
this._focusGrabber.grabFocus(this._summaryBoxPointer.bin.child);
|
this._focusGrabber.grabFocus(this._summaryBoxPointer.bin.child);
|
||||||
|
|
||||||
|
|
||||||
this._clickedSummaryItemAllocationChangedId =
|
this._clickedSummaryItemAllocationChangedId =
|
||||||
this._clickedSummaryItem.actor.connect('allocation-changed',
|
this._clickedSummaryItem.actor.connect('allocation-changed',
|
||||||
Lang.bind(this, this._adjustSummaryBoxPointerPosition));
|
Lang.bind(this, this._adjustSummaryBoxPointerPosition));
|
||||||
// _clickedSummaryItem.actor can change absolute postiion without changing allocation
|
// _clickedSummaryItem.actor can change absolute position without changing allocation
|
||||||
this._summaryMotionId = this._summary.connect('allocation-changed',
|
this._summaryMotionId = this._summary.connect('allocation-changed',
|
||||||
Lang.bind(this, this._adjustSummaryBoxPointerPosition));
|
Lang.bind(this, this._adjustSummaryBoxPointerPosition));
|
||||||
|
|
||||||
@ -1881,6 +2064,7 @@ MessageTray.prototype = {
|
|||||||
this._adjustSummaryBoxPointerPosition();
|
this._adjustSummaryBoxPointerPosition();
|
||||||
|
|
||||||
this._summaryBoxPointerState = State.SHOWING;
|
this._summaryBoxPointerState = State.SHOWING;
|
||||||
|
this._clickedSummaryItem.actor.add_style_pseudo_class('selected');
|
||||||
this._summaryBoxPointer.show(true, Lang.bind(this, function() {
|
this._summaryBoxPointer.show(true, Lang.bind(this, function() {
|
||||||
this._summaryBoxPointerState = State.SHOWN;
|
this._summaryBoxPointerState = State.SHOWN;
|
||||||
}));
|
}));
|
||||||
@ -1902,24 +2086,13 @@ MessageTray.prototype = {
|
|||||||
this._summaryMotionId = 0;
|
this._summaryMotionId = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this._summaryRightClickMenuClickedId) {
|
if (this._clickedSummaryItem)
|
||||||
this._clickedSummaryItem.disconnect(this._summaryRightClickMenuClickedId);
|
this._clickedSummaryItem.actor.remove_style_pseudo_class('selected');
|
||||||
this._summaryRightClickMenuClickedId = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
this._clickedSummaryItem = null;
|
this._clickedSummaryItem = null;
|
||||||
this._clickedSummaryItemMouseButton = -1;
|
this._clickedSummaryItemMouseButton = -1;
|
||||||
},
|
},
|
||||||
|
|
||||||
_onSummaryBoxPointerExpanded: function() {
|
|
||||||
this._adjustSummaryBoxPointerPosition();
|
|
||||||
},
|
|
||||||
|
|
||||||
_hideSummaryBoxPointer: function() {
|
_hideSummaryBoxPointer: function() {
|
||||||
if (this._summaryNotificationExpandedId) {
|
|
||||||
this._summaryNotification.disconnect(this._summaryNotificationExpandedId);
|
|
||||||
this._summaryNotificationExpandedId = 0;
|
|
||||||
}
|
|
||||||
// Unset this._clickedSummaryItem if we are no longer showing the summary
|
// Unset this._clickedSummaryItem if we are no longer showing the summary
|
||||||
if (this._summaryState != State.SHOWN)
|
if (this._summaryState != State.SHOWN)
|
||||||
this._unsetClickedSummaryItem();
|
this._unsetClickedSummaryItem();
|
||||||
@ -1930,21 +2103,32 @@ MessageTray.prototype = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
_hideSummaryBoxPointerCompleted: function() {
|
_hideSummaryBoxPointerCompleted: function() {
|
||||||
|
let doneShowingNotificationStack = (this._summaryBoxPointer.bin.child == this._summaryBoxPointerItem.notificationStackView);
|
||||||
|
|
||||||
this._summaryBoxPointerState = State.HIDDEN;
|
this._summaryBoxPointerState = State.HIDDEN;
|
||||||
this._summaryBoxPointer.bin.child = null;
|
this._summaryBoxPointer.bin.child = null;
|
||||||
if (this._summaryNotification != null) {
|
this._summaryBoxPointerItem.disconnect(this._summaryBoxPointerContentUpdatedId);
|
||||||
this._summaryNotification.collapseCompleted();
|
this._summaryBoxPointerContentUpdatedId = 0;
|
||||||
this._summaryNotification.disconnect(this._summaryNotificationClickedId);
|
this._summaryBoxPointerItem.disconnect(this._summaryBoxPointerDoneDisplayingId);
|
||||||
this._summaryNotificationClickedId = 0;
|
this._summaryBoxPointerDoneDisplayingId = 0;
|
||||||
let summaryNotification = this._summaryNotification;
|
|
||||||
this._summaryNotification = null;
|
let sourceNotificationStackDoneShowing = null;
|
||||||
if (summaryNotification.isTransient && !this._reNotifyWithSummaryNotificationAfterHide)
|
if (doneShowingNotificationStack) {
|
||||||
summaryNotification.destroy(NotificationDestroyedReason.EXPIRED);
|
this._summaryBoxPointerItem.doneShowingNotificationStack();
|
||||||
if (this._reNotifyWithSummaryNotificationAfterHide) {
|
sourceNotificationStackDoneShowing = this._summaryBoxPointerItem.source;
|
||||||
this._onNotify(summaryNotification.source, summaryNotification);
|
}
|
||||||
this._reNotifyWithSummaryNotificationAfterHide = false;
|
|
||||||
|
this._summaryBoxPointerItem = null;
|
||||||
|
|
||||||
|
if (sourceNotificationStackDoneShowing) {
|
||||||
|
if (sourceNotificationStackDoneShowing.isTransient && !this._reNotifyAfterHideNotification)
|
||||||
|
sourceNotificationStackDoneShowing.destroy(NotificationDestroyedReason.EXPIRED);
|
||||||
|
if (this._reNotifyAfterHideNotification) {
|
||||||
|
this._onNotify(this._reNotifyAfterHideNotification.source, this._reNotifyAfterHideNotification);
|
||||||
|
this._reNotifyAfterHideNotification = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this._clickedSummaryItem)
|
if (this._clickedSummaryItem)
|
||||||
this._updateState();
|
this._updateState();
|
||||||
}
|
}
|
||||||
|
@ -39,13 +39,20 @@ ModalDialog.prototype = {
|
|||||||
params = Params.parse(params, { styleClass: null });
|
params = Params.parse(params, { styleClass: null });
|
||||||
|
|
||||||
this.state = State.CLOSED;
|
this.state = State.CLOSED;
|
||||||
|
this._hasModal = false;
|
||||||
|
|
||||||
this._group = new St.Group({ visible: false,
|
this._group = new St.Group({ visible: false,
|
||||||
x: 0,
|
x: 0,
|
||||||
y: 0 });
|
y: 0 });
|
||||||
Main.uiGroup.add_actor(this._group);
|
Main.uiGroup.add_actor(this._group);
|
||||||
|
|
||||||
|
let constraint = new Clutter.BindConstraint({ source: global.stage,
|
||||||
|
coordinate: Clutter.BindCoordinate.POSITION | Clutter.BindCoordinate.SIZE });
|
||||||
|
this._group.add_constraint(constraint);
|
||||||
|
|
||||||
global.focus_manager.add_group(this._group);
|
global.focus_manager.add_group(this._group);
|
||||||
this._initialKeyFocus = this._group;
|
this._initialKeyFocus = this._group;
|
||||||
|
this._savedKeyFocus = null;
|
||||||
|
|
||||||
this._group.connect('destroy', Lang.bind(this, this._onGroupDestroy));
|
this._group.connect('destroy', Lang.bind(this, this._onGroupDestroy));
|
||||||
|
|
||||||
@ -60,12 +67,18 @@ ModalDialog.prototype = {
|
|||||||
this._group.add_actor(this._backgroundBin);
|
this._group.add_actor(this._backgroundBin);
|
||||||
this._lightbox.highlight(this._backgroundBin);
|
this._lightbox.highlight(this._backgroundBin);
|
||||||
|
|
||||||
|
this._backgroundStack = new Shell.Stack();
|
||||||
|
this._backgroundBin.child = this._backgroundStack;
|
||||||
|
|
||||||
|
this._eventBlocker = new Clutter.Group({ reactive: true });
|
||||||
|
this._backgroundStack.add_actor(this._eventBlocker);
|
||||||
|
|
||||||
this._dialogLayout = new St.BoxLayout({ style_class: 'modal-dialog',
|
this._dialogLayout = new St.BoxLayout({ style_class: 'modal-dialog',
|
||||||
vertical: true });
|
vertical: true });
|
||||||
if (params.styleClass != null) {
|
if (params.styleClass != null) {
|
||||||
this._dialogLayout.add_style_class_name(params.styleClass);
|
this._dialogLayout.add_style_class_name(params.styleClass);
|
||||||
}
|
}
|
||||||
this._backgroundBin.child = this._dialogLayout;
|
this._backgroundStack.add_actor(this._dialogLayout);
|
||||||
|
|
||||||
this.contentLayout = new St.BoxLayout({ vertical: true });
|
this.contentLayout = new St.BoxLayout({ vertical: true });
|
||||||
this._dialogLayout.add(this.contentLayout,
|
this._dialogLayout.add(this.contentLayout,
|
||||||
@ -74,7 +87,8 @@ ModalDialog.prototype = {
|
|||||||
x_align: St.Align.MIDDLE,
|
x_align: St.Align.MIDDLE,
|
||||||
y_align: St.Align.START });
|
y_align: St.Align.START });
|
||||||
|
|
||||||
this._buttonLayout = new St.BoxLayout({ opacity: 220,
|
this._buttonLayout = new St.BoxLayout({ style_class: 'modal-dialog-button-box',
|
||||||
|
opacity: 220,
|
||||||
vertical: false });
|
vertical: false });
|
||||||
this._dialogLayout.add(this._buttonLayout,
|
this._dialogLayout.add(this._buttonLayout,
|
||||||
{ expand: true,
|
{ expand: true,
|
||||||
@ -154,22 +168,23 @@ ModalDialog.prototype = {
|
|||||||
transition: 'easeOutQuad',
|
transition: 'easeOutQuad',
|
||||||
onComplete: Lang.bind(this,
|
onComplete: Lang.bind(this,
|
||||||
function() {
|
function() {
|
||||||
this._initialKeyFocus.grab_key_focus();
|
|
||||||
this.state = State.OPENED;
|
this.state = State.OPENED;
|
||||||
this.emit('opened');
|
this.emit('opened');
|
||||||
}),
|
})
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
setInitialKeyFocus: function(actor) {
|
||||||
|
this._initialKeyFocus = actor;
|
||||||
|
},
|
||||||
|
|
||||||
open: function(timestamp) {
|
open: function(timestamp) {
|
||||||
if (this.state == State.OPENED || this.state == State.OPENING)
|
if (this.state == State.OPENED || this.state == State.OPENING)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
if (!Main.pushModal(this._group, timestamp))
|
if (!this.pushModal(timestamp))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
global.stage.set_key_focus(this._group);
|
|
||||||
|
|
||||||
this._fadeOpen();
|
this._fadeOpen();
|
||||||
return true;
|
return true;
|
||||||
},
|
},
|
||||||
@ -178,14 +193,8 @@ ModalDialog.prototype = {
|
|||||||
if (this.state == State.CLOSED || this.state == State.CLOSING)
|
if (this.state == State.CLOSED || this.state == State.CLOSING)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
let needsPopModal;
|
|
||||||
|
|
||||||
if (this.state == State.OPENED || this.state == State.OPENING)
|
|
||||||
needsPopModal = true;
|
|
||||||
else
|
|
||||||
needsPopModal = false;
|
|
||||||
|
|
||||||
this.state = State.CLOSING;
|
this.state = State.CLOSING;
|
||||||
|
this.popModal(timestamp);
|
||||||
|
|
||||||
Tweener.addTween(this._group,
|
Tweener.addTween(this._group,
|
||||||
{ opacity: 0,
|
{ opacity: 0,
|
||||||
@ -195,13 +204,46 @@ ModalDialog.prototype = {
|
|||||||
function() {
|
function() {
|
||||||
this.state = State.CLOSED;
|
this.state = State.CLOSED;
|
||||||
this._group.hide();
|
this._group.hide();
|
||||||
|
|
||||||
if (needsPopModal)
|
|
||||||
Main.popModal(this._group, timestamp);
|
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// Drop modal status without closing the dialog; this makes the
|
||||||
|
// dialog insensitive as well, so it needs to be followed shortly
|
||||||
|
// by either a close() or a pushModal()
|
||||||
|
popModal: function(timestamp) {
|
||||||
|
if (!this._hasModal)
|
||||||
|
return;
|
||||||
|
|
||||||
|
let focus = global.stage.key_focus;
|
||||||
|
if (focus && this._group.contains(focus))
|
||||||
|
this._savedKeyFocus = focus;
|
||||||
|
else
|
||||||
|
this._savedKeyFocus = null;
|
||||||
|
Main.popModal(this._group, timestamp);
|
||||||
|
global.gdk_screen.get_display().sync();
|
||||||
|
this._hasModal = false;
|
||||||
|
|
||||||
|
this._eventBlocker.raise_top();
|
||||||
|
},
|
||||||
|
|
||||||
|
pushModal: function (timestamp) {
|
||||||
|
if (this._hasModal)
|
||||||
|
return true;
|
||||||
|
if (!Main.pushModal(this._group, timestamp))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
this._hasModal = true;
|
||||||
|
if (this._savedKeyFocus) {
|
||||||
|
this._savedKeyFocus.grab_key_focus();
|
||||||
|
this._savedKeyFocus = null;
|
||||||
|
} else
|
||||||
|
this._initialKeyFocus.grab_key_focus();
|
||||||
|
|
||||||
|
this._eventBlocker.lower_bottom();
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
|
||||||
// This method is like close, but fades the dialog out much slower,
|
// This method is like close, but fades the dialog out much slower,
|
||||||
// and leaves the lightbox in place. Once in the faded out state,
|
// and leaves the lightbox in place. Once in the faded out state,
|
||||||
// the dialog can be brought back by an open call, or the lightbox
|
// the dialog can be brought back by an open call, or the lightbox
|
||||||
@ -220,6 +262,7 @@ ModalDialog.prototype = {
|
|||||||
if (this.state == State.FADED_OUT)
|
if (this.state == State.FADED_OUT)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
this.popModal(timestamp);
|
||||||
Tweener.addTween(this._dialogLayout,
|
Tweener.addTween(this._dialogLayout,
|
||||||
{ opacity: 0,
|
{ opacity: 0,
|
||||||
time: FADE_OUT_DIALOG_TIME,
|
time: FADE_OUT_DIALOG_TIME,
|
||||||
@ -227,7 +270,6 @@ ModalDialog.prototype = {
|
|||||||
onComplete: Lang.bind(this,
|
onComplete: Lang.bind(this,
|
||||||
function() {
|
function() {
|
||||||
this.state = State.FADED_OUT;
|
this.state = State.FADED_OUT;
|
||||||
Main.popModal(this._group, timestamp);
|
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
|
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
|
||||||
|
|
||||||
|
const Clutter = imports.gi.Clutter;
|
||||||
const DBus = imports.dbus;
|
const DBus = imports.dbus;
|
||||||
const GLib = imports.gi.GLib;
|
const GLib = imports.gi.GLib;
|
||||||
const Lang = imports.lang;
|
const Lang = imports.lang;
|
||||||
@ -345,7 +346,7 @@ NotificationDaemon.prototype = {
|
|||||||
notification.setTransient(hints['transient'] == true);
|
notification.setTransient(hints['transient'] == true);
|
||||||
|
|
||||||
let sourceIconActor = source.useNotificationIcon ? this._iconForNotificationData(icon, hints, source.ICON_SIZE) : null;
|
let sourceIconActor = source.useNotificationIcon ? this._iconForNotificationData(icon, hints, source.ICON_SIZE) : null;
|
||||||
source.notify(notification, sourceIconActor);
|
source.processNotification(notification, sourceIconActor);
|
||||||
},
|
},
|
||||||
|
|
||||||
CloseNotification: function(id) {
|
CloseNotification: function(id) {
|
||||||
@ -389,8 +390,7 @@ NotificationDaemon.prototype = {
|
|||||||
for (let id in this._sources) {
|
for (let id in this._sources) {
|
||||||
let source = this._sources[id];
|
let source = this._sources[id];
|
||||||
if (source.app == tracker.focus_app) {
|
if (source.app == tracker.focus_app) {
|
||||||
if (source.notification && !source.notification.resident)
|
source.destroyNonResidentNotifications();
|
||||||
source.notification.destroy();
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -441,15 +441,43 @@ Source.prototype = {
|
|||||||
this.title = this.app.get_name();
|
this.title = this.app.get_name();
|
||||||
else
|
else
|
||||||
this.useNotificationIcon = true;
|
this.useNotificationIcon = true;
|
||||||
this._isTrayIcon = false;
|
this._trayIcon = null;
|
||||||
},
|
},
|
||||||
|
|
||||||
notify: function(notification, icon) {
|
processNotification: function(notification, icon) {
|
||||||
if (!this.app)
|
if (!this.app)
|
||||||
this._setApp();
|
this._setApp();
|
||||||
if (!this.app && icon)
|
if (!this.app && icon)
|
||||||
this._setSummaryIcon(icon);
|
this._setSummaryIcon(icon);
|
||||||
MessageTray.Source.prototype.notify.call(this, notification);
|
|
||||||
|
let tracker = Shell.WindowTracker.get_default();
|
||||||
|
if (notification.resident && this.app && tracker.focus_app == this.app)
|
||||||
|
this.pushNotification(notification);
|
||||||
|
else
|
||||||
|
this.notify(notification);
|
||||||
|
},
|
||||||
|
|
||||||
|
handleSummaryClick: function() {
|
||||||
|
if (!this._trayIcon)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
let event = Clutter.get_current_event();
|
||||||
|
if (event.type() != Clutter.EventType.BUTTON_RELEASE)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (Main.overview.visible) {
|
||||||
|
// We can't just connect to Main.overview's 'hidden' signal,
|
||||||
|
// because it's emitted *before* it calls popModal()...
|
||||||
|
let id = global.connect('notify::stage-input-mode', Lang.bind(this,
|
||||||
|
function () {
|
||||||
|
global.disconnect(id);
|
||||||
|
this._trayIcon.click(event);
|
||||||
|
}));
|
||||||
|
Main.overview.hide();
|
||||||
|
} else {
|
||||||
|
this._trayIcon.click(event);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
},
|
},
|
||||||
|
|
||||||
_setApp: function() {
|
_setApp: function() {
|
||||||
@ -466,7 +494,7 @@ Source.prototype = {
|
|||||||
|
|
||||||
// Only override the icon if we were previously using
|
// Only override the icon if we were previously using
|
||||||
// notification-based icons (ie, not a trayicon) or if it was unset before
|
// notification-based icons (ie, not a trayicon) or if it was unset before
|
||||||
if (!this._isTrayIcon) {
|
if (!this._trayIcon) {
|
||||||
this.useNotificationIcon = false;
|
this.useNotificationIcon = false;
|
||||||
this._setSummaryIcon(this.app.create_icon_texture (this.ICON_SIZE));
|
this._setSummaryIcon(this.app.create_icon_texture (this.ICON_SIZE));
|
||||||
}
|
}
|
||||||
@ -475,25 +503,29 @@ Source.prototype = {
|
|||||||
setTrayIcon: function(icon) {
|
setTrayIcon: function(icon) {
|
||||||
this._setSummaryIcon(icon);
|
this._setSummaryIcon(icon);
|
||||||
this.useNotificationIcon = false;
|
this.useNotificationIcon = false;
|
||||||
this._isTrayIcon = true;
|
this._trayIcon = icon;
|
||||||
},
|
},
|
||||||
|
|
||||||
open: function(notification) {
|
open: function(notification) {
|
||||||
|
this.destroyNonResidentNotifications();
|
||||||
this.openApp();
|
this.openApp();
|
||||||
},
|
},
|
||||||
|
|
||||||
_notificationRemoved: function() {
|
_lastNotificationRemoved: function() {
|
||||||
if (!this._isTrayIcon)
|
if (!this._trayIcon)
|
||||||
this.destroy();
|
this.destroy();
|
||||||
},
|
},
|
||||||
|
|
||||||
_appStateChanged: function() {
|
_appStateChanged: function() {
|
||||||
// Destroy notification sources when their apps exit.
|
// Destroy notification sources when their apps exit.
|
||||||
// The app exiting would normally result in a tray icon being removed,
|
// The app exiting would normally result in a tray icon being removed,
|
||||||
// so it should be ok to destroy the source associated with a tray icon
|
// so the associated source would be destroyed through the code path
|
||||||
// here too, however we just let that happen through the code path
|
// that handles the tray icon being removed. We should not destroy
|
||||||
// associated with the tray icon being removed.
|
// the source associated with a tray icon when the application state
|
||||||
if (!this._isTrayIcon && this.app.get_state() == Shell.AppState.STOPPED)
|
// is Shell.AppState.STOPPED because running applications that have
|
||||||
|
// no open windows would also have that state. This is often the case
|
||||||
|
// for applications that use tray icons.
|
||||||
|
if (!this._trayIcon && this.app.get_state() == Shell.AppState.STOPPED)
|
||||||
this.destroy();
|
this.destroy();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -23,6 +23,7 @@ const PlaceDisplay = imports.ui.placeDisplay;
|
|||||||
const Tweener = imports.ui.tweener;
|
const Tweener = imports.ui.tweener;
|
||||||
const ViewSelector = imports.ui.viewSelector;
|
const ViewSelector = imports.ui.viewSelector;
|
||||||
const WorkspacesView = imports.ui.workspacesView;
|
const WorkspacesView = imports.ui.workspacesView;
|
||||||
|
const WorkspaceThumbnail = imports.ui.workspaceThumbnail;
|
||||||
const ZeitgeistSearch = imports.ui.zeitgeistSearch;
|
const ZeitgeistSearch = imports.ui.zeitgeistSearch;
|
||||||
|
|
||||||
// Time for initial animation going into Overview mode
|
// Time for initial animation going into Overview mode
|
||||||
@ -74,11 +75,13 @@ ShellInfo.prototype = {
|
|||||||
Main.messageTray.add(this._source);
|
Main.messageTray.add(this._source);
|
||||||
}
|
}
|
||||||
|
|
||||||
let notification = this._source.notification;
|
let notification = null;
|
||||||
if (notification == null)
|
if (this._source.notifications.length == 0) {
|
||||||
notification = new MessageTray.Notification(this._source, text, null);
|
notification = new MessageTray.Notification(this._source, text, null);
|
||||||
else
|
} else {
|
||||||
|
notification = this._source.notifications[0];
|
||||||
notification.update(text, null, { clear: true });
|
notification.update(text, null, { clear: true });
|
||||||
|
}
|
||||||
|
|
||||||
notification.setTransient(true);
|
notification.setTransient(true);
|
||||||
|
|
||||||
@ -247,7 +250,8 @@ Overview.prototype = {
|
|||||||
_onDragMotion: function(dragEvent) {
|
_onDragMotion: function(dragEvent) {
|
||||||
let targetIsWindow = dragEvent.targetActor &&
|
let targetIsWindow = dragEvent.targetActor &&
|
||||||
dragEvent.targetActor._delegate &&
|
dragEvent.targetActor._delegate &&
|
||||||
dragEvent.targetActor._delegate.metaWindow;
|
dragEvent.targetActor._delegate.metaWindow &&
|
||||||
|
!(dragEvent.targetActor._delegate instanceof WorkspaceThumbnail.WindowClone);
|
||||||
|
|
||||||
this._windowSwitchTimestamp = global.get_current_time();
|
this._windowSwitchTimestamp = global.get_current_time();
|
||||||
|
|
||||||
@ -443,7 +447,7 @@ Overview.prototype = {
|
|||||||
let primary = global.get_primary_monitor();
|
let primary = global.get_primary_monitor();
|
||||||
let rtl = (St.Widget.get_default_direction () == St.TextDirection.RTL);
|
let rtl = (St.Widget.get_default_direction () == St.TextDirection.RTL);
|
||||||
|
|
||||||
let contentY = Panel.PANEL_HEIGHT;
|
let contentY = Main.panel.actor.height;
|
||||||
let contentHeight = primary.height - contentY - Main.messageTray.actor.height;
|
let contentHeight = primary.height - contentY - Main.messageTray.actor.height;
|
||||||
|
|
||||||
this._group.set_position(primary.x, primary.y);
|
this._group.set_position(primary.x, primary.y);
|
||||||
@ -478,6 +482,10 @@ Overview.prototype = {
|
|||||||
this.emit('item-drag-begin');
|
this.emit('item-drag-begin');
|
||||||
},
|
},
|
||||||
|
|
||||||
|
cancelledItemDrag: function(source) {
|
||||||
|
this.emit('item-drag-cancelled');
|
||||||
|
},
|
||||||
|
|
||||||
endItemDrag: function(source) {
|
endItemDrag: function(source) {
|
||||||
this.emit('item-drag-end');
|
this.emit('item-drag-end');
|
||||||
},
|
},
|
||||||
@ -690,6 +698,7 @@ Overview.prototype = {
|
|||||||
this._animateNotVisible();
|
this._animateNotVisible();
|
||||||
|
|
||||||
this._syncInputMode();
|
this._syncInputMode();
|
||||||
|
global.sync_pointer();
|
||||||
},
|
},
|
||||||
|
|
||||||
_hideDone: function() {
|
_hideDone: function() {
|
||||||
|
101
js/ui/panel.js
101
js/ui/panel.js
@ -22,8 +22,6 @@ const DateMenu = imports.ui.dateMenu;
|
|||||||
const Main = imports.ui.main;
|
const Main = imports.ui.main;
|
||||||
const Tweener = imports.ui.tweener;
|
const Tweener = imports.ui.tweener;
|
||||||
|
|
||||||
const PANEL_HEIGHT = 26;
|
|
||||||
|
|
||||||
const PANEL_ICON_SIZE = 24;
|
const PANEL_ICON_SIZE = 24;
|
||||||
|
|
||||||
const STARTUP_ANIMATION_TIME = 0.2;
|
const STARTUP_ANIMATION_TIME = 0.2;
|
||||||
@ -33,8 +31,7 @@ const HOT_CORNER_ACTIVATION_TIMEOUT = 0.5;
|
|||||||
const BUTTON_DND_ACTIVATION_TIMEOUT = 250;
|
const BUTTON_DND_ACTIVATION_TIMEOUT = 250;
|
||||||
|
|
||||||
const ANIMATED_ICON_UPDATE_TIMEOUT = 100;
|
const ANIMATED_ICON_UPDATE_TIMEOUT = 100;
|
||||||
const SPINNER_UPDATE_TIMEOUT = 130;
|
const SPINNER_ANIMATION_TIME = 0.2;
|
||||||
const SPINNER_SPEED = 0.02;
|
|
||||||
|
|
||||||
const STANDARD_TRAY_ICON_ORDER = ['a11y', 'display', 'keyboard', 'volume', 'bluetooth', 'network', 'battery'];
|
const STANDARD_TRAY_ICON_ORDER = ['a11y', 'display', 'keyboard', 'volume', 'bluetooth', 'network', 'battery'];
|
||||||
const STANDARD_TRAY_ICON_SHELL_IMPLEMENTATION = {
|
const STANDARD_TRAY_ICON_SHELL_IMPLEMENTATION = {
|
||||||
@ -47,6 +44,12 @@ const STANDARD_TRAY_ICON_SHELL_IMPLEMENTATION = {
|
|||||||
if (Config.HAVE_BLUETOOTH)
|
if (Config.HAVE_BLUETOOTH)
|
||||||
STANDARD_TRAY_ICON_SHELL_IMPLEMENTATION['bluetooth'] = imports.ui.status.bluetooth.Indicator;
|
STANDARD_TRAY_ICON_SHELL_IMPLEMENTATION['bluetooth'] = imports.ui.status.bluetooth.Indicator;
|
||||||
|
|
||||||
|
try {
|
||||||
|
STANDARD_TRAY_ICON_SHELL_IMPLEMENTATION['network'] = imports.ui.status.network.NMApplet;
|
||||||
|
} catch(e) {
|
||||||
|
log('NMApplet is not supported. It is possible that your NetworkManager version is too old');
|
||||||
|
}
|
||||||
|
|
||||||
// To make sure the panel corners blend nicely with the panel,
|
// To make sure the panel corners blend nicely with the panel,
|
||||||
// we draw background and borders the same way, e.g. drawing
|
// we draw background and borders the same way, e.g. drawing
|
||||||
// them as filled shapes from the outside inwards instead of
|
// them as filled shapes from the outside inwards instead of
|
||||||
@ -275,20 +278,13 @@ AppMenuButton.prototype = {
|
|||||||
this.hide();
|
this.hide();
|
||||||
}));
|
}));
|
||||||
|
|
||||||
this._updateId = 0;
|
this._stop = true;
|
||||||
this._animationStep = 0;
|
|
||||||
this._clipWidth = PANEL_ICON_SIZE;
|
|
||||||
this._direction = SPINNER_SPEED;
|
|
||||||
|
|
||||||
this._spinner = new AnimatedIcon('process-working.svg',
|
this._spinner = new AnimatedIcon('process-working.svg',
|
||||||
PANEL_ICON_SIZE);
|
PANEL_ICON_SIZE);
|
||||||
this._container.add_actor(this._spinner.actor);
|
this._container.add_actor(this._spinner.actor);
|
||||||
this._spinner.actor.lower_bottom();
|
this._spinner.actor.lower_bottom();
|
||||||
|
|
||||||
this._shadow = new St.Bin({ style_class: 'label-real-shadow' });
|
|
||||||
this._shadow.hide();
|
|
||||||
this._container.add_actor(this._shadow);
|
|
||||||
|
|
||||||
let tracker = Shell.WindowTracker.get_default();
|
let tracker = Shell.WindowTracker.get_default();
|
||||||
tracker.connect('notify::focus-app', Lang.bind(this, this._sync));
|
tracker.connect('notify::focus-app', Lang.bind(this, this._sync));
|
||||||
tracker.connect('app-state-changed', Lang.bind(this, this._onAppStateChanged));
|
tracker.connect('app-state-changed', Lang.bind(this, this._onAppStateChanged));
|
||||||
@ -338,14 +334,14 @@ AppMenuButton.prototype = {
|
|||||||
this._iconBox.remove_clip();
|
this._iconBox.remove_clip();
|
||||||
},
|
},
|
||||||
|
|
||||||
_stopAnimation: function(animate) {
|
stopAnimation: function() {
|
||||||
this._label.actor.remove_clip();
|
if (this._stop)
|
||||||
if (this._updateId) {
|
return;
|
||||||
this._shadow.hide();
|
|
||||||
if (animate) {
|
this._stop = true;
|
||||||
Tweener.addTween(this._spinner.actor,
|
Tweener.addTween(this._spinner.actor,
|
||||||
{ opacity: 0,
|
{ opacity: 0,
|
||||||
time: 0.2,
|
time: SPINNER_ANIMATION_TIME,
|
||||||
transition: "easeOutQuad",
|
transition: "easeOutQuad",
|
||||||
onCompleteScope: this,
|
onCompleteScope: this,
|
||||||
onComplete: function() {
|
onComplete: function() {
|
||||||
@ -353,47 +349,11 @@ AppMenuButton.prototype = {
|
|||||||
this._spinner.actor.hide();
|
this._spinner.actor.hide();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
|
||||||
Mainloop.source_remove(this._updateId);
|
|
||||||
this._updateId = 0;
|
|
||||||
}
|
|
||||||
if (!animate)
|
|
||||||
this._spinner.actor.hide();
|
|
||||||
},
|
|
||||||
|
|
||||||
stopAnimation: function() {
|
|
||||||
this._direction = SPINNER_SPEED * 3;
|
|
||||||
this._stop = true;
|
|
||||||
},
|
|
||||||
|
|
||||||
_update: function() {
|
|
||||||
this._animationStep += this._direction;
|
|
||||||
if (this._animationStep > 1 && this._stop) {
|
|
||||||
this._animationStep = 1;
|
|
||||||
this._stopAnimation(true);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (this._animationStep > 1)
|
|
||||||
this._animationStep = 1;
|
|
||||||
this._clipWidth = this._label.actor.width - (this._label.actor.width - PANEL_ICON_SIZE) * (1 - this._animationStep);
|
|
||||||
if (this.actor.get_direction() == St.TextDirection.LTR) {
|
|
||||||
this._label.actor.set_clip(0, 0, this._clipWidth + this._shadow.width, this.actor.height);
|
|
||||||
} else {
|
|
||||||
this._label.actor.set_clip(this._label.actor.width - this._clipWidth, 0, this._clipWidth, this.actor.height);
|
|
||||||
}
|
|
||||||
this._container.queue_relayout();
|
|
||||||
return true;
|
|
||||||
},
|
},
|
||||||
|
|
||||||
startAnimation: function() {
|
startAnimation: function() {
|
||||||
this._direction = SPINNER_SPEED;
|
|
||||||
this._stopAnimation(false);
|
|
||||||
this._animationStep = 0;
|
|
||||||
this._update();
|
|
||||||
this._stop = false;
|
this._stop = false;
|
||||||
this._updateId = Mainloop.timeout_add(SPINNER_UPDATE_TIMEOUT, Lang.bind(this, this._update));
|
|
||||||
this._spinner.actor.show();
|
this._spinner.actor.show();
|
||||||
this._shadow.show();
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_getContentPreferredWidth: function(actor, forHeight, alloc) {
|
_getContentPreferredWidth: function(actor, forHeight, alloc) {
|
||||||
@ -455,18 +415,13 @@ AppMenuButton.prototype = {
|
|||||||
this._label.actor.allocate(childBox, flags);
|
this._label.actor.allocate(childBox, flags);
|
||||||
|
|
||||||
if (direction == St.TextDirection.LTR) {
|
if (direction == St.TextDirection.LTR) {
|
||||||
childBox.x1 = Math.floor(iconWidth / 2) + this._clipWidth + this._shadow.width;
|
childBox.x1 = Math.floor(iconWidth / 2) + this._label.actor.width;
|
||||||
childBox.x2 = childBox.x1 + this._spinner.actor.width;
|
childBox.x2 = childBox.x1 + this._spinner.actor.width;
|
||||||
childBox.y1 = box.y1;
|
childBox.y1 = box.y1;
|
||||||
childBox.y2 = box.y2 - 1;
|
childBox.y2 = box.y2 - 1;
|
||||||
this._spinner.actor.allocate(childBox, flags);
|
this._spinner.actor.allocate(childBox, flags);
|
||||||
childBox.x1 = Math.floor(iconWidth / 2) + this._clipWidth + 2;
|
|
||||||
childBox.x2 = childBox.x1 + this._shadow.width;
|
|
||||||
childBox.y1 = box.y1;
|
|
||||||
childBox.y2 = box.y2 - 1;
|
|
||||||
this._shadow.allocate(childBox, flags);
|
|
||||||
} else {
|
} else {
|
||||||
childBox.x1 = this._label.actor.width - this._clipWidth - this._spinner.actor.width;
|
childBox.x1 = -this._spinner.actor.width;
|
||||||
childBox.x2 = childBox.x1 + this._spinner.actor.width;
|
childBox.x2 = childBox.x1 + this._spinner.actor.width;
|
||||||
childBox.y1 = box.y1;
|
childBox.y1 = box.y1;
|
||||||
childBox.y2 = box.y2 - 1;
|
childBox.y2 = box.y2 - 1;
|
||||||
@ -545,8 +500,8 @@ AppMenuButton.prototype = {
|
|||||||
this.stopAnimation();
|
this.stopAnimation();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
this._stopAnimation();
|
|
||||||
|
|
||||||
|
this._spinner.actor.hide();
|
||||||
if (this._iconBox.child != null)
|
if (this._iconBox.child != null)
|
||||||
this._iconBox.child.destroy();
|
this._iconBox.child.destroy();
|
||||||
this._iconBox.hide();
|
this._iconBox.hide();
|
||||||
@ -751,6 +706,8 @@ HotCorner.prototype = {
|
|||||||
x: x,
|
x: x,
|
||||||
y: y });
|
y: y });
|
||||||
ripple._opacity = startOpacity;
|
ripple._opacity = startOpacity;
|
||||||
|
if (ripple.get_direction() == St.TextDirection.RTL)
|
||||||
|
ripple.set_anchor_point_from_gravity(Clutter.Gravity.NORTH_EAST);
|
||||||
Tweener.addTween(ripple, { _opacity: finalOpacity,
|
Tweener.addTween(ripple, { _opacity: finalOpacity,
|
||||||
scale_x: finalScale,
|
scale_x: finalScale,
|
||||||
scale_y: finalScale,
|
scale_y: finalScale,
|
||||||
@ -834,6 +791,8 @@ Panel.prototype = {
|
|||||||
this.actor.remove_style_class_name('in-overview');
|
this.actor.remove_style_class_name('in-overview');
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
this._leftPointerBarrier = 0;
|
||||||
|
this._rightPointerBarrier = 0;
|
||||||
this._menus = new PopupMenu.PopupMenuManager(this);
|
this._menus = new PopupMenu.PopupMenuManager(this);
|
||||||
|
|
||||||
this._leftBox = new St.BoxLayout({ name: 'panelLeft' });
|
this._leftBox = new St.BoxLayout({ name: 'panelLeft' });
|
||||||
@ -1017,7 +976,7 @@ Panel.prototype = {
|
|||||||
affectsStruts: false,
|
affectsStruts: false,
|
||||||
affectsInputRegion: false });
|
affectsInputRegion: false });
|
||||||
|
|
||||||
Main.ctrlAltTabManager.addGroup(this.actor, _("Panel"), 'start-here',
|
Main.ctrlAltTabManager.addGroup(this.actor, _("Top Bar"), 'start-here',
|
||||||
{ sortGroup: CtrlAltTab.SortGroup.TOP });
|
{ sortGroup: CtrlAltTab.SortGroup.TOP });
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -1094,7 +1053,21 @@ Panel.prototype = {
|
|||||||
let primary = global.get_primary_monitor();
|
let primary = global.get_primary_monitor();
|
||||||
|
|
||||||
this.actor.set_position(primary.x, primary.y);
|
this.actor.set_position(primary.x, primary.y);
|
||||||
this.actor.set_size(primary.width, PANEL_HEIGHT);
|
this.actor.set_size(primary.width, -1);
|
||||||
|
|
||||||
|
if (this._leftPointerBarrier)
|
||||||
|
global.destroy_pointer_barrier(this._leftPointerBarrier);
|
||||||
|
if (this._rightPointerBarrier)
|
||||||
|
global.destroy_pointer_barrier(this._rightPointerBarrier);
|
||||||
|
|
||||||
|
this._leftPointerBarrier =
|
||||||
|
global.create_pointer_barrier(primary.x, primary.y,
|
||||||
|
primary.x, primary.y + this.actor.height,
|
||||||
|
1 /* BarrierPositiveX */);
|
||||||
|
this._rightPointerBarrier =
|
||||||
|
global.create_pointer_barrier(primary.x + primary.width, primary.y,
|
||||||
|
primary.x + primary.width, primary.y + this.actor.height,
|
||||||
|
4 /* BarrierNegativeX */);
|
||||||
|
|
||||||
this._leftCorner.relayout();
|
this._leftCorner.relayout();
|
||||||
this._rightCorner.relayout();
|
this._rightCorner.relayout();
|
||||||
|
@ -71,7 +71,7 @@ AuthenticationDialog.prototype = {
|
|||||||
{ y_align: St.Align.START });
|
{ y_align: St.Align.START });
|
||||||
|
|
||||||
this._subjectLabel = new St.Label({ style_class: 'polkit-dialog-headline',
|
this._subjectLabel = new St.Label({ style_class: 'polkit-dialog-headline',
|
||||||
text: _('Authentication Required') });
|
text: _("Authentication Required") });
|
||||||
|
|
||||||
messageBox.add(this._subjectLabel,
|
messageBox.add(this._subjectLabel,
|
||||||
{ y_fill: false,
|
{ y_fill: false,
|
||||||
@ -105,13 +105,9 @@ AuthenticationDialog.prototype = {
|
|||||||
let userIsRoot = false;
|
let userIsRoot = false;
|
||||||
if (userName == 'root') {
|
if (userName == 'root') {
|
||||||
userIsRoot = true;
|
userIsRoot = true;
|
||||||
userRealName = _('Administrator');
|
userRealName = _("Administrator");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Work around Gdm.UserManager returning an empty string for the real name
|
|
||||||
if (userRealName.length == 0)
|
|
||||||
userRealName = userName;
|
|
||||||
|
|
||||||
if (userIsRoot) {
|
if (userIsRoot) {
|
||||||
let userLabel = new St.Label(({ style_class: 'polkit-dialog-user-root-label',
|
let userLabel = new St.Label(({ style_class: 'polkit-dialog-user-root-label',
|
||||||
text: userRealName }));
|
text: userRealName }));
|
||||||
@ -143,7 +139,7 @@ AuthenticationDialog.prototype = {
|
|||||||
this._passwordLabel = new St.Label(({ style_class: 'polkit-dialog-password-label' }));
|
this._passwordLabel = new St.Label(({ style_class: 'polkit-dialog-password-label' }));
|
||||||
this._passwordBox.add(this._passwordLabel);
|
this._passwordBox.add(this._passwordLabel);
|
||||||
this._passwordEntry = new St.Entry({ style_class: 'polkit-dialog-password-entry',
|
this._passwordEntry = new St.Entry({ style_class: 'polkit-dialog-password-entry',
|
||||||
text: _(''),
|
text: "",
|
||||||
can_focus: true});
|
can_focus: true});
|
||||||
this._passwordEntry.clutter_text.connect('activate', Lang.bind(this, this._onEntryActivate));
|
this._passwordEntry.clutter_text.connect('activate', Lang.bind(this, this._onEntryActivate));
|
||||||
this._passwordBox.add(this._passwordEntry,
|
this._passwordBox.add(this._passwordEntry,
|
||||||
@ -173,11 +169,11 @@ AuthenticationDialog.prototype = {
|
|||||||
messageBox.add(this._nullMessageLabel);
|
messageBox.add(this._nullMessageLabel);
|
||||||
this._nullMessageLabel.show();
|
this._nullMessageLabel.show();
|
||||||
|
|
||||||
this.setButtons([{ label: _('Cancel'),
|
this.setButtons([{ label: _("Cancel"),
|
||||||
action: Lang.bind(this, this.cancel),
|
action: Lang.bind(this, this.cancel),
|
||||||
key: Clutter.Escape
|
key: Clutter.Escape
|
||||||
},
|
},
|
||||||
{ label: _('Authenticate'),
|
{ label: _("Authenticate"),
|
||||||
action: Lang.bind(this, this._onAuthenticateButtonPressed)
|
action: Lang.bind(this, this._onAuthenticateButtonPressed)
|
||||||
}]);
|
}]);
|
||||||
|
|
||||||
@ -261,7 +257,7 @@ AuthenticationDialog.prototype = {
|
|||||||
* show "Sorry, that didn't work. Please try again."
|
* show "Sorry, that didn't work. Please try again."
|
||||||
*/
|
*/
|
||||||
if (!this._errorMessageLabel.visible && !this._wasDismissed) {
|
if (!this._errorMessageLabel.visible && !this._wasDismissed) {
|
||||||
this._errorMessageLabel.set_text(_('Sorry, that didn\'t work. Please try again.'));
|
this._errorMessageLabel.set_text(_("Sorry, that didn\'t work. Please try again."));
|
||||||
this._errorMessageLabel.show();
|
this._errorMessageLabel.show();
|
||||||
this._infoMessageLabel.hide();
|
this._infoMessageLabel.hide();
|
||||||
this._nullMessageLabel.hide();
|
this._nullMessageLabel.hide();
|
||||||
@ -273,7 +269,7 @@ AuthenticationDialog.prototype = {
|
|||||||
_onSessionRequest: function(session, request, echo_on) {
|
_onSessionRequest: function(session, request, echo_on) {
|
||||||
// Cheap localization trick
|
// Cheap localization trick
|
||||||
if (request == 'Password:')
|
if (request == 'Password:')
|
||||||
this._passwordLabel.set_text(_('Password:'));
|
this._passwordLabel.set_text(_("Password:"));
|
||||||
else
|
else
|
||||||
this._passwordLabel.set_text(request);
|
this._passwordLabel.set_text(request);
|
||||||
|
|
||||||
|
@ -173,6 +173,8 @@ PopupBaseMenuItem.prototype = {
|
|||||||
cr.fill();
|
cr.fill();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// This returns column widths in logical order (i.e. from the dot
|
||||||
|
// to the image), not in visual order (left to right)
|
||||||
getColumnWidths: function() {
|
getColumnWidths: function() {
|
||||||
let widths = [];
|
let widths = [];
|
||||||
for (let i = 0, col = 0; i < this._children.length; i++) {
|
for (let i = 0, col = 0; i < this._children.length; i++) {
|
||||||
@ -224,19 +226,36 @@ PopupBaseMenuItem.prototype = {
|
|||||||
|
|
||||||
_allocate: function(actor, box, flags) {
|
_allocate: function(actor, box, flags) {
|
||||||
let height = box.y2 - box.y1;
|
let height = box.y2 - box.y1;
|
||||||
|
let direction = this.actor.get_direction();
|
||||||
|
|
||||||
if (this._dot) {
|
if (this._dot) {
|
||||||
|
// The dot is placed outside box
|
||||||
|
// one quarter of padding from the border of the container
|
||||||
|
// (so 3/4 from the inner border)
|
||||||
|
// (padding is box.x1)
|
||||||
let dotBox = new Clutter.ActorBox();
|
let dotBox = new Clutter.ActorBox();
|
||||||
let dotWidth = Math.round(box.x1 / 2);
|
let dotWidth = Math.round(box.x1 / 2);
|
||||||
|
|
||||||
|
if (direction == St.TextDirection.LTR) {
|
||||||
dotBox.x1 = Math.round(box.x1 / 4);
|
dotBox.x1 = Math.round(box.x1 / 4);
|
||||||
dotBox.x2 = dotBox.x1 + dotWidth;
|
dotBox.x2 = dotBox.x1 + dotWidth;
|
||||||
|
} else {
|
||||||
|
dotBox.x2 = box.x2 + 3 * Math.round(box.x1 / 4);
|
||||||
|
dotBox.x1 = dotBox.x2 - dotWidth;
|
||||||
|
}
|
||||||
dotBox.y1 = Math.round(box.y1 + (height - dotWidth) / 2);
|
dotBox.y1 = Math.round(box.y1 + (height - dotWidth) / 2);
|
||||||
dotBox.y2 = dotBox.y1 + dotWidth;
|
dotBox.y2 = dotBox.y1 + dotWidth;
|
||||||
this._dot.allocate(dotBox, flags);
|
this._dot.allocate(dotBox, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
let x = box.x1;
|
let x;
|
||||||
|
if (direction == St.TextDirection.LTR)
|
||||||
|
x = box.x1;
|
||||||
|
else
|
||||||
|
x = box.x2;
|
||||||
|
// if direction is ltr, x is the right edge of the last added
|
||||||
|
// actor, and it's constantly increasing, whereas if rtl, x is
|
||||||
|
// the left edge and it decreases
|
||||||
for (let i = 0, col = 0; i < this._children.length; i++) {
|
for (let i = 0, col = 0; i < this._children.length; i++) {
|
||||||
let child = this._children[i];
|
let child = this._children[i];
|
||||||
let childBox = new Clutter.ActorBox();
|
let childBox = new Clutter.ActorBox();
|
||||||
@ -244,9 +263,12 @@ PopupBaseMenuItem.prototype = {
|
|||||||
let [minWidth, naturalWidth] = child.actor.get_preferred_width(-1);
|
let [minWidth, naturalWidth] = child.actor.get_preferred_width(-1);
|
||||||
let availWidth, extraWidth;
|
let availWidth, extraWidth;
|
||||||
if (this._columnWidths) {
|
if (this._columnWidths) {
|
||||||
if (child.span == -1)
|
if (child.span == -1) {
|
||||||
|
if (direction == St.TextDirection.LTR)
|
||||||
availWidth = box.x2 - x;
|
availWidth = box.x2 - x;
|
||||||
else {
|
else
|
||||||
|
availWidth = x - box.x1;
|
||||||
|
} else {
|
||||||
availWidth = 0;
|
availWidth = 0;
|
||||||
for (let j = 0; j < child.span; j++)
|
for (let j = 0; j < child.span; j++)
|
||||||
availWidth += this._columnWidths[col++];
|
availWidth += this._columnWidths[col++];
|
||||||
@ -257,6 +279,7 @@ PopupBaseMenuItem.prototype = {
|
|||||||
extraWidth = 0;
|
extraWidth = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (direction == St.TextDirection.LTR) {
|
||||||
if (child.expand) {
|
if (child.expand) {
|
||||||
childBox.x1 = x;
|
childBox.x1 = x;
|
||||||
childBox.x2 = x + availWidth;
|
childBox.x2 = x + availWidth;
|
||||||
@ -270,6 +293,23 @@ PopupBaseMenuItem.prototype = {
|
|||||||
childBox.x1 = x;
|
childBox.x1 = x;
|
||||||
childBox.x2 = x + naturalWidth;
|
childBox.x2 = x + naturalWidth;
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
if (child.expand) {
|
||||||
|
childBox.x1 = x - availWidth;
|
||||||
|
childBox.x2 = x;
|
||||||
|
} else if (child.align === St.Align.CENTER) {
|
||||||
|
childBox.x1 = x - Math.round(extraWidth / 2);
|
||||||
|
childBox.x2 = childBox.x1 + naturalWidth;
|
||||||
|
} else if (child.align === St.Align.END) {
|
||||||
|
// align to the left
|
||||||
|
childBox.x1 = x - availWidth;
|
||||||
|
childBox.x2 = childBox.x1 + naturalWidth;
|
||||||
|
} else {
|
||||||
|
// align to the right
|
||||||
|
childBox.x2 = x;
|
||||||
|
childBox.x1 = x - naturalWidth;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
let [minHeight, naturalHeight] = child.actor.get_preferred_height(-1);
|
let [minHeight, naturalHeight] = child.actor.get_preferred_height(-1);
|
||||||
childBox.y1 = Math.round(box.y1 + (height - naturalHeight) / 2);
|
childBox.y1 = Math.round(box.y1 + (height - naturalHeight) / 2);
|
||||||
@ -277,7 +317,10 @@ PopupBaseMenuItem.prototype = {
|
|||||||
|
|
||||||
child.actor.allocate(childBox, flags);
|
child.actor.allocate(childBox, flags);
|
||||||
|
|
||||||
|
if (direction == St.TextDirection.LTR)
|
||||||
x += availWidth + this._spacing;
|
x += availWidth + this._spacing;
|
||||||
|
else
|
||||||
|
x -= availWidth + this._spacing;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -724,6 +767,11 @@ PopupMenuBase.prototype = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
this.isOpen = false;
|
this.isOpen = false;
|
||||||
|
|
||||||
|
// If set, we don't send events (including crossing events) to the source actor
|
||||||
|
// for the menu which causes its prelight state to freeze
|
||||||
|
this.blockSourceEvents = false;
|
||||||
|
|
||||||
this._activeMenuItem = null;
|
this._activeMenuItem = null;
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -1331,14 +1379,20 @@ PopupMenuManager.prototype = {
|
|||||||
return this._activeMenuContains(event.get_source());
|
return this._activeMenuContains(event.get_source());
|
||||||
},
|
},
|
||||||
|
|
||||||
_eventIsOnAnyMenuSource: function(event) {
|
_shouldBlockEvent: function(event) {
|
||||||
let src = event.get_source();
|
let src = event.get_source();
|
||||||
|
|
||||||
|
if (this._activeMenu != null && this._activeMenu.actor.contains(src))
|
||||||
|
return false;
|
||||||
|
|
||||||
for (let i = 0; i < this._menus.length; i++) {
|
for (let i = 0; i < this._menus.length; i++) {
|
||||||
let menu = this._menus[i].menu;
|
let menu = this._menus[i].menu;
|
||||||
if (menu.sourceActor && menu.sourceActor.contains(src))
|
if (menu.sourceActor && !menu.blockSourceEvents && menu.sourceActor.contains(src)) {
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
},
|
},
|
||||||
|
|
||||||
_findMenu: function(item) {
|
_findMenu: function(item) {
|
||||||
@ -1370,7 +1424,7 @@ PopupMenuManager.prototype = {
|
|||||||
} else if (eventType == Clutter.EventType.BUTTON_PRESS && !activeMenuContains) {
|
} else if (eventType == Clutter.EventType.BUTTON_PRESS && !activeMenuContains) {
|
||||||
this._closeMenu();
|
this._closeMenu();
|
||||||
return true;
|
return true;
|
||||||
} else if (activeMenuContains || this._eventIsOnAnyMenuSource(event)) {
|
} else if (!this._shouldBlockEvent(event)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -22,6 +22,9 @@ const MAX_FILE_DELETED_BEFORE_INVALID = 10;
|
|||||||
|
|
||||||
const HISTORY_KEY = 'command-history';
|
const HISTORY_KEY = 'command-history';
|
||||||
|
|
||||||
|
const LOCKDOWN_SCHEMA = 'org.gnome.desktop.lockdown';
|
||||||
|
const DISABLE_COMMAND_LINE_KEY = 'disable-command-line';
|
||||||
|
|
||||||
const DIALOG_GROW_TIME = 0.1;
|
const DIALOG_GROW_TIME = 0.1;
|
||||||
|
|
||||||
function CommandCompleter() {
|
function CommandCompleter() {
|
||||||
@ -167,6 +170,7 @@ __proto__: ModalDialog.ModalDialog.prototype,
|
|||||||
_init : function() {
|
_init : function() {
|
||||||
ModalDialog.ModalDialog.prototype._init.call(this, { styleClass: 'run-dialog' });
|
ModalDialog.ModalDialog.prototype._init.call(this, { styleClass: 'run-dialog' });
|
||||||
|
|
||||||
|
this._lockdownSettings = new Gio.Settings({ schema: LOCKDOWN_SCHEMA });
|
||||||
global.settings.connect('changed::development-tools', Lang.bind(this, function () {
|
global.settings.connect('changed::development-tools', Lang.bind(this, function () {
|
||||||
this._enableInternalCommands = global.settings.get_boolean('development-tools');
|
this._enableInternalCommands = global.settings.get_boolean('development-tools');
|
||||||
}));
|
}));
|
||||||
@ -206,10 +210,7 @@ __proto__: ModalDialog.ModalDialog.prototype,
|
|||||||
|
|
||||||
this._entryText = entry.clutter_text;
|
this._entryText = entry.clutter_text;
|
||||||
this.contentLayout.add(entry, { y_align: St.Align.START });
|
this.contentLayout.add(entry, { y_align: St.Align.START });
|
||||||
this.connect('opened',
|
this.setInitialKeyFocus(this._entryText);
|
||||||
Lang.bind(this, function() {
|
|
||||||
this._entryText.grab_key_focus();
|
|
||||||
}));
|
|
||||||
|
|
||||||
this._errorBox = new St.BoxLayout({ style_class: 'run-dialog-error-box' });
|
this._errorBox = new St.BoxLayout({ style_class: 'run-dialog-error-box' });
|
||||||
|
|
||||||
@ -239,15 +240,21 @@ __proto__: ModalDialog.ModalDialog.prototype,
|
|||||||
this._entryText.connect('key-press-event', Lang.bind(this, function(o, e) {
|
this._entryText.connect('key-press-event', Lang.bind(this, function(o, e) {
|
||||||
let symbol = e.get_key_symbol();
|
let symbol = e.get_key_symbol();
|
||||||
if (symbol == Clutter.Return || symbol == Clutter.KP_Enter) {
|
if (symbol == Clutter.Return || symbol == Clutter.KP_Enter) {
|
||||||
|
this.popModal();
|
||||||
if (Shell.get_event_state(e) & Clutter.ModifierType.CONTROL_MASK)
|
if (Shell.get_event_state(e) & Clutter.ModifierType.CONTROL_MASK)
|
||||||
this._run(o.get_text(), true);
|
this._run(o.get_text(), true);
|
||||||
else
|
else
|
||||||
this._run(o.get_text(), false);
|
this._run(o.get_text(), false);
|
||||||
if (!this._commandError)
|
if (!this._commandError)
|
||||||
this.close(global.get_current_time());
|
this.close();
|
||||||
|
else {
|
||||||
|
if (!this.pushModal())
|
||||||
|
this.close();
|
||||||
|
}
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
if (symbol == Clutter.Escape) {
|
if (symbol == Clutter.Escape) {
|
||||||
this.close(global.get_current_time());
|
this.close();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (symbol == Clutter.slash) {
|
if (symbol == Clutter.slash) {
|
||||||
@ -353,6 +360,9 @@ __proto__: ModalDialog.ModalDialog.prototype,
|
|||||||
this._entryText.set_text('');
|
this._entryText.set_text('');
|
||||||
this._commandError = false;
|
this._commandError = false;
|
||||||
|
|
||||||
|
if (this._lockdownSettings.get_boolean(DISABLE_COMMAND_LINE_KEY))
|
||||||
|
return;
|
||||||
|
|
||||||
ModalDialog.ModalDialog.prototype.open.call(this);
|
ModalDialog.ModalDialog.prototype.open.call(this);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -5,6 +5,7 @@ const Lang = imports.lang;
|
|||||||
const Gettext = imports.gettext.domain('gnome-shell');
|
const Gettext = imports.gettext.domain('gnome-shell');
|
||||||
const _ = Gettext.gettext;
|
const _ = Gettext.gettext;
|
||||||
const Gtk = imports.gi.Gtk;
|
const Gtk = imports.gi.Gtk;
|
||||||
|
const Meta = imports.gi.Meta;
|
||||||
const St = imports.gi.St;
|
const St = imports.gi.St;
|
||||||
|
|
||||||
const DND = imports.ui.dnd;
|
const DND = imports.ui.dnd;
|
||||||
@ -49,6 +50,10 @@ SearchResult.prototype = {
|
|||||||
Lang.bind(this, function() {
|
Lang.bind(this, function() {
|
||||||
Main.overview.beginItemDrag(this);
|
Main.overview.beginItemDrag(this);
|
||||||
}));
|
}));
|
||||||
|
draggable.connect('drag-cancelled',
|
||||||
|
Lang.bind(this, function() {
|
||||||
|
Main.overview.cancelledItemDrag(this);
|
||||||
|
}));
|
||||||
draggable.connect('drag-end',
|
draggable.connect('drag-end',
|
||||||
Lang.bind(this, function() {
|
Lang.bind(this, function() {
|
||||||
Main.overview.endItemDrag(this);
|
Main.overview.endItemDrag(this);
|
||||||
@ -100,8 +105,30 @@ GridSearchResults.prototype = {
|
|||||||
this._grid = new IconGrid.IconGrid({ rowLimit: MAX_SEARCH_RESULTS_ROWS,
|
this._grid = new IconGrid.IconGrid({ rowLimit: MAX_SEARCH_RESULTS_ROWS,
|
||||||
xAlign: St.Align.START });
|
xAlign: St.Align.START });
|
||||||
this.actor = new St.Bin({ x_align: St.Align.START });
|
this.actor = new St.Bin({ x_align: St.Align.START });
|
||||||
|
|
||||||
this.actor.set_child(this._grid.actor);
|
this.actor.set_child(this._grid.actor);
|
||||||
this.selectionIndex = -1;
|
this.selectionIndex = -1;
|
||||||
|
this._width = 0;
|
||||||
|
this.actor.connect('notify::width', Lang.bind(this, function() {
|
||||||
|
this._width = this.actor.width;
|
||||||
|
Meta.later_add(Meta.LaterType.BEFORE_REDRAW, Lang.bind(this, function() {
|
||||||
|
this._tryAddResults();
|
||||||
|
}));
|
||||||
|
}));
|
||||||
|
this._notDisplayedResult = [];
|
||||||
|
this._terms = [];
|
||||||
|
},
|
||||||
|
|
||||||
|
_tryAddResults: function() {
|
||||||
|
let canDisplay = this._grid.childrenInRow(this._width) * MAX_SEARCH_RESULTS_ROWS
|
||||||
|
- this._grid.visibleItemsCount();
|
||||||
|
|
||||||
|
for (let i = Math.min(this._notDisplayedResult.length, canDisplay); i > 0; i--) {
|
||||||
|
let result = this._notDisplayedResult.shift();
|
||||||
|
let meta = this.provider.getResultMeta(result);
|
||||||
|
let display = new SearchResult(this.provider, meta, this._terms);
|
||||||
|
this._grid.addItem(display.actor);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
getVisibleResultCount: function() {
|
getVisibleResultCount: function() {
|
||||||
@ -109,15 +136,15 @@ GridSearchResults.prototype = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
renderResults: function(results, terms) {
|
renderResults: function(results, terms) {
|
||||||
for (let i = 0; i < results.length; i++) {
|
// copy the lists
|
||||||
let result = results[i];
|
this._notDisplayedResult = results.slice(0);
|
||||||
let meta = this.provider.getResultMeta(result);
|
this._terms = terms.slice(0);
|
||||||
let display = new SearchResult(this.provider, meta, terms);
|
this._tryAddResults();
|
||||||
this._grid.addItem(display.actor);
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
|
|
||||||
clear: function () {
|
clear: function () {
|
||||||
|
this._terms = [];
|
||||||
|
this._notDisplayedResult = [];
|
||||||
this._grid.removeAll();
|
this._grid.removeAll();
|
||||||
this.selectionIndex = -1;
|
this.selectionIndex = -1;
|
||||||
},
|
},
|
||||||
|
@ -66,13 +66,13 @@ ATIndicator.prototype = {
|
|||||||
let textZoom = this._buildFontItem();
|
let textZoom = this._buildFontItem();
|
||||||
this.menu.addMenuItem(textZoom);
|
this.menu.addMenuItem(textZoom);
|
||||||
|
|
||||||
let screenReader = this._buildItem(_("Screen Reader"), APPLICATIONS_SCHEMA,
|
// let screenReader = this._buildItem(_("Screen Reader"), APPLICATIONS_SCHEMA,
|
||||||
'screen-reader-enabled');
|
// 'screen-reader-enabled');
|
||||||
this.menu.addMenuItem(screenReader);
|
// this.menu.addMenuItem(screenReader);
|
||||||
|
|
||||||
let screenKeyboard = this._buildItem(_("Screen Keyboard"), APPLICATIONS_SCHEMA,
|
// let screenKeyboard = this._buildItem(_("Screen Keyboard"), APPLICATIONS_SCHEMA,
|
||||||
'screen-keyboard-enabled');
|
// 'screen-keyboard-enabled');
|
||||||
this.menu.addMenuItem(screenKeyboard);
|
// this.menu.addMenuItem(screenKeyboard);
|
||||||
|
|
||||||
let visualBell = this._buildItemGConf(_("Visual Alerts"), client, KEY_VISUAL_BELL);
|
let visualBell = this._buildItemGConf(_("Visual Alerts"), client, KEY_VISUAL_BELL);
|
||||||
this.menu.addMenuItem(visualBell);
|
this.menu.addMenuItem(visualBell);
|
||||||
@ -91,7 +91,8 @@ ATIndicator.prototype = {
|
|||||||
|
|
||||||
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
|
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
|
||||||
this.menu.addAction(_("Universal Access Settings"), function() {
|
this.menu.addAction(_("Universal Access Settings"), function() {
|
||||||
Util.spawnDesktop('gnome-universal-access-panel');
|
let app = Shell.AppSystem.get_default().get_app('gnome-universal-access-panel.desktop');
|
||||||
|
app.activate(-1);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -93,7 +93,8 @@ Indicator.prototype = {
|
|||||||
this._updateFullMenu();
|
this._updateFullMenu();
|
||||||
|
|
||||||
this.menu.addAction(_("Bluetooth Settings"), function() {
|
this.menu.addAction(_("Bluetooth Settings"), function() {
|
||||||
GLib.spawn_command_line_async('gnome-control-center bluetooth');
|
let app = Shell.AppSystem.get_default().get_app('bluetooth-properties.desktop');
|
||||||
|
app.activate(-1);
|
||||||
});
|
});
|
||||||
|
|
||||||
this._applet.connect('pincode-request', Lang.bind(this, this._pinRequest));
|
this._applet.connect('pincode-request', Lang.bind(this, this._pinRequest));
|
||||||
@ -136,6 +137,7 @@ Indicator.prototype = {
|
|||||||
_updateDevices: function() {
|
_updateDevices: function() {
|
||||||
let devices = this._applet.get_devices();
|
let devices = this._applet.get_devices();
|
||||||
|
|
||||||
|
let newlist = [ ];
|
||||||
for (let i = 0; i < this._deviceItems.length; i++) {
|
for (let i = 0; i < this._deviceItems.length; i++) {
|
||||||
let item = this._deviceItems[i];
|
let item = this._deviceItems[i];
|
||||||
let destroy = true;
|
let destroy = true;
|
||||||
@ -143,26 +145,20 @@ Indicator.prototype = {
|
|||||||
// we need to deep compare because BluetoothSimpleDevice is a boxed type
|
// we need to deep compare because BluetoothSimpleDevice is a boxed type
|
||||||
// (but we take advantage of that, because _skip will disappear the next
|
// (but we take advantage of that, because _skip will disappear the next
|
||||||
// time get_devices() is called)
|
// time get_devices() is called)
|
||||||
if (this._deviceCompare(item._device, devices[i])) {
|
if (this._deviceCompare(item._device, devices[j])) {
|
||||||
item.label.text = devices[i].alias;
|
item.label.text = devices[j].alias;
|
||||||
devices[i]._skip = true;
|
devices[j]._skip = true;
|
||||||
destroy = false;
|
destroy = false;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (destroy) {
|
if (destroy)
|
||||||
item.destroy();
|
item.destroy();
|
||||||
item._destroyed = true;
|
else
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
let newlist = [ ];
|
|
||||||
for (let i = 0; i < this._deviceItems.length; i++) {
|
|
||||||
let item = this._deviceItems[i];
|
|
||||||
if (!item._destroyed)
|
|
||||||
newlist.push(item);
|
newlist.push(item);
|
||||||
}
|
}
|
||||||
this._deviceItems = newlist;
|
|
||||||
|
|
||||||
|
this._deviceItems = newlist;
|
||||||
this._hasDevices = newlist.length > 0;
|
this._hasDevices = newlist.length > 0;
|
||||||
for (let i = 0; i < devices.length; i++) {
|
for (let i = 0; i < devices.length; i++) {
|
||||||
let d = devices[i];
|
let d = devices[i];
|
||||||
|
@ -74,7 +74,8 @@ XKBIndicator.prototype = {
|
|||||||
Util.spawn(['gkbd-keyboard-display', '-g', String(this._config.get_current_group() + 1)]);
|
Util.spawn(['gkbd-keyboard-display', '-g', String(this._config.get_current_group() + 1)]);
|
||||||
}));
|
}));
|
||||||
this.menu.addAction(_("Localization Settings"), function() {
|
this.menu.addAction(_("Localization Settings"), function() {
|
||||||
Util.spawn(['gnome-control-center', 'region']);
|
let app = Shell.AppSystem.get_default().get_app('gnome-region-panel.desktop');
|
||||||
|
app.activate(-1);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
2107
js/ui/status/network.js
Normal file
2107
js/ui/status/network.js
Normal file
File diff suppressed because it is too large
Load Diff
@ -83,7 +83,8 @@ Indicator.prototype = {
|
|||||||
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
|
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
|
||||||
|
|
||||||
this.menu.addAction(_("Power Settings"),function() {
|
this.menu.addAction(_("Power Settings"),function() {
|
||||||
Util.spawnDesktop('gnome-power-panel');
|
let app = Shell.AppSystem.get_default().get_app('gnome-power-panel.desktop');
|
||||||
|
app.activate(-1);
|
||||||
});
|
});
|
||||||
|
|
||||||
this._proxy.connect('Changed', Lang.bind(this, this._devicesChanged));
|
this._proxy.connect('Changed', Lang.bind(this, this._devicesChanged));
|
||||||
|
@ -64,7 +64,8 @@ Indicator.prototype = {
|
|||||||
|
|
||||||
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
|
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
|
||||||
this.menu.addAction(_("Sound Settings"), function() {
|
this.menu.addAction(_("Sound Settings"), function() {
|
||||||
Util.spawnDesktop('gnome-sound-panel');
|
let app = Shell.AppSystem.get_default().get_app('gnome-sound-panel.desktop');
|
||||||
|
app.activate(-1);
|
||||||
});
|
});
|
||||||
|
|
||||||
this.actor.connect('scroll-event', Lang.bind(this, this._onScrollEvent));
|
this.actor.connect('scroll-event', Lang.bind(this, this._onScrollEvent));
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
const Gdm = imports.gi.Gdm;
|
const Gdm = imports.gi.Gdm;
|
||||||
const DBus = imports.dbus;
|
const DBus = imports.dbus;
|
||||||
|
const Gio = imports.gi.Gio;
|
||||||
const GLib = imports.gi.GLib;
|
const GLib = imports.gi.GLib;
|
||||||
const Lang = imports.lang;
|
const Lang = imports.lang;
|
||||||
const Shell = imports.gi.Shell;
|
const Shell = imports.gi.Shell;
|
||||||
@ -20,6 +21,11 @@ const Util = imports.misc.util;
|
|||||||
const BUS_NAME = 'org.gnome.ScreenSaver';
|
const BUS_NAME = 'org.gnome.ScreenSaver';
|
||||||
const OBJECT_PATH = '/org/gnome/ScreenSaver';
|
const OBJECT_PATH = '/org/gnome/ScreenSaver';
|
||||||
|
|
||||||
|
const LOCKDOWN_SCHEMA = 'org.gnome.desktop.lockdown';
|
||||||
|
const DISABLE_USER_SWITCH_KEY = 'disable-user-switching';
|
||||||
|
const DISABLE_LOCK_SCREEN_KEY = 'disable-lock-screen';
|
||||||
|
const DISABLE_LOG_OUT_KEY = 'disable-log-out';
|
||||||
|
|
||||||
const ScreenSaverInterface = {
|
const ScreenSaverInterface = {
|
||||||
name: BUS_NAME,
|
name: BUS_NAME,
|
||||||
methods: [ { name: 'Lock', inSignature: '' } ]
|
methods: [ { name: 'Lock', inSignature: '' } ]
|
||||||
@ -44,6 +50,8 @@ StatusMenuButton.prototype = {
|
|||||||
let box = new St.BoxLayout({ name: 'panelStatusMenu' });
|
let box = new St.BoxLayout({ name: 'panelStatusMenu' });
|
||||||
this.actor.set_child(box);
|
this.actor.set_child(box);
|
||||||
|
|
||||||
|
this._lockdownSettings = new Gio.Settings({ schema: LOCKDOWN_SCHEMA });
|
||||||
|
|
||||||
this._gdm = Gdm.UserManager.ref_default();
|
this._gdm = Gdm.UserManager.ref_default();
|
||||||
this._gdm.queue_load();
|
this._gdm.queue_load();
|
||||||
|
|
||||||
@ -79,6 +87,15 @@ StatusMenuButton.prototype = {
|
|||||||
this._gdm.connect('notify::is-loaded', Lang.bind(this, this._updateSwitchUser));
|
this._gdm.connect('notify::is-loaded', Lang.bind(this, this._updateSwitchUser));
|
||||||
this._gdm.connect('user-added', Lang.bind(this, this._updateSwitchUser));
|
this._gdm.connect('user-added', Lang.bind(this, this._updateSwitchUser));
|
||||||
this._gdm.connect('user-removed', Lang.bind(this, this._updateSwitchUser));
|
this._gdm.connect('user-removed', Lang.bind(this, this._updateSwitchUser));
|
||||||
|
this._lockdownSettings.connect('changed::' + DISABLE_USER_SWITCH_KEY,
|
||||||
|
Lang.bind(this, this._updateSwitchUser));
|
||||||
|
this._lockdownSettings.connect('changed::' + DISABLE_LOG_OUT_KEY,
|
||||||
|
Lang.bind(this, this._updateLogout));
|
||||||
|
this._lockdownSettings.connect('changed::' + DISABLE_LOCK_SCREEN_KEY,
|
||||||
|
Lang.bind(this, this._updateLockScreen));
|
||||||
|
this._updateSwitchUser();
|
||||||
|
this._updateLogout();
|
||||||
|
this._updateLockScreen();
|
||||||
|
|
||||||
this._upClient.connect('notify::can-suspend', Lang.bind(this, this._updateSuspendOrPowerOff));
|
this._upClient.connect('notify::can-suspend', Lang.bind(this, this._updateSuspendOrPowerOff));
|
||||||
},
|
},
|
||||||
@ -95,11 +112,41 @@ StatusMenuButton.prototype = {
|
|||||||
this._name.set_text("");
|
this._name.set_text("");
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_updateSessionSeparator: function() {
|
||||||
|
let showSeparator = this._loginScreenItem.actor.visible ||
|
||||||
|
this._logoutItem.actor.visible ||
|
||||||
|
this._lockScreenItem.actor.visible;
|
||||||
|
if (showSeparator)
|
||||||
|
this._sessionSeparator.actor.show();
|
||||||
|
else
|
||||||
|
this._sessionSeparator.actor.hide();
|
||||||
|
},
|
||||||
|
|
||||||
_updateSwitchUser: function() {
|
_updateSwitchUser: function() {
|
||||||
if (this._gdm.can_switch ())
|
let allowSwitch = !this._lockdownSettings.get_boolean(DISABLE_USER_SWITCH_KEY);
|
||||||
|
if (allowSwitch && this._gdm.can_switch ())
|
||||||
this._loginScreenItem.actor.show();
|
this._loginScreenItem.actor.show();
|
||||||
else
|
else
|
||||||
this._loginScreenItem.actor.hide();
|
this._loginScreenItem.actor.hide();
|
||||||
|
this._updateSessionSeparator();
|
||||||
|
},
|
||||||
|
|
||||||
|
_updateLogout: function() {
|
||||||
|
let allowLogout = !this._lockdownSettings.get_boolean(DISABLE_LOG_OUT_KEY);
|
||||||
|
if (allowLogout)
|
||||||
|
this._logoutItem.actor.show();
|
||||||
|
else
|
||||||
|
this._logoutItem.actor.hide();
|
||||||
|
this._updateSessionSeparator();
|
||||||
|
},
|
||||||
|
|
||||||
|
_updateLockScreen: function() {
|
||||||
|
let allowLockScreen = !this._lockdownSettings.get_boolean(DISABLE_LOCK_SCREEN_KEY);
|
||||||
|
if (allowLockScreen)
|
||||||
|
this._lockScreenItem.actor.show();
|
||||||
|
else
|
||||||
|
this._lockScreenItem.actor.hide();
|
||||||
|
this._updateSessionSeparator();
|
||||||
},
|
},
|
||||||
|
|
||||||
_updateSuspendOrPowerOff: function() {
|
_updateSuspendOrPowerOff: function() {
|
||||||
@ -113,7 +160,7 @@ StatusMenuButton.prototype = {
|
|||||||
if (!this._haveSuspend) {
|
if (!this._haveSuspend) {
|
||||||
this._suspendOrPowerOffItem.updateText(_("Power Off..."), null);
|
this._suspendOrPowerOffItem.updateText(_("Power Off..."), null);
|
||||||
} else {
|
} else {
|
||||||
this._suspendOrPowerOffItem.updateText(_("Suspend"), ("Power Off..."));
|
this._suspendOrPowerOffItem.updateText(_("Suspend"), _("Power Off..."));
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -161,6 +208,7 @@ StatusMenuButton.prototype = {
|
|||||||
item = new PopupMenu.PopupMenuItem(_("Lock Screen"));
|
item = new PopupMenu.PopupMenuItem(_("Lock Screen"));
|
||||||
item.connect('activate', Lang.bind(this, this._onLockScreenActivate));
|
item.connect('activate', Lang.bind(this, this._onLockScreenActivate));
|
||||||
this.menu.addMenuItem(item);
|
this.menu.addMenuItem(item);
|
||||||
|
this._lockScreenItem = item;
|
||||||
|
|
||||||
item = new PopupMenu.PopupMenuItem(_("Switch User"));
|
item = new PopupMenu.PopupMenuItem(_("Switch User"));
|
||||||
item.connect('activate', Lang.bind(this, this._onLoginScreenActivate));
|
item.connect('activate', Lang.bind(this, this._onLoginScreenActivate));
|
||||||
@ -170,9 +218,11 @@ StatusMenuButton.prototype = {
|
|||||||
item = new PopupMenu.PopupMenuItem(_("Log Out..."));
|
item = new PopupMenu.PopupMenuItem(_("Log Out..."));
|
||||||
item.connect('activate', Lang.bind(this, this._onQuitSessionActivate));
|
item.connect('activate', Lang.bind(this, this._onQuitSessionActivate));
|
||||||
this.menu.addMenuItem(item);
|
this.menu.addMenuItem(item);
|
||||||
|
this._logoutItem = item;
|
||||||
|
|
||||||
item = new PopupMenu.PopupSeparatorMenuItem();
|
item = new PopupMenu.PopupSeparatorMenuItem();
|
||||||
this.menu.addMenuItem(item);
|
this.menu.addMenuItem(item);
|
||||||
|
this._sessionSeparator = item;
|
||||||
|
|
||||||
item = new PopupMenu.PopupAlternatingMenuItem(_("Suspend"),
|
item = new PopupMenu.PopupAlternatingMenuItem(_("Suspend"),
|
||||||
_("Power Off..."));
|
_("Power Off..."));
|
||||||
@ -190,12 +240,14 @@ StatusMenuButton.prototype = {
|
|||||||
|
|
||||||
_onMyAccountActivate: function() {
|
_onMyAccountActivate: function() {
|
||||||
Main.overview.hide();
|
Main.overview.hide();
|
||||||
Util.spawnDesktop('gnome-user-accounts-panel');
|
let app = Shell.AppSystem.get_default().get_app('gnome-user-accounts-panel.desktop');
|
||||||
|
app.activate(-1);
|
||||||
},
|
},
|
||||||
|
|
||||||
_onPreferencesActivate: function() {
|
_onPreferencesActivate: function() {
|
||||||
Main.overview.hide();
|
Main.overview.hide();
|
||||||
Util.spawnDesktop('gnome-control-center');
|
let app = Shell.AppSystem.get_default().get_app('gnome-control-center.desktop');
|
||||||
|
app.activate(-1);
|
||||||
},
|
},
|
||||||
|
|
||||||
_onLockScreenActivate: function() {
|
_onLockScreenActivate: function() {
|
||||||
|
@ -7,10 +7,12 @@ const Mainloop = imports.mainloop;
|
|||||||
const Shell = imports.gi.Shell;
|
const Shell = imports.gi.Shell;
|
||||||
const Signals = imports.signals;
|
const Signals = imports.signals;
|
||||||
const St = imports.gi.St;
|
const St = imports.gi.St;
|
||||||
|
const Tpl = imports.gi.TelepathyLogger;
|
||||||
const Tp = imports.gi.TelepathyGLib;
|
const Tp = imports.gi.TelepathyGLib;
|
||||||
const Gettext = imports.gettext.domain('gnome-shell');
|
const Gettext = imports.gettext.domain('gnome-shell');
|
||||||
const _ = Gettext.gettext;
|
const _ = Gettext.gettext;
|
||||||
|
|
||||||
|
const History = imports.misc.history;
|
||||||
const Main = imports.ui.main;
|
const Main = imports.ui.main;
|
||||||
const MessageTray = imports.ui.messageTray;
|
const MessageTray = imports.ui.messageTray;
|
||||||
|
|
||||||
@ -21,6 +23,9 @@ const SCROLLBACK_RECENT_TIME = 15 * 60; // 15 minutes
|
|||||||
const SCROLLBACK_RECENT_LENGTH = 20;
|
const SCROLLBACK_RECENT_LENGTH = 20;
|
||||||
const SCROLLBACK_IDLE_LENGTH = 5;
|
const SCROLLBACK_IDLE_LENGTH = 5;
|
||||||
|
|
||||||
|
// See Source._displayPendingMessages
|
||||||
|
const SCROLLBACK_HISTORY_LINES = 10;
|
||||||
|
|
||||||
const NotificationDirection = {
|
const NotificationDirection = {
|
||||||
SENT: 'chat-sent',
|
SENT: 'chat-sent',
|
||||||
RECEIVED: 'chat-received'
|
RECEIVED: 'chat-received'
|
||||||
@ -35,6 +40,31 @@ let contactFeatures = [Tp.ContactFeature.ALIAS,
|
|||||||
// lets us see messages even if they belong to another app (eg,
|
// lets us see messages even if they belong to another app (eg,
|
||||||
// Empathy).
|
// Empathy).
|
||||||
|
|
||||||
|
function makeMessageFromTpMessage(tpMessage, direction) {
|
||||||
|
let [text, flags] = tpMessage.to_text();
|
||||||
|
return {
|
||||||
|
messageType: tpMessage.get_message_type(),
|
||||||
|
text: text,
|
||||||
|
sender: tpMessage.sender.alias,
|
||||||
|
timestamp: tpMessage.get_received_timestamp(),
|
||||||
|
direction: direction
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function makeMessageFromTplEvent(event) {
|
||||||
|
let sent = event.get_sender().get_entity_type() == Tpl.EntityType.SELF;
|
||||||
|
let direction = sent ? NotificationDirection.SENT : NotificationDirection.RECEIVED;
|
||||||
|
|
||||||
|
return {
|
||||||
|
messageType: event.get_message_type(),
|
||||||
|
text: event.get_message(),
|
||||||
|
sender: event.get_sender().get_alias(),
|
||||||
|
timestamp: event.get_timestamp(),
|
||||||
|
direction: direction
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
function Client() {
|
function Client() {
|
||||||
this._init();
|
this._init();
|
||||||
};
|
};
|
||||||
@ -67,7 +97,22 @@ Client.prototype = {
|
|||||||
|
|
||||||
_observeChannels: function(observer, account, conn, channels,
|
_observeChannels: function(observer, account, conn, channels,
|
||||||
dispatchOp, requests, context) {
|
dispatchOp, requests, context) {
|
||||||
let connPath = conn.get_object_path();
|
// If the self_contact doesn't have the ALIAS, make sure
|
||||||
|
// to fetch it before trying to grab the channels.
|
||||||
|
let self_contact = conn.get_self_contact();
|
||||||
|
if (self_contact.has_feature(Tp.ContactFeature.ALIAS)) {
|
||||||
|
this._finishObserveChannels(account, conn, channels, context);
|
||||||
|
} else {
|
||||||
|
Shell.get_self_contact_features(conn,
|
||||||
|
contactFeatures.length, contactFeatures,
|
||||||
|
Lang.bind(this, function() {
|
||||||
|
this._finishObserveChannels(account, conn, channels, context);
|
||||||
|
}));
|
||||||
|
context.delay();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
_finishObserveChannels: function(account, conn, channels, context) {
|
||||||
let len = channels.length;
|
let len = channels.length;
|
||||||
for (let i = 0; i < len; i++) {
|
for (let i = 0; i < len; i++) {
|
||||||
let channel = channels[i];
|
let channel = channels[i];
|
||||||
@ -90,7 +135,6 @@ Client.prototype = {
|
|||||||
}), null);
|
}), null);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Allow dbus method to return
|
|
||||||
context.accept();
|
context.accept();
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -116,7 +160,7 @@ Source.prototype = {
|
|||||||
__proto__: MessageTray.Source.prototype,
|
__proto__: MessageTray.Source.prototype,
|
||||||
|
|
||||||
_init: function(account, conn, channel, contact) {
|
_init: function(account, conn, channel, contact) {
|
||||||
MessageTray.Source.prototype._init.call(this, channel.get_identifier());
|
MessageTray.Source.prototype._init.call(this, contact.get_alias());
|
||||||
|
|
||||||
this.isChat = true;
|
this.isChat = true;
|
||||||
|
|
||||||
@ -127,8 +171,6 @@ Source.prototype = {
|
|||||||
this._channel = channel;
|
this._channel = channel;
|
||||||
this._closedId = this._channel.connect('invalidated', Lang.bind(this, this._channelClosed));
|
this._closedId = this._channel.connect('invalidated', Lang.bind(this, this._channelClosed));
|
||||||
|
|
||||||
this._updateAlias();
|
|
||||||
|
|
||||||
this._notification = new Notification(this);
|
this._notification = new Notification(this);
|
||||||
this._notification.setUrgency(MessageTray.Urgency.HIGH);
|
this._notification.setUrgency(MessageTray.Urgency.HIGH);
|
||||||
|
|
||||||
@ -143,11 +185,18 @@ Source.prototype = {
|
|||||||
this._notifyAvatarId = this._contact.connect('notify::avatar-file', Lang.bind(this, this._updateAvatarIcon));
|
this._notifyAvatarId = this._contact.connect('notify::avatar-file', Lang.bind(this, this._updateAvatarIcon));
|
||||||
this._presenceChangedId = this._contact.connect('presence-changed', Lang.bind(this, this._presenceChanged));
|
this._presenceChangedId = this._contact.connect('presence-changed', Lang.bind(this, this._presenceChanged));
|
||||||
|
|
||||||
this._displayPendingMessages();
|
// Add ourselves as a source.
|
||||||
|
Main.messageTray.add(this);
|
||||||
|
this.pushNotification(this._notification);
|
||||||
|
|
||||||
|
this._getLogMessages();
|
||||||
},
|
},
|
||||||
|
|
||||||
_updateAlias: function() {
|
_updateAlias: function() {
|
||||||
|
let oldAlias = this.title;
|
||||||
this.title = this._contact.get_alias();
|
this.title = this._contact.get_alias();
|
||||||
|
this._notification.appendAliasChange(oldAlias, this.title);
|
||||||
|
this.pushNotification(this._notification);
|
||||||
},
|
},
|
||||||
|
|
||||||
createNotificationIcon: function() {
|
createNotificationIcon: function() {
|
||||||
@ -183,13 +232,50 @@ Source.prototype = {
|
|||||||
req.ensure_channel_async('', null, null);
|
req.ensure_channel_async('', null, null);
|
||||||
},
|
},
|
||||||
|
|
||||||
_displayPendingMessages: function() {
|
_getLogMessages: function() {
|
||||||
let msgs = this._channel.get_pending_messages();
|
let logManager = Tpl.LogManager.dup_singleton();
|
||||||
|
let entity = Tpl.Entity.new_from_tp_contact(this._contact, Tpl.EntityType.CONTACT);
|
||||||
|
Shell.get_contact_events(logManager,
|
||||||
|
this._account, entity,
|
||||||
|
SCROLLBACK_HISTORY_LINES,
|
||||||
|
Lang.bind(this, this._displayPendingMessages));
|
||||||
|
},
|
||||||
|
|
||||||
for (let i = 0; i < msgs.length; i++) {
|
_displayPendingMessages: function(logManager, result) {
|
||||||
let msg = msgs[i];
|
let [success, events] = logManager.get_filtered_events_finish(result);
|
||||||
this._messageReceived(this._channel, msg);
|
|
||||||
|
let logMessages = events.map(makeMessageFromTplEvent);
|
||||||
|
for (let i = 0; i < logMessages.length; i++) {
|
||||||
|
this._notification.appendMessage(logMessages[i], true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let pendingMessages = this._channel.get_pending_messages();
|
||||||
|
let hasPendingMessage = false;
|
||||||
|
for (let i = 0; i < pendingMessages.length; i++) {
|
||||||
|
let message = makeMessageFromTpMessage(pendingMessages[i], NotificationDirection.RECEIVED);
|
||||||
|
|
||||||
|
// Skip any pending messages that are in the logs.
|
||||||
|
let inLog = false;
|
||||||
|
for (let j = 0; j < logMessages.length; j++) {
|
||||||
|
let logMessage = logMessages[j];
|
||||||
|
if (logMessage.timestamp == message.timestamp && logMessage.text == message.body) {
|
||||||
|
inLog = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (inLog)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
this._notification.appendMessage(message, true);
|
||||||
|
hasPendingMessage = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Only show the timestamp if we have at least one message.
|
||||||
|
if (hasPendingMessage || logMessages.length > 0)
|
||||||
|
this._notification.appendTimestamp();
|
||||||
|
|
||||||
|
if (hasPendingMessage)
|
||||||
|
this.notify();
|
||||||
},
|
},
|
||||||
|
|
||||||
_channelClosed: function() {
|
_channelClosed: function() {
|
||||||
@ -205,25 +291,32 @@ Source.prototype = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
_messageReceived: function(channel, message) {
|
_messageReceived: function(channel, message) {
|
||||||
this._notification.appendMessage(message, NotificationDirection.RECEIVED);
|
message = makeMessageFromTpMessage(message, NotificationDirection.RECEIVED);
|
||||||
|
this._notification.appendMessage(message);
|
||||||
this.notify();
|
this.notify();
|
||||||
},
|
},
|
||||||
|
|
||||||
// This is called for both messages we send from
|
// This is called for both messages we send from
|
||||||
// our client and other clients as well.
|
// our client and other clients as well.
|
||||||
_messageSent: function(channel, message, flags, token) {
|
_messageSent: function(channel, message, flags, token) {
|
||||||
this._notification.appendMessage(message, NotificationDirection.SENT);
|
message = makeMessageFromTpMessage(message, NotificationDirection.SENT);
|
||||||
|
this._notification.appendMessage(message);
|
||||||
},
|
},
|
||||||
|
|
||||||
notify: function() {
|
notify: function() {
|
||||||
if (!Main.messageTray.contains(this))
|
|
||||||
Main.messageTray.add(this);
|
|
||||||
|
|
||||||
MessageTray.Source.prototype.notify.call(this, this._notification);
|
MessageTray.Source.prototype.notify.call(this, this._notification);
|
||||||
},
|
},
|
||||||
|
|
||||||
respond: function(text) {
|
respond: function(text) {
|
||||||
let msg = Tp.ClientMessage.new_text(Tp.ChannelTextMessageType.NORMAL, text);
|
let type;
|
||||||
|
if (text.slice(0, 4) == '/me ') {
|
||||||
|
type = Tp.ChannelTextMessageType.ACTION;
|
||||||
|
text = text.slice(4);
|
||||||
|
} else {
|
||||||
|
type = Tp.ChannelTextMessageType.NORMAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
let msg = Tp.ClientMessage.new_text(type, text);
|
||||||
this._channel.send_message_async(msg, 0, null);
|
this._channel.send_message_async(msg, 0, null);
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -289,19 +382,40 @@ Notification.prototype = {
|
|||||||
this._oldMaxScrollAdjustment = adjustment.upper;
|
this._oldMaxScrollAdjustment = adjustment.upper;
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
this._inputHistory = new History.HistoryManager({ entry: this._responseEntry.clutter_text });
|
||||||
|
|
||||||
this._history = [];
|
this._history = [];
|
||||||
this._timestampTimeoutId = 0;
|
this._timestampTimeoutId = 0;
|
||||||
},
|
},
|
||||||
|
|
||||||
appendMessage: function(message, direction) {
|
/**
|
||||||
let [text, flags] = message.to_text();
|
* appendMessage:
|
||||||
let timestamp = message.get_received_timestamp();
|
* @message: An object with the properties:
|
||||||
|
* text: the body of the message,
|
||||||
|
* messageType: a #Tp.ChannelTextMessageType,
|
||||||
|
* sender: the name of the sender,
|
||||||
|
* timestamp: the time the message was sent
|
||||||
|
* direction: a #NotificationDirection
|
||||||
|
*
|
||||||
|
* @noTimestamp: Whether to add a timestamp. If %true, no timestamp
|
||||||
|
* will be added, regardless of the difference since the
|
||||||
|
* last timestamp
|
||||||
|
*/
|
||||||
|
appendMessage: function(message, noTimestamp) {
|
||||||
|
let messageBody = GLib.markup_escape_text(message.text, -1);
|
||||||
|
let styles = [message.direction];
|
||||||
|
|
||||||
this.update(this.source.title, text, { customContent: true });
|
if (message.messageType == Tp.ChannelTextMessageType.ACTION) {
|
||||||
this._append(text, direction, timestamp);
|
let senderAlias = GLib.markup_escape_text(message.sender, -1);
|
||||||
|
messageBody = '<i>%s</i> %s'.format(senderAlias, messageBody);
|
||||||
|
styles.push('chat-action');
|
||||||
|
}
|
||||||
|
|
||||||
|
this.update(this.source.title, messageBody, { customContent: true, bannerMarkup: true });
|
||||||
|
this._append(messageBody, styles, message.timestamp, noTimestamp);
|
||||||
},
|
},
|
||||||
|
|
||||||
_append: function(text, style, timestamp) {
|
_append: function(text, styles, timestamp, noTimestamp) {
|
||||||
let currentTime = (Date.now() / 1000);
|
let currentTime = (Date.now() / 1000);
|
||||||
if (!timestamp)
|
if (!timestamp)
|
||||||
timestamp = currentTime;
|
timestamp = currentTime;
|
||||||
@ -313,19 +427,22 @@ Notification.prototype = {
|
|||||||
if (this._timestampTimeoutId)
|
if (this._timestampTimeoutId)
|
||||||
Mainloop.source_remove(this._timestampTimeoutId);
|
Mainloop.source_remove(this._timestampTimeoutId);
|
||||||
|
|
||||||
let body = this.addBody(text);
|
let body = this.addBody(text, true);
|
||||||
body.add_style_class_name(style);
|
for (let i = 0; i < styles.length; i ++)
|
||||||
|
body.add_style_class_name(styles[i]);
|
||||||
|
|
||||||
this._history.unshift({ actor: body, time: timestamp, realMessage: true });
|
this._history.unshift({ actor: body, time: timestamp, realMessage: true });
|
||||||
|
|
||||||
|
if (!noTimestamp) {
|
||||||
if (timestamp < currentTime - SCROLLBACK_IMMEDIATE_TIME)
|
if (timestamp < currentTime - SCROLLBACK_IMMEDIATE_TIME)
|
||||||
this._appendTimestamp();
|
this.appendTimestamp();
|
||||||
else
|
else
|
||||||
// Schedule a new timestamp in SCROLLBACK_IMMEDIATE_TIME
|
// Schedule a new timestamp in SCROLLBACK_IMMEDIATE_TIME
|
||||||
// from the timestamp of the message.
|
// from the timestamp of the message.
|
||||||
this._timestampTimeoutId = Mainloop.timeout_add_seconds(
|
this._timestampTimeoutId = Mainloop.timeout_add_seconds(
|
||||||
SCROLLBACK_IMMEDIATE_TIME - (currentTime - timestamp),
|
SCROLLBACK_IMMEDIATE_TIME - (currentTime - timestamp),
|
||||||
Lang.bind(this, this._appendTimestamp));
|
Lang.bind(this, this.appendTimestamp));
|
||||||
|
}
|
||||||
|
|
||||||
if (this._history.length > 1) {
|
if (this._history.length > 1) {
|
||||||
// Keep the scrollback from growing too long. If the most
|
// Keep the scrollback from growing too long. If the most
|
||||||
@ -346,7 +463,7 @@ Notification.prototype = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
_appendTimestamp: function() {
|
appendTimestamp: function() {
|
||||||
let lastMessageTime = this._history[0].time;
|
let lastMessageTime = this._history[0].time;
|
||||||
let lastMessageDate = new Date(lastMessageTime * 1000);
|
let lastMessageDate = new Date(lastMessageTime * 1000);
|
||||||
|
|
||||||
@ -372,11 +489,28 @@ Notification.prototype = {
|
|||||||
this._history.unshift({ actor: label, time: (Date.now() / 1000), realMessage: false});
|
this._history.unshift({ actor: label, time: (Date.now() / 1000), realMessage: false});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
appendAliasChange: function(oldAlias, newAlias) {
|
||||||
|
// FIXME: uncomment this after 3.0 string freeze ends
|
||||||
|
|
||||||
|
// oldAlias = GLib.markup_escape_text(oldAlias, -1);
|
||||||
|
// newAlias = GLib.markup_escape_text(newAlias, -1);
|
||||||
|
|
||||||
|
// /* Translators: this is the other person changing their old IM name to their new
|
||||||
|
// IM name. */
|
||||||
|
// let message = '<i>' + _("%s is now known as %s").format(oldAlias, newAlias) + '</i>';
|
||||||
|
// let label = this.addBody(message, true);
|
||||||
|
// label.add_style_class_name('chat-meta-message');
|
||||||
|
// this._history.unshift({ actor: label, time: (Date.now() / 1000), realMessage: false });
|
||||||
|
// this.update(newAlias, null, { customContent: true });
|
||||||
|
},
|
||||||
|
|
||||||
_onEntryActivated: function() {
|
_onEntryActivated: function() {
|
||||||
let text = this._responseEntry.get_text();
|
let text = this._responseEntry.get_text();
|
||||||
if (text == '')
|
if (text == '')
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
this._inputHistory.addItem(text);
|
||||||
|
|
||||||
// Telepathy sends out the Sent signal for us.
|
// Telepathy sends out the Sent signal for us.
|
||||||
// see Source._messageSent
|
// see Source._messageSent
|
||||||
this._responseEntry.set_text('');
|
this._responseEntry.set_text('');
|
||||||
|
@ -41,11 +41,14 @@ BaseTab.prototype = {
|
|||||||
this.visible = false;
|
this.visible = false;
|
||||||
},
|
},
|
||||||
|
|
||||||
show: function() {
|
show: function(animate) {
|
||||||
this.visible = true;
|
this.visible = true;
|
||||||
this.page.opacity = 0;
|
|
||||||
this.page.show();
|
this.page.show();
|
||||||
|
|
||||||
|
if (!animate)
|
||||||
|
return;
|
||||||
|
|
||||||
|
this.page.opacity = 0;
|
||||||
Tweener.addTween(this.page,
|
Tweener.addTween(this.page,
|
||||||
{ opacity: 255,
|
{ opacity: 255,
|
||||||
time: 0.1,
|
time: 0.1,
|
||||||
@ -393,6 +396,8 @@ ViewSelector.prototype = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
_switchTab: function(tab) {
|
_switchTab: function(tab) {
|
||||||
|
let firstSwitch = this._activeTab == null;
|
||||||
|
|
||||||
if (this._activeTab && this._activeTab.visible) {
|
if (this._activeTab && this._activeTab.visible) {
|
||||||
if (this._activeTab == tab)
|
if (this._activeTab == tab)
|
||||||
return;
|
return;
|
||||||
@ -408,11 +413,13 @@ ViewSelector.prototype = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Only fade when switching between tabs,
|
||||||
|
// not when setting the initially selected one.
|
||||||
if (!tab.visible)
|
if (!tab.visible)
|
||||||
tab.show();
|
tab.show(!firstSwitch);
|
||||||
|
|
||||||
// Pull a Meg Ryan:
|
// Pull a Meg Ryan:
|
||||||
if (Main.overview && Main.overview.workspaces) {
|
if (!firstSwitch && Main.overview.workspaces) {
|
||||||
if (tab != this._tabs[0]) {
|
if (tab != this._tabs[0]) {
|
||||||
Tweener.addTween(Main.overview.workspaces.actor,
|
Tweener.addTween(Main.overview.workspaces.actor,
|
||||||
{ opacity: 0,
|
{ opacity: 0,
|
||||||
|
@ -123,11 +123,11 @@ WindowManager.prototype = {
|
|||||||
|
|
||||||
Main.overview.connect('showing', Lang.bind(this, function() {
|
Main.overview.connect('showing', Lang.bind(this, function() {
|
||||||
for (let i = 0; i < this._dimmedWindows.length; i++)
|
for (let i = 0; i < this._dimmedWindows.length; i++)
|
||||||
this._undimParentWindow(this._dimmedWindows[i], true);
|
this._undimWindow(this._dimmedWindows[i], true);
|
||||||
}));
|
}));
|
||||||
Main.overview.connect('hiding', Lang.bind(this, function() {
|
Main.overview.connect('hiding', Lang.bind(this, function() {
|
||||||
for (let i = 0; i < this._dimmedWindows.length; i++)
|
for (let i = 0; i < this._dimmedWindows.length; i++)
|
||||||
this._dimParentWindow(this._dimmedWindows[i], true);
|
this._dimWindow(this._dimmedWindows[i], true);
|
||||||
}));
|
}));
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -234,41 +234,39 @@ WindowManager.prototype = {
|
|||||||
_unmaximizeWindowDone : function(shellwm, actor) {
|
_unmaximizeWindowDone : function(shellwm, actor) {
|
||||||
},
|
},
|
||||||
|
|
||||||
_parentHasOtherAttachedDialog: function(parent, self) {
|
_hasAttachedDialogs: function(window, ignoreWindow) {
|
||||||
var count = 0;
|
var count = 0;
|
||||||
parent.foreach_transient(function(win) {
|
window.foreach_transient(function(win) {
|
||||||
if (win.get_window_type() == Meta.WindowType.MODAL_DIALOG && win != self)
|
if (win != ignoreWindow && win.get_window_type() == Meta.WindowType.MODAL_DIALOG)
|
||||||
count++;
|
count++;
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
return count != 0;
|
return count != 0;
|
||||||
},
|
},
|
||||||
|
|
||||||
_markParentWindowAsDimmable: function(actor, animate) {
|
_checkDimming: function(window, ignoreWindow) {
|
||||||
if (Meta.prefs_get_attach_modal_dialogs()) {
|
let shouldDim = Meta.prefs_get_attach_modal_dialogs() && this._hasAttachedDialogs(window, ignoreWindow);
|
||||||
this._dimmedWindows.push(actor);
|
|
||||||
if (this._shouldAnimate())
|
if (shouldDim && !window._dimmed) {
|
||||||
this._dimParentWindow(actor, animate);
|
window._dimmed = true;
|
||||||
|
this._dimmedWindows.push(window);
|
||||||
|
if (!Main.overview.visible)
|
||||||
|
this._dimWindow(window, true);
|
||||||
|
} else if (!shouldDim && window._dimmed) {
|
||||||
|
window._dimmed = false;
|
||||||
|
this._dimmedWindows = this._dimmedWindows.filter(function(win) {
|
||||||
|
return win != window;
|
||||||
|
});
|
||||||
|
if (!Main.overview.visible)
|
||||||
|
this._undimWindow(window, true);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
_unmarkParentWindowAsDimmable: function(actor, animate) {
|
_dimWindow: function(window, animate) {
|
||||||
if (!Main.overview.visible)
|
let actor = window.get_compositor_private();
|
||||||
this._undimParentWindow(actor, true);
|
if (!actor)
|
||||||
this._dimmedWindows = this._dimmedWindows.filter(function(win) {
|
|
||||||
return win != actor;
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
_dimParentWindow: function(actor, animate) {
|
|
||||||
let meta = actor.get_meta_window();
|
|
||||||
let parent = meta.get_transient_for();
|
|
||||||
if (!parent)
|
|
||||||
return;
|
return;
|
||||||
let parentActor = parent.get_compositor_private();
|
let texture = actor.get_texture();
|
||||||
if (!parentActor || this._parentHasOtherAttachedDialog(parent, meta))
|
|
||||||
return;
|
|
||||||
let texture = parentActor.get_texture();
|
|
||||||
if (animate)
|
if (animate)
|
||||||
Tweener.addTween(getWindowDimmer(texture),
|
Tweener.addTween(getWindowDimmer(texture),
|
||||||
{ dimFraction: 1.0,
|
{ dimFraction: 1.0,
|
||||||
@ -279,15 +277,11 @@ WindowManager.prototype = {
|
|||||||
getWindowDimmer(texture).dimFraction = 1.0;
|
getWindowDimmer(texture).dimFraction = 1.0;
|
||||||
},
|
},
|
||||||
|
|
||||||
_undimParentWindow: function(actor, animate) {
|
_undimWindow: function(window, animate) {
|
||||||
let meta = actor.get_meta_window();
|
let actor = window.get_compositor_private();
|
||||||
let parent = meta.get_transient_for();
|
if (!actor)
|
||||||
if (!parent)
|
|
||||||
return;
|
return;
|
||||||
let parentActor = parent.get_compositor_private();
|
let texture = actor.get_texture();
|
||||||
if (!parentActor || this._parentHasOtherAttachedDialog(parent, meta))
|
|
||||||
return;
|
|
||||||
let texture = parentActor.get_texture();
|
|
||||||
if (animate)
|
if (animate)
|
||||||
Tweener.addTween(getWindowDimmer(texture),
|
Tweener.addTween(getWindowDimmer(texture),
|
||||||
{ dimFraction: 0.0,
|
{ dimFraction: 0.0,
|
||||||
@ -304,17 +298,19 @@ WindowManager.prototype = {
|
|||||||
let type = actor.meta_window.get_window_type();
|
let type = actor.meta_window.get_window_type();
|
||||||
if (type == actor._windowType)
|
if (type == actor._windowType)
|
||||||
return;
|
return;
|
||||||
if (type == Meta.WindowType.MODAL_DIALOG)
|
if (type == Meta.WindowType.MODAL_DIALOG ||
|
||||||
this._markParentWindowAsDimmable(actor, true);
|
actor._windowType == Meta.WindowType.MODAL_DIALOG) {
|
||||||
else if (actor._windowType == Meta.WindowType.MODAL_DIALOG)
|
let parent = actor.get_meta_window().get_transient_for();
|
||||||
this._unmarkParentWindowAsDimmable(actor, true);
|
if (parent)
|
||||||
|
this._checkDimming(parent);
|
||||||
|
}
|
||||||
|
|
||||||
actor._windowType = type;
|
actor._windowType = type;
|
||||||
}));
|
}));
|
||||||
if (actor.meta_window.get_window_type() == Meta.WindowType.MODAL_DIALOG
|
if (actor.meta_window.get_window_type() == Meta.WindowType.MODAL_DIALOG
|
||||||
&& Meta.prefs_get_attach_modal_dialogs()
|
&& Meta.prefs_get_attach_modal_dialogs()
|
||||||
&& actor.get_meta_window().get_transient_for()) {
|
&& actor.get_meta_window().get_transient_for()) {
|
||||||
this._markParentWindowAsDimmable(actor, true);
|
this._checkDimming(actor.get_meta_window().get_transient_for());
|
||||||
if (this._shouldAnimate()) {
|
if (this._shouldAnimate()) {
|
||||||
actor.set_scale(1.0, 0.0);
|
actor.set_scale(1.0, 0.0);
|
||||||
actor.show();
|
actor.show();
|
||||||
@ -374,14 +370,20 @@ WindowManager.prototype = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
_destroyWindow : function(shellwm, actor) {
|
_destroyWindow : function(shellwm, actor) {
|
||||||
let parent = actor.meta_window.get_transient_for();
|
let window = actor.meta_window;
|
||||||
|
let parent = window.get_transient_for();
|
||||||
if (actor._notifyWindowTypeSignalId) {
|
if (actor._notifyWindowTypeSignalId) {
|
||||||
actor.meta_window.disconnect(actor._notifyWindowTypeSignalId);
|
window.disconnect(actor._notifyWindowTypeSignalId);
|
||||||
actor._notifyWindowTypeSignalId = 0;
|
actor._notifyWindowTypeSignalId = 0;
|
||||||
}
|
}
|
||||||
while (actor.meta_window.get_window_type() == Meta.WindowType.MODAL_DIALOG
|
if (window._dimmed) {
|
||||||
|
this._dimmedWindows = this._dimmedWindows.filter(function(win) {
|
||||||
|
return win != window;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
while (window.get_window_type() == Meta.WindowType.MODAL_DIALOG
|
||||||
&& parent) {
|
&& parent) {
|
||||||
this._unmarkParentWindowAsDimmable(actor, true);
|
this._checkDimming(parent, window);
|
||||||
if (!Meta.prefs_get_attach_modal_dialogs()
|
if (!Meta.prefs_get_attach_modal_dialogs()
|
||||||
|| !this._shouldAnimate())
|
|| !this._shouldAnimate())
|
||||||
break;
|
break;
|
||||||
|
@ -221,8 +221,15 @@ WindowClone.prototype = {
|
|||||||
|
|
||||||
let [width, height] = this.actor.get_transformed_size();
|
let [width, height] = this.actor.get_transformed_size();
|
||||||
|
|
||||||
this.actor.x = _clamp(this.actor.x, 0, global.screen_width - width);
|
let monitorIndex = this.metaWindow.get_monitor();
|
||||||
this.actor.y = _clamp(this.actor.y, Panel.PANEL_HEIGHT, global.screen_height - height);
|
let availArea = global.get_monitors()[monitorIndex];
|
||||||
|
if (monitorIndex == global.get_primary_monitor_index()) {
|
||||||
|
availArea.y += Main.panel.actor.height;
|
||||||
|
availArea.height -= Main.panel.actor.height;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.actor.x = _clamp(this.actor.x, availArea.x, availArea.x + availArea.width - width);
|
||||||
|
this.actor.y = _clamp(this.actor.y, availArea.y, availArea.y + availArea.height - height);
|
||||||
},
|
},
|
||||||
|
|
||||||
_zoomStart : function () {
|
_zoomStart : function () {
|
||||||
@ -387,12 +394,6 @@ WindowOverlay.prototype = {
|
|||||||
|
|
||||||
show: function() {
|
show: function() {
|
||||||
this._hidden = false;
|
this._hidden = false;
|
||||||
let [x, y, mask] = global.get_pointer();
|
|
||||||
let actor = global.stage.get_actor_at_pos(Clutter.PickMode.REACTIVE,
|
|
||||||
x, y);
|
|
||||||
if (actor == this._windowClone.actor) {
|
|
||||||
this.closeButton.show();
|
|
||||||
}
|
|
||||||
this.title.show();
|
this.title.show();
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -541,14 +542,14 @@ const WindowPositionFlags = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @metaWorkspace: a #Meta.Workspace
|
* @metaWorkspace: a #Meta.Workspace, or null
|
||||||
*/
|
*/
|
||||||
function Workspace(metaWorkspace) {
|
function Workspace(metaWorkspace, monitorIndex) {
|
||||||
this._init(metaWorkspace);
|
this._init(metaWorkspace, monitorIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
Workspace.prototype = {
|
Workspace.prototype = {
|
||||||
_init : function(metaWorkspace) {
|
_init : function(metaWorkspace, monitorIndex) {
|
||||||
// When dragging a window, we use this slot for reserve space.
|
// When dragging a window, we use this slot for reserve space.
|
||||||
this._reservedSlot = null;
|
this._reservedSlot = null;
|
||||||
this.metaWorkspace = metaWorkspace;
|
this.metaWorkspace = metaWorkspace;
|
||||||
@ -557,6 +558,8 @@ Workspace.prototype = {
|
|||||||
this._width = 0;
|
this._width = 0;
|
||||||
this._height = 0;
|
this._height = 0;
|
||||||
|
|
||||||
|
this.monitorIndex = monitorIndex;
|
||||||
|
this._monitor = global.get_monitors()[this.monitorIndex];
|
||||||
this._windowOverlaysGroup = new Clutter.Group();
|
this._windowOverlaysGroup = new Clutter.Group();
|
||||||
// Without this the drop area will be overlapped.
|
// Without this the drop area will be overlapped.
|
||||||
this._windowOverlaysGroup.set_size(0, 0);
|
this._windowOverlaysGroup.set_size(0, 0);
|
||||||
@ -572,7 +575,7 @@ Workspace.prototype = {
|
|||||||
|
|
||||||
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
|
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
|
||||||
|
|
||||||
let windows = Main.getWindowActorsForWorkspace(this.metaWorkspace.index());
|
let windows = global.get_window_actors().filter(this._isMyWindow, this);
|
||||||
|
|
||||||
// Create clones for windows that should be
|
// Create clones for windows that should be
|
||||||
// visible in the Overview
|
// visible in the Overview
|
||||||
@ -585,10 +588,16 @@ Workspace.prototype = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Track window changes
|
// Track window changes
|
||||||
|
if (this.metaWorkspace) {
|
||||||
this._windowAddedId = this.metaWorkspace.connect('window-added',
|
this._windowAddedId = this.metaWorkspace.connect('window-added',
|
||||||
Lang.bind(this, this._windowAdded));
|
Lang.bind(this, this._windowAdded));
|
||||||
this._windowRemovedId = this.metaWorkspace.connect('window-removed',
|
this._windowRemovedId = this.metaWorkspace.connect('window-removed',
|
||||||
Lang.bind(this, this._windowRemoved));
|
Lang.bind(this, this._windowRemoved));
|
||||||
|
}
|
||||||
|
this._windowEnteredMonitorId = global.screen.connect('window-entered-monitor',
|
||||||
|
Lang.bind(this, this._windowEnteredMonitor));
|
||||||
|
this._windowLeftMonitorId = global.screen.connect('window-left-monitor',
|
||||||
|
Lang.bind(this, this._windowLeftMonitor));
|
||||||
this._repositionWindowsId = 0;
|
this._repositionWindowsId = 0;
|
||||||
|
|
||||||
this.leavingOverview = false;
|
this.leavingOverview = false;
|
||||||
@ -896,7 +905,7 @@ Workspace.prototype = {
|
|||||||
clones = this._orderWindowsByMotionAndStartup(clones, slots);
|
clones = this._orderWindowsByMotionAndStartup(clones, slots);
|
||||||
|
|
||||||
let currentWorkspace = global.screen.get_active_workspace();
|
let currentWorkspace = global.screen.get_active_workspace();
|
||||||
let isOnCurrentWorkspace = this.metaWorkspace == currentWorkspace;
|
let isOnCurrentWorkspace = this.metaWorkspace == null || this.metaWorkspace == currentWorkspace;
|
||||||
|
|
||||||
for (let i = 0; i < clones.length; i++) {
|
for (let i = 0; i < clones.length; i++) {
|
||||||
let slot = slots[i];
|
let slot = slots[i];
|
||||||
@ -999,7 +1008,8 @@ Workspace.prototype = {
|
|||||||
for (let i = 0; i < this._windows.length; i++) {
|
for (let i = 0; i < this._windows.length; i++) {
|
||||||
let clone = this._windows[i];
|
let clone = this._windows[i];
|
||||||
let overlay = this._windowOverlays[i];
|
let overlay = this._windowOverlays[i];
|
||||||
this._showWindowOverlay(clone, overlay, this.metaWorkspace == currentWorkspace);
|
this._showWindowOverlay(clone, overlay,
|
||||||
|
this.metaWorkspace == null || this.metaWorkspace == currentWorkspace);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -1036,7 +1046,7 @@ Workspace.prototype = {
|
|||||||
this._windowOverlaysGroup.hide();
|
this._windowOverlaysGroup.hide();
|
||||||
},
|
},
|
||||||
|
|
||||||
_windowRemoved : function(metaWorkspace, metaWin) {
|
_doRemoveWindow : function(metaWin) {
|
||||||
let win = metaWin.get_compositor_private();
|
let win = metaWin.get_compositor_private();
|
||||||
|
|
||||||
// find the position of the window in our list
|
// find the position of the window in our list
|
||||||
@ -1045,6 +1055,10 @@ Workspace.prototype = {
|
|||||||
if (index == -1)
|
if (index == -1)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
// Check if window still should be here
|
||||||
|
if (win && this._isMyWindow(win))
|
||||||
|
return;
|
||||||
|
|
||||||
let clone = this._windows[index];
|
let clone = this._windows[index];
|
||||||
|
|
||||||
this._windows.splice(index, 1);
|
this._windows.splice(index, 1);
|
||||||
@ -1088,7 +1102,7 @@ Workspace.prototype = {
|
|||||||
Lang.bind(this, this._delayedWindowRepositioning));
|
Lang.bind(this, this._delayedWindowRepositioning));
|
||||||
},
|
},
|
||||||
|
|
||||||
_windowAdded : function(metaWorkspace, metaWin) {
|
_doAddWindow : function(metaWin) {
|
||||||
if (this.leavingOverview)
|
if (this.leavingOverview)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@ -1100,13 +1114,18 @@ Workspace.prototype = {
|
|||||||
Mainloop.idle_add(Lang.bind(this,
|
Mainloop.idle_add(Lang.bind(this,
|
||||||
function () {
|
function () {
|
||||||
if (this.actor && metaWin.get_compositor_private())
|
if (this.actor && metaWin.get_compositor_private())
|
||||||
this._windowAdded(metaWorkspace, metaWin);
|
this._doAddWindow(metaWin);
|
||||||
return false;
|
return false;
|
||||||
}));
|
}));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!this._isOverviewWindow(win))
|
// We might have the window in our list already if it was on all workspaces and
|
||||||
|
// now was moved to this workspace
|
||||||
|
if (this._lookupIndex (metaWin) != -1)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!this._isMyWindow(win) || !this._isOverviewWindow(win))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
let clone = this._addWindowClone(win);
|
let clone = this._addWindowClone(win);
|
||||||
@ -1131,6 +1150,26 @@ Workspace.prototype = {
|
|||||||
this.positionWindows(WindowPositionFlags.ANIMATE);
|
this.positionWindows(WindowPositionFlags.ANIMATE);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_windowAdded : function(metaWorkspace, metaWin) {
|
||||||
|
this._doAddWindow(metaWin);
|
||||||
|
},
|
||||||
|
|
||||||
|
_windowRemoved : function(metaWorkspace, metaWin) {
|
||||||
|
this._doRemoveWindow(metaWin);
|
||||||
|
},
|
||||||
|
|
||||||
|
_windowEnteredMonitor : function(metaScreen, monitorIndex, metaWin) {
|
||||||
|
if (monitorIndex == this.monitorIndex) {
|
||||||
|
this._doAddWindow(metaWin);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
_windowLeftMonitor : function(metaScreen, monitorIndex, metaWin) {
|
||||||
|
if (monitorIndex == this.monitorIndex) {
|
||||||
|
this._doRemoveWindow(metaWin);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
// check for maximized windows on the workspace
|
// check for maximized windows on the workspace
|
||||||
hasMaximizedWindows: function() {
|
hasMaximizedWindows: function() {
|
||||||
for (let i = 0; i < this._windows.length; i++) {
|
for (let i = 0; i < this._windows.length; i++) {
|
||||||
@ -1167,7 +1206,7 @@ Workspace.prototype = {
|
|||||||
this._overviewHiddenId = Main.overview.connect('hidden', Lang.bind(this,
|
this._overviewHiddenId = Main.overview.connect('hidden', Lang.bind(this,
|
||||||
this._doneLeavingOverview));
|
this._doneLeavingOverview));
|
||||||
|
|
||||||
if (this.metaWorkspace != currentWorkspace)
|
if (this.metaWorkspace != null && this.metaWorkspace != currentWorkspace)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// Position and scale the windows.
|
// Position and scale the windows.
|
||||||
@ -1211,8 +1250,12 @@ Workspace.prototype = {
|
|||||||
}
|
}
|
||||||
Tweener.removeTweens(actor);
|
Tweener.removeTweens(actor);
|
||||||
|
|
||||||
|
if (this.metaWorkspace) {
|
||||||
this.metaWorkspace.disconnect(this._windowAddedId);
|
this.metaWorkspace.disconnect(this._windowAddedId);
|
||||||
this.metaWorkspace.disconnect(this._windowRemovedId);
|
this.metaWorkspace.disconnect(this._windowRemovedId);
|
||||||
|
}
|
||||||
|
global.screen.disconnect(this._windowEnteredMonitorId);
|
||||||
|
global.screen.disconnect(this._windowLeftMonitorId);
|
||||||
|
|
||||||
if (this._repositionWindowsId > 0)
|
if (this._repositionWindowsId > 0)
|
||||||
Mainloop.source_remove(this._repositionWindowsId);
|
Mainloop.source_remove(this._repositionWindowsId);
|
||||||
@ -1231,9 +1274,10 @@ Workspace.prototype = {
|
|||||||
this.leavingOverview = false;
|
this.leavingOverview = false;
|
||||||
},
|
},
|
||||||
|
|
||||||
// Tests if @win belongs to this workspaces
|
// Tests if @win belongs to this workspaces and monitor
|
||||||
_isMyWindow : function (win) {
|
_isMyWindow : function (win) {
|
||||||
return Main.isWindowActorDisplayedOnWorkspace(win, this.metaWorkspace.index());
|
return (this.metaWorkspace == null || Main.isWindowActorDisplayedOnWorkspace(win, this.metaWorkspace.index())) &&
|
||||||
|
(!win.get_meta_window() || win.get_meta_window().get_monitor() == this.monitorIndex);
|
||||||
},
|
},
|
||||||
|
|
||||||
// Tests if @win should be shown in the Overview
|
// Tests if @win should be shown in the Overview
|
||||||
@ -1321,8 +1365,10 @@ Workspace.prototype = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
_onCloneSelected : function (clone, time) {
|
_onCloneSelected : function (clone, time) {
|
||||||
Main.activateWindow(clone.metaWindow, time,
|
let wsIndex = undefined;
|
||||||
this.metaWorkspace.index());
|
if (this.metaWorkspace)
|
||||||
|
wsIndex = this.metaWorkspace.index();
|
||||||
|
Main.activateWindow(clone.metaWindow, time, wsIndex);
|
||||||
},
|
},
|
||||||
|
|
||||||
// Draggable target interface
|
// Draggable target interface
|
||||||
@ -1350,7 +1396,15 @@ Workspace.prototype = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
let metaWindow = win.get_meta_window();
|
let metaWindow = win.get_meta_window();
|
||||||
metaWindow.change_workspace_by_index(this.metaWorkspace.index(),
|
|
||||||
|
// We need to move the window before changing the workspace, because
|
||||||
|
// the move itself could cause a workspace change if the window enters
|
||||||
|
// the primary monitor
|
||||||
|
if (metaWindow.get_monitor() != this.monitorIndex)
|
||||||
|
metaWindow.move_to_monitor(this.monitorIndex);
|
||||||
|
|
||||||
|
let index = this.metaWorkspace ? this.metaWorkspace.index() : global.screen.get_active_workspace_index();
|
||||||
|
metaWindow.change_workspace_by_index(index,
|
||||||
false, // don't create workspace
|
false, // don't create workspace
|
||||||
time);
|
time);
|
||||||
return true;
|
return true;
|
||||||
|
@ -146,6 +146,7 @@ function WorkspaceThumbnail(metaWorkspace) {
|
|||||||
WorkspaceThumbnail.prototype = {
|
WorkspaceThumbnail.prototype = {
|
||||||
_init : function(metaWorkspace) {
|
_init : function(metaWorkspace) {
|
||||||
this.metaWorkspace = metaWorkspace;
|
this.metaWorkspace = metaWorkspace;
|
||||||
|
this.monitorIndex = global.get_primary_monitor_index();
|
||||||
|
|
||||||
this.actor = new St.Group({ reactive: true,
|
this.actor = new St.Group({ reactive: true,
|
||||||
clip_to_allocation: true,
|
clip_to_allocation: true,
|
||||||
@ -169,7 +170,8 @@ WorkspaceThumbnail.prototype = {
|
|||||||
this._background = new Clutter.Clone({ source: global.background_actor });
|
this._background = new Clutter.Clone({ source: global.background_actor });
|
||||||
this._contents.add_actor(this._background);
|
this._contents.add_actor(this._background);
|
||||||
|
|
||||||
this.setPorthole(0, 0, global.screen_width, global.screen_height);
|
let monitor = global.get_primary_monitor();
|
||||||
|
this.setPorthole(monitor.x, monitor.y, monitor.width, monitor.height);
|
||||||
|
|
||||||
let windows = global.get_window_actors().filter(this._isMyWindow, this);
|
let windows = global.get_window_actors().filter(this._isMyWindow, this);
|
||||||
|
|
||||||
@ -186,6 +188,10 @@ WorkspaceThumbnail.prototype = {
|
|||||||
Lang.bind(this, this._windowAdded));
|
Lang.bind(this, this._windowAdded));
|
||||||
this._windowRemovedId = this.metaWorkspace.connect('window-removed',
|
this._windowRemovedId = this.metaWorkspace.connect('window-removed',
|
||||||
Lang.bind(this, this._windowRemoved));
|
Lang.bind(this, this._windowRemoved));
|
||||||
|
this._windowEnteredMonitorId = global.screen.connect('window-entered-monitor',
|
||||||
|
Lang.bind(this, this._windowEnteredMonitor));
|
||||||
|
this._windowLeftMonitorId = global.screen.connect('window-left-monitor',
|
||||||
|
Lang.bind(this, this._windowLeftMonitor));
|
||||||
|
|
||||||
this.state = ThumbnailState.NORMAL;
|
this.state = ThumbnailState.NORMAL;
|
||||||
this._slidePosition = 0; // Fully slid in
|
this._slidePosition = 0; // Fully slid in
|
||||||
@ -193,6 +199,8 @@ WorkspaceThumbnail.prototype = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
setPorthole: function(x, y, width, height) {
|
setPorthole: function(x, y, width, height) {
|
||||||
|
this._portholeX = x;
|
||||||
|
this._portholeY = y;
|
||||||
this.actor.set_size(width, height);
|
this.actor.set_size(width, height);
|
||||||
this._contents.set_position(-x, -y);
|
this._contents.set_position(-x, -y);
|
||||||
},
|
},
|
||||||
@ -239,7 +247,7 @@ WorkspaceThumbnail.prototype = {
|
|||||||
return this._collapseFraction;
|
return this._collapseFraction;
|
||||||
},
|
},
|
||||||
|
|
||||||
_windowRemoved : function(metaWorkspace, metaWin) {
|
_doRemoveWindow : function(metaWin) {
|
||||||
let win = metaWin.get_compositor_private();
|
let win = metaWin.get_compositor_private();
|
||||||
|
|
||||||
// find the position of the window in our list
|
// find the position of the window in our list
|
||||||
@ -248,12 +256,16 @@ WorkspaceThumbnail.prototype = {
|
|||||||
if (index == -1)
|
if (index == -1)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
// Check if window still should be here
|
||||||
|
if (win && this._isMyWindow(win))
|
||||||
|
return;
|
||||||
|
|
||||||
let clone = this._windows[index];
|
let clone = this._windows[index];
|
||||||
this._windows.splice(index, 1);
|
this._windows.splice(index, 1);
|
||||||
clone.destroy();
|
clone.destroy();
|
||||||
},
|
},
|
||||||
|
|
||||||
_windowAdded : function(metaWorkspace, metaWin) {
|
_doAddWindow : function(metaWin) {
|
||||||
if (this.leavingOverview)
|
if (this.leavingOverview)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@ -265,18 +277,43 @@ WorkspaceThumbnail.prototype = {
|
|||||||
Mainloop.idle_add(Lang.bind(this,
|
Mainloop.idle_add(Lang.bind(this,
|
||||||
function () {
|
function () {
|
||||||
if (this.actor && metaWin.get_compositor_private())
|
if (this.actor && metaWin.get_compositor_private())
|
||||||
this._windowAdded(metaWorkspace, metaWin);
|
this._doAddWindow(metaWin);
|
||||||
return false;
|
return false;
|
||||||
}));
|
}));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!this._isOverviewWindow(win))
|
// We might have the window in our list already if it was on all workspaces and
|
||||||
|
// now was moved to this workspace
|
||||||
|
if (this._lookupIndex (metaWin) != -1)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!this._isMyWindow(win) || !this._isOverviewWindow(win))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
let clone = this._addWindowClone(win);
|
let clone = this._addWindowClone(win);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_windowAdded : function(metaWorkspace, metaWin) {
|
||||||
|
this._doAddWindow(metaWin);
|
||||||
|
},
|
||||||
|
|
||||||
|
_windowRemoved : function(metaWorkspace, metaWin) {
|
||||||
|
this._doRemoveWindow(metaWin);
|
||||||
|
},
|
||||||
|
|
||||||
|
_windowEnteredMonitor : function(metaScreen, monitorIndex, metaWin) {
|
||||||
|
if (monitorIndex == this.monitorIndex) {
|
||||||
|
this._doAddWindow(metaWin);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
_windowLeftMonitor : function(metaScreen, monitorIndex, metaWin) {
|
||||||
|
if (monitorIndex == this.monitorIndex) {
|
||||||
|
this._doRemoveWindow(metaWin);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
destroy : function() {
|
destroy : function() {
|
||||||
this.actor.destroy();
|
this.actor.destroy();
|
||||||
},
|
},
|
||||||
@ -284,15 +321,17 @@ WorkspaceThumbnail.prototype = {
|
|||||||
_onDestroy: function(actor) {
|
_onDestroy: function(actor) {
|
||||||
this.metaWorkspace.disconnect(this._windowAddedId);
|
this.metaWorkspace.disconnect(this._windowAddedId);
|
||||||
this.metaWorkspace.disconnect(this._windowRemovedId);
|
this.metaWorkspace.disconnect(this._windowRemovedId);
|
||||||
|
global.screen.disconnect(this._windowEnteredMonitorId);
|
||||||
|
global.screen.disconnect(this._windowLeftMonitorId);
|
||||||
|
|
||||||
this._windows = [];
|
this._windows = [];
|
||||||
this.actor = null;
|
this.actor = null;
|
||||||
},
|
},
|
||||||
|
|
||||||
// Tests if @win belongs to this workspaces
|
// Tests if @win belongs to this workspace and monitor
|
||||||
_isMyWindow : function (win) {
|
_isMyWindow : function (win) {
|
||||||
return win.get_workspace() == this.metaWorkspace.index() ||
|
return Main.isWindowActorDisplayedOnWorkspace(win, this.metaWorkspace.index()) &&
|
||||||
(win.get_meta_window() && win.get_meta_window().is_on_all_workspaces());
|
(!win.get_meta_window() || win.get_meta_window().get_monitor() == this.monitorIndex);
|
||||||
},
|
},
|
||||||
|
|
||||||
// Tests if @win should be shown in the Overview
|
// Tests if @win should be shown in the Overview
|
||||||
@ -340,6 +379,11 @@ WorkspaceThumbnail.prototype = {
|
|||||||
|
|
||||||
// Draggable target interface
|
// Draggable target interface
|
||||||
handleDragOver : function(source, actor, x, y, time) {
|
handleDragOver : function(source, actor, x, y, time) {
|
||||||
|
if (source == Main.xdndHandler) {
|
||||||
|
this.metaWorkspace.activate(time);
|
||||||
|
return DND.DragMotionResult.CONTINUE;
|
||||||
|
}
|
||||||
|
|
||||||
if (this.state > ThumbnailState.NORMAL)
|
if (this.state > ThumbnailState.NORMAL)
|
||||||
return DND.DragMotionResult.CONTINUE;
|
return DND.DragMotionResult.CONTINUE;
|
||||||
|
|
||||||
@ -361,6 +405,13 @@ WorkspaceThumbnail.prototype = {
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
let metaWindow = win.get_meta_window();
|
let metaWindow = win.get_meta_window();
|
||||||
|
|
||||||
|
// We need to move the window before changing the workspace, because
|
||||||
|
// the move itself could cause a workspace change if the window enters
|
||||||
|
// the primary monitor
|
||||||
|
if (metaWindow.get_monitor() != this.monitorIndex)
|
||||||
|
metaWindow.move_to_monitor(this.monitorIndex);
|
||||||
|
|
||||||
metaWindow.change_workspace_by_index(this.metaWorkspace.index(),
|
metaWindow.change_workspace_by_index(this.metaWorkspace.index(),
|
||||||
false, // don't create workspace
|
false, // don't create workspace
|
||||||
time);
|
time);
|
||||||
@ -442,11 +493,12 @@ ThumbnailsBox.prototype = {
|
|||||||
|
|
||||||
// The "porthole" is the portion of the screen that we show in the workspaces
|
// The "porthole" is the portion of the screen that we show in the workspaces
|
||||||
let panelHeight = Main.panel.actor.height;
|
let panelHeight = Main.panel.actor.height;
|
||||||
|
let monitor = global.get_primary_monitor();
|
||||||
this._porthole = {
|
this._porthole = {
|
||||||
x: 0,
|
x: monitor.x,
|
||||||
y: panelHeight,
|
y: monitor.y + panelHeight,
|
||||||
width: global.screen_width,
|
width: monitor.width,
|
||||||
height: global.screen_height - panelHeight
|
height: monitor.height - panelHeight
|
||||||
};
|
};
|
||||||
|
|
||||||
this.addThumbnails(0, global.screen.n_workspaces);
|
this.addThumbnails(0, global.screen.n_workspaces);
|
||||||
|
@ -51,6 +51,7 @@ WorkspacesView.prototype = {
|
|||||||
this._height = 0;
|
this._height = 0;
|
||||||
this._x = 0;
|
this._x = 0;
|
||||||
this._y = 0;
|
this._y = 0;
|
||||||
|
this._workspaceRatioSpacing = 0;
|
||||||
this._spacing = 0;
|
this._spacing = 0;
|
||||||
this._lostWorkspaces = [];
|
this._lostWorkspaces = [];
|
||||||
this._animating = false; // tweening
|
this._animating = false; // tweening
|
||||||
@ -67,6 +68,18 @@ WorkspacesView.prototype = {
|
|||||||
this._workspaces[w].actor.reparent(this.actor);
|
this._workspaces[w].actor.reparent(this.actor);
|
||||||
this._workspaces[activeWorkspaceIndex].actor.raise_top();
|
this._workspaces[activeWorkspaceIndex].actor.raise_top();
|
||||||
|
|
||||||
|
this._extraWorkspaces = [];
|
||||||
|
let monitors = global.get_monitors();
|
||||||
|
let m = 0;
|
||||||
|
for (let i = 0; i < monitors.length; i++) {
|
||||||
|
if (i == global.get_primary_monitor_index())
|
||||||
|
continue;
|
||||||
|
let ws = new Workspace.Workspace(null, i);
|
||||||
|
this._extraWorkspaces[m++] = ws;
|
||||||
|
ws.setGeometry(monitors[i].x, monitors[i].y, monitors[i].width, monitors[i].height);
|
||||||
|
global.overlay_group.add_actor(ws.actor);
|
||||||
|
}
|
||||||
|
|
||||||
// Position/scale the desktop windows and their children after the
|
// Position/scale the desktop windows and their children after the
|
||||||
// workspaces have been created. This cannot be done first because
|
// workspaces have been created. This cannot be done first because
|
||||||
// window movement depends on the Workspaces object being accessible
|
// window movement depends on the Workspaces object being accessible
|
||||||
@ -76,6 +89,8 @@ WorkspacesView.prototype = {
|
|||||||
Lang.bind(this, function() {
|
Lang.bind(this, function() {
|
||||||
for (let w = 0; w < this._workspaces.length; w++)
|
for (let w = 0; w < this._workspaces.length; w++)
|
||||||
this._workspaces[w].zoomToOverview();
|
this._workspaces[w].zoomToOverview();
|
||||||
|
for (let w = 0; w < this._extraWorkspaces.length; w++)
|
||||||
|
this._extraWorkspaces[w].zoomToOverview();
|
||||||
}));
|
}));
|
||||||
this._overviewShownId =
|
this._overviewShownId =
|
||||||
Main.overview.connect('shown',
|
Main.overview.connect('shown',
|
||||||
@ -110,7 +125,7 @@ WorkspacesView.prototype = {
|
|||||||
this._swipeScrollEndId = 0;
|
this._swipeScrollEndId = 0;
|
||||||
},
|
},
|
||||||
|
|
||||||
setGeometry: function(x, y, width, height) {
|
setGeometry: function(x, y, width, height, spacing) {
|
||||||
if (this._x == x && this._y == y &&
|
if (this._x == x && this._y == y &&
|
||||||
this._width == width && this._height == height)
|
this._width == width && this._height == height)
|
||||||
return;
|
return;
|
||||||
@ -118,6 +133,7 @@ WorkspacesView.prototype = {
|
|||||||
this._height = height;
|
this._height = height;
|
||||||
this._x = x;
|
this._x = x;
|
||||||
this._y = y;
|
this._y = y;
|
||||||
|
this._workspaceRatioSpacing = spacing;
|
||||||
|
|
||||||
for (let i = 0; i < this._workspaces.length; i++)
|
for (let i = 0; i < this._workspaces.length; i++)
|
||||||
this._workspaces[i].setGeometry(x, y, width, height);
|
this._workspaces[i].setGeometry(x, y, width, height);
|
||||||
@ -146,6 +162,8 @@ WorkspacesView.prototype = {
|
|||||||
|
|
||||||
for (let w = 0; w < this._workspaces.length; w++)
|
for (let w = 0; w < this._workspaces.length; w++)
|
||||||
this._workspaces[w].zoomFromOverview();
|
this._workspaces[w].zoomFromOverview();
|
||||||
|
for (let w = 0; w < this._extraWorkspaces.length; w++)
|
||||||
|
this._extraWorkspaces[w].zoomFromOverview();
|
||||||
},
|
},
|
||||||
|
|
||||||
destroy: function() {
|
destroy: function() {
|
||||||
@ -155,6 +173,8 @@ WorkspacesView.prototype = {
|
|||||||
syncStacking: function(stackIndices) {
|
syncStacking: function(stackIndices) {
|
||||||
for (let i = 0; i < this._workspaces.length; i++)
|
for (let i = 0; i < this._workspaces.length; i++)
|
||||||
this._workspaces[i].syncStacking(stackIndices);
|
this._workspaces[i].syncStacking(stackIndices);
|
||||||
|
for (let i = 0; i < this._extraWorkspaces.length; i++)
|
||||||
|
this._extraWorkspaces[i].syncStacking(stackIndices);
|
||||||
},
|
},
|
||||||
|
|
||||||
updateWindowPositions: function() {
|
updateWindowPositions: function() {
|
||||||
@ -182,7 +202,7 @@ WorkspacesView.prototype = {
|
|||||||
Tweener.removeTweens(workspace.actor);
|
Tweener.removeTweens(workspace.actor);
|
||||||
|
|
||||||
let opacity = (this._inDrag && w != active) ? 200 : 255;
|
let opacity = (this._inDrag && w != active) ? 200 : 255;
|
||||||
let y = (w - active) * (this._height + this._spacing);
|
let y = (w - active) * (this._height + this._spacing + this._workspaceRatioSpacing);
|
||||||
|
|
||||||
if (showAnimation) {
|
if (showAnimation) {
|
||||||
let params = { y: y,
|
let params = { y: y,
|
||||||
@ -315,6 +335,8 @@ WorkspacesView.prototype = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
_onDestroy: function() {
|
_onDestroy: function() {
|
||||||
|
for (let i = 0; i < this._extraWorkspaces.length; i++)
|
||||||
|
this._extraWorkspaces[i].destroy();
|
||||||
this._scrollAdjustment.run_dispose();
|
this._scrollAdjustment.run_dispose();
|
||||||
Main.overview.disconnect(this._overviewShowingId);
|
Main.overview.disconnect(this._overviewShowingId);
|
||||||
Main.overview.disconnect(this._overviewShownId);
|
Main.overview.disconnect(this._overviewShownId);
|
||||||
@ -365,6 +387,7 @@ WorkspacesView.prototype = {
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
this._inDrag = true;
|
this._inDrag = true;
|
||||||
|
this._firstDragMotion = true;
|
||||||
|
|
||||||
this._dragMonitor = {
|
this._dragMonitor = {
|
||||||
dragMotion: Lang.bind(this, this._onDragMotion)
|
dragMotion: Lang.bind(this, this._onDragMotion)
|
||||||
@ -376,6 +399,14 @@ WorkspacesView.prototype = {
|
|||||||
if (Main.overview.animationInProgress)
|
if (Main.overview.animationInProgress)
|
||||||
return DND.DragMotionResult.CONTINUE;
|
return DND.DragMotionResult.CONTINUE;
|
||||||
|
|
||||||
|
if (this._firstDragMotion) {
|
||||||
|
this._firstDragMotion = false;
|
||||||
|
for (let i = 0; i < this._workspaces.length; i++)
|
||||||
|
this._workspaces[i].setReservedSlot(dragEvent.dragActor._delegate);
|
||||||
|
for (let i = 0; i < this._extraWorkspaces.length; i++)
|
||||||
|
this._extraWorkspaces[i].setReservedSlot(dragEvent.dragActor._delegate);
|
||||||
|
}
|
||||||
|
|
||||||
let primary = global.get_primary_monitor();
|
let primary = global.get_primary_monitor();
|
||||||
|
|
||||||
let activeWorkspaceIndex = global.screen.get_active_workspace_index();
|
let activeWorkspaceIndex = global.screen.get_active_workspace_index();
|
||||||
@ -389,7 +420,6 @@ WorkspacesView.prototype = {
|
|||||||
let switchTop = (dragEvent.y <= topEdge && topWorkspace);
|
let switchTop = (dragEvent.y <= topEdge && topWorkspace);
|
||||||
if (switchTop && this._dragOverLastY != topEdge) {
|
if (switchTop && this._dragOverLastY != topEdge) {
|
||||||
topWorkspace.metaWorkspace.activate(global.get_current_time());
|
topWorkspace.metaWorkspace.activate(global.get_current_time());
|
||||||
topWorkspace.setReservedSlot(dragEvent.dragActor._delegate);
|
|
||||||
this._dragOverLastY = topEdge;
|
this._dragOverLastY = topEdge;
|
||||||
|
|
||||||
return DND.DragMotionResult.CONTINUE;
|
return DND.DragMotionResult.CONTINUE;
|
||||||
@ -398,7 +428,6 @@ WorkspacesView.prototype = {
|
|||||||
let switchBottom = (dragEvent.y >= bottomEdge && bottomWorkspace);
|
let switchBottom = (dragEvent.y >= bottomEdge && bottomWorkspace);
|
||||||
if (switchBottom && this._dragOverLastY != bottomEdge) {
|
if (switchBottom && this._dragOverLastY != bottomEdge) {
|
||||||
bottomWorkspace.metaWorkspace.activate(global.get_current_time());
|
bottomWorkspace.metaWorkspace.activate(global.get_current_time());
|
||||||
bottomWorkspace.setReservedSlot(dragEvent.dragActor._delegate);
|
|
||||||
this._dragOverLastY = bottomEdge;
|
this._dragOverLastY = bottomEdge;
|
||||||
|
|
||||||
return DND.DragMotionResult.CONTINUE;
|
return DND.DragMotionResult.CONTINUE;
|
||||||
@ -433,7 +462,6 @@ WorkspacesView.prototype = {
|
|||||||
this._timeoutId = Mainloop.timeout_add_seconds(1,
|
this._timeoutId = Mainloop.timeout_add_seconds(1,
|
||||||
Lang.bind(this, function() {
|
Lang.bind(this, function() {
|
||||||
hoverWorkspace.metaWorkspace.activate(global.get_current_time());
|
hoverWorkspace.metaWorkspace.activate(global.get_current_time());
|
||||||
hoverWorkspace.setReservedSlot(dragEvent.dragActor._delegate);
|
|
||||||
return false;
|
return false;
|
||||||
}));
|
}));
|
||||||
} else {
|
} else {
|
||||||
@ -456,6 +484,8 @@ WorkspacesView.prototype = {
|
|||||||
|
|
||||||
for (let i = 0; i < this._workspaces.length; i++)
|
for (let i = 0; i < this._workspaces.length; i++)
|
||||||
this._workspaces[i].setReservedSlot(null);
|
this._workspaces[i].setReservedSlot(null);
|
||||||
|
for (let i = 0; i < this._extraWorkspaces.length; i++)
|
||||||
|
this._extraWorkspaces[i].setReservedSlot(null);
|
||||||
},
|
},
|
||||||
|
|
||||||
_swipeScrollBegin: function() {
|
_swipeScrollBegin: function() {
|
||||||
@ -534,6 +564,7 @@ WorkspacesDisplay.prototype = {
|
|||||||
this.actor.connect('get-preferred-width', Lang.bind(this, this._getPreferredWidth));
|
this.actor.connect('get-preferred-width', Lang.bind(this, this._getPreferredWidth));
|
||||||
this.actor.connect('get-preferred-height', Lang.bind(this, this._getPreferredHeight));
|
this.actor.connect('get-preferred-height', Lang.bind(this, this._getPreferredHeight));
|
||||||
this.actor.connect('allocate', Lang.bind(this, this._allocate));
|
this.actor.connect('allocate', Lang.bind(this, this._allocate));
|
||||||
|
this.actor.set_clip_to_allocation(true);
|
||||||
|
|
||||||
let controls = new St.Bin({ style_class: 'workspace-controls',
|
let controls = new St.Bin({ style_class: 'workspace-controls',
|
||||||
request_mode: Clutter.RequestMode.WIDTH_FOR_HEIGHT,
|
request_mode: Clutter.RequestMode.WIDTH_FOR_HEIGHT,
|
||||||
@ -549,6 +580,8 @@ WorkspacesDisplay.prototype = {
|
|||||||
controls.connect('scroll-event',
|
controls.connect('scroll-event',
|
||||||
Lang.bind(this, this._onScrollEvent));
|
Lang.bind(this, this._onScrollEvent));
|
||||||
|
|
||||||
|
this._monitorIndex = global.get_primary_monitor_index();
|
||||||
|
this._monitor = global.get_monitors()[this._monitorIndex];
|
||||||
|
|
||||||
this._thumbnailsBox = new WorkspaceThumbnail.ThumbnailsBox();
|
this._thumbnailsBox = new WorkspaceThumbnail.ThumbnailsBox();
|
||||||
controls.add_actor(this._thumbnailsBox.actor);
|
controls.add_actor(this._thumbnailsBox.actor);
|
||||||
@ -557,13 +590,28 @@ WorkspacesDisplay.prototype = {
|
|||||||
|
|
||||||
this._inDrag = false;
|
this._inDrag = false;
|
||||||
this._cancelledDrag = false;
|
this._cancelledDrag = false;
|
||||||
|
|
||||||
|
this._alwaysZoomOut = false;
|
||||||
this._zoomOut = false;
|
this._zoomOut = false;
|
||||||
this._zoomFraction = 0;
|
this._zoomFraction = 0;
|
||||||
|
|
||||||
|
this._updateAlwaysZoom();
|
||||||
|
|
||||||
|
global.screen.connect('monitors-changed', Lang.bind(this, this._updateAlwaysZoom));
|
||||||
|
Main.xdndHandler.connect('drag-begin', Lang.bind(this, function(){
|
||||||
|
this._alwaysZoomOut = true;
|
||||||
|
}));
|
||||||
|
|
||||||
|
Main.xdndHandler.connect('drag-end', Lang.bind(this, function(){
|
||||||
|
this._alwaysZoomOut = false;
|
||||||
|
this._updateAlwaysZoom();
|
||||||
|
}));
|
||||||
|
|
||||||
this._nWorkspacesNotifyId = 0;
|
this._nWorkspacesNotifyId = 0;
|
||||||
this._switchWorkspaceNotifyId = 0;
|
this._switchWorkspaceNotifyId = 0;
|
||||||
|
|
||||||
this._itemDragBeginId = 0;
|
this._itemDragBeginId = 0;
|
||||||
|
this._itemDragCancelledId = 0;
|
||||||
this._itemDragEndId = 0;
|
this._itemDragEndId = 0;
|
||||||
this._windowDragBeginId = 0;
|
this._windowDragBeginId = 0;
|
||||||
this._windowDragCancelledId = 0;
|
this._windowDragCancelledId = 0;
|
||||||
@ -571,13 +619,17 @@ WorkspacesDisplay.prototype = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
show: function() {
|
show: function() {
|
||||||
|
this._zoomOut = this._alwaysZoomOut;
|
||||||
|
this._zoomFraction = this._alwaysZoomOut ? 1 : 0;
|
||||||
|
this._updateZoom();
|
||||||
|
|
||||||
this._controls.show();
|
this._controls.show();
|
||||||
this._thumbnailsBox.show();
|
this._thumbnailsBox.show();
|
||||||
|
|
||||||
this._workspaces = [];
|
this._workspaces = [];
|
||||||
for (let i = 0; i < global.screen.n_workspaces; i++) {
|
for (let i = 0; i < global.screen.n_workspaces; i++) {
|
||||||
let metaWorkspace = global.screen.get_workspace_by_index(i);
|
let metaWorkspace = global.screen.get_workspace_by_index(i);
|
||||||
this._workspaces[i] = new Workspace.Workspace(metaWorkspace);
|
this._workspaces[i] = new Workspace.Workspace(metaWorkspace, this._monitorIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.workspacesView)
|
if (this.workspacesView)
|
||||||
@ -596,6 +648,9 @@ WorkspacesDisplay.prototype = {
|
|||||||
if (this._itemDragBeginId == 0)
|
if (this._itemDragBeginId == 0)
|
||||||
this._itemDragBeginId = Main.overview.connect('item-drag-begin',
|
this._itemDragBeginId = Main.overview.connect('item-drag-begin',
|
||||||
Lang.bind(this, this._dragBegin));
|
Lang.bind(this, this._dragBegin));
|
||||||
|
if (this._itemDragCancelledId == 0)
|
||||||
|
this._itemDragCancelledId = Main.overview.connect('item-drag-cancelled',
|
||||||
|
Lang.bind(this, this._dragCancelled));
|
||||||
if (this._itemDragEndId == 0)
|
if (this._itemDragEndId == 0)
|
||||||
this._itemDragEndId = Main.overview.connect('item-drag-end',
|
this._itemDragEndId = Main.overview.connect('item-drag-end',
|
||||||
Lang.bind(this, this._dragEnd));
|
Lang.bind(this, this._dragEnd));
|
||||||
@ -610,9 +665,6 @@ WorkspacesDisplay.prototype = {
|
|||||||
Lang.bind(this, this._dragEnd));
|
Lang.bind(this, this._dragEnd));
|
||||||
|
|
||||||
this._onRestacked();
|
this._onRestacked();
|
||||||
this._zoomOut = false;
|
|
||||||
this._zoomFraction = 0;
|
|
||||||
this._updateZoom();
|
|
||||||
},
|
},
|
||||||
|
|
||||||
hide: function() {
|
hide: function() {
|
||||||
@ -631,7 +683,11 @@ WorkspacesDisplay.prototype = {
|
|||||||
Main.overview.disconnect(this._itemDragBeginId);
|
Main.overview.disconnect(this._itemDragBeginId);
|
||||||
this._itemDragBeginId = 0;
|
this._itemDragBeginId = 0;
|
||||||
}
|
}
|
||||||
if (this._itemEndBeginId > 0) {
|
if (this._itemDragCancelledId > 0) {
|
||||||
|
Main.overview.disconnect(this._itemDragCancelledId);
|
||||||
|
this._itemDragCancelledId = 0;
|
||||||
|
}
|
||||||
|
if (this._itemDragEndId > 0) {
|
||||||
Main.overview.disconnect(this._itemDragEndId);
|
Main.overview.disconnect(this._itemDragEndId);
|
||||||
this._itemDragEndId = 0;
|
this._itemDragEndId = 0;
|
||||||
}
|
}
|
||||||
@ -666,6 +722,23 @@ WorkspacesDisplay.prototype = {
|
|||||||
return this._zoomFraction;
|
return this._zoomFraction;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_updateAlwaysZoom: function() {
|
||||||
|
this._alwaysZoomOut = false;
|
||||||
|
|
||||||
|
let monitors = global.get_monitors();
|
||||||
|
let primary = global.get_primary_monitor();
|
||||||
|
|
||||||
|
/* Look for any monitor to the right of the primary, if there is
|
||||||
|
* one, we always keep zoom out, otherwise its hard to reach
|
||||||
|
* the thumbnail area without passing into the next monitor. */
|
||||||
|
for (let i = 0; i < monitors.length; i++) {
|
||||||
|
if (monitors[i].x >= primary.x + primary.width) {
|
||||||
|
this._alwaysZoomOut = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
_getPreferredWidth: function (actor, forHeight, alloc) {
|
_getPreferredWidth: function (actor, forHeight, alloc) {
|
||||||
// pass through the call in case the child needs it, but report 0x0
|
// pass through the call in case the child needs it, but report 0x0
|
||||||
this._controls.get_preferred_width(forHeight);
|
this._controls.get_preferred_width(forHeight);
|
||||||
@ -708,8 +781,11 @@ WorkspacesDisplay.prototype = {
|
|||||||
if (!this.workspacesView)
|
if (!this.workspacesView)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
let width = this.actor.allocation.x2 - this.actor.allocation.x1;
|
let fullWidth = this.actor.allocation.x2 - this.actor.allocation.x1;
|
||||||
let height = this.actor.allocation.y2 - this.actor.allocation.y1;
|
let fullHeight = this.actor.allocation.y2 - this.actor.allocation.y1;
|
||||||
|
|
||||||
|
let width = fullWidth;
|
||||||
|
let height = fullHeight;
|
||||||
|
|
||||||
let [controlsMin, controlsNatural] = this._controls.get_preferred_width(height);
|
let [controlsMin, controlsNatural] = this._controls.get_preferred_width(height);
|
||||||
let controlsVisible = this._controls.get_theme_node().get_length('visible-width');
|
let controlsVisible = this._controls.get_theme_node().get_length('visible-width');
|
||||||
@ -728,7 +804,11 @@ WorkspacesDisplay.prototype = {
|
|||||||
x += controlsVisible;
|
x += controlsVisible;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.workspacesView.setGeometry(x, y, width, height);
|
height = (fullHeight / fullWidth) * width;
|
||||||
|
let difference = fullHeight - height;
|
||||||
|
y += difference / 2;
|
||||||
|
|
||||||
|
this.workspacesView.setGeometry(x, y, width, height, difference);
|
||||||
},
|
},
|
||||||
|
|
||||||
_onRestacked: function() {
|
_onRestacked: function() {
|
||||||
@ -757,7 +837,7 @@ WorkspacesDisplay.prototype = {
|
|||||||
// Assume workspaces are only added at the end
|
// Assume workspaces are only added at the end
|
||||||
for (let w = oldNumWorkspaces; w < newNumWorkspaces; w++) {
|
for (let w = oldNumWorkspaces; w < newNumWorkspaces; w++) {
|
||||||
let metaWorkspace = global.screen.get_workspace_by_index(w);
|
let metaWorkspace = global.screen.get_workspace_by_index(w);
|
||||||
this._workspaces[w] = new Workspace.Workspace(metaWorkspace);
|
this._workspaces[w] = new Workspace.Workspace(metaWorkspace, this._monitorIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
this._thumbnailsBox.addThumbnails(oldNumWorkspaces, newNumWorkspaces - oldNumWorkspaces);
|
this._thumbnailsBox.addThumbnails(oldNumWorkspaces, newNumWorkspaces - oldNumWorkspaces);
|
||||||
@ -794,7 +874,7 @@ WorkspacesDisplay.prototype = {
|
|||||||
if (Main.overview.animationInProgress)
|
if (Main.overview.animationInProgress)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
let shouldZoom = this._controls.hover || (this._inDrag && !this._cancelledDrag);
|
let shouldZoom = this._alwaysZoomOut || this._controls.hover || (this._inDrag && !this._cancelledDrag);
|
||||||
if (shouldZoom != this._zoomOut) {
|
if (shouldZoom != this._zoomOut) {
|
||||||
this._zoomOut = shouldZoom;
|
this._zoomOut = shouldZoom;
|
||||||
this._updateWorkspacesGeometry();
|
this._updateWorkspacesGeometry();
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
af
|
af
|
||||||
ar
|
ar
|
||||||
bg
|
bg
|
||||||
|
bn_IN
|
||||||
ca
|
ca
|
||||||
cs
|
cs
|
||||||
da
|
da
|
||||||
@ -23,6 +24,7 @@ ja
|
|||||||
ko
|
ko
|
||||||
kn
|
kn
|
||||||
lt
|
lt
|
||||||
|
lv
|
||||||
nb
|
nb
|
||||||
nl
|
nl
|
||||||
nn
|
nn
|
||||||
|
@ -13,6 +13,7 @@ js/ui/messageTray.js
|
|||||||
js/ui/overview.js
|
js/ui/overview.js
|
||||||
js/ui/panel.js
|
js/ui/panel.js
|
||||||
js/ui/placeDisplay.js
|
js/ui/placeDisplay.js
|
||||||
|
js/ui/polkitAuthenticationAgent.js
|
||||||
js/ui/popupMenu.js
|
js/ui/popupMenu.js
|
||||||
js/ui/runDialog.js
|
js/ui/runDialog.js
|
||||||
js/ui/searchDisplay.js
|
js/ui/searchDisplay.js
|
||||||
@ -20,6 +21,7 @@ js/ui/statusMenu.js
|
|||||||
js/ui/status/accessibility.js
|
js/ui/status/accessibility.js
|
||||||
js/ui/status/bluetooth.js
|
js/ui/status/bluetooth.js
|
||||||
js/ui/status/keyboard.js
|
js/ui/status/keyboard.js
|
||||||
|
js/ui/status/network.js
|
||||||
js/ui/status/power.js
|
js/ui/status/power.js
|
||||||
js/ui/status/volume.js
|
js/ui/status/volume.js
|
||||||
js/ui/telepathyClient.js
|
js/ui/telepathyClient.js
|
||||||
@ -29,8 +31,10 @@ js/ui/workspacesView.js
|
|||||||
src/gvc/gvc-mixer-control.c
|
src/gvc/gvc-mixer-control.c
|
||||||
src/gdmuser/gdm-user.c
|
src/gdmuser/gdm-user.c
|
||||||
src/main.c
|
src/main.c
|
||||||
|
src/shell-app.c
|
||||||
src/shell-app-system.c
|
src/shell-app-system.c
|
||||||
src/shell-global.c
|
src/shell-global.c
|
||||||
|
src/shell-mobile-providers.c
|
||||||
src/shell-polkit-authentication-agent.c
|
src/shell-polkit-authentication-agent.c
|
||||||
src/shell-util.c
|
src/shell-util.c
|
||||||
|
|
||||||
|
434
po/ar.po
434
po/ar.po
@ -6,8 +6,8 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: HEAD\n"
|
"Project-Id-Version: HEAD\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2011-03-09 01:12+0200\n"
|
"POT-Creation-Date: 2011-03-22 20:58+0200\n"
|
||||||
"PO-Revision-Date: 2011-03-09 01:12+0300\n"
|
"PO-Revision-Date: 2011-03-22 20:58+0300\n"
|
||||||
"Last-Translator: Khaled Hosny <khaledhosny@eglug.org>\n"
|
"Last-Translator: Khaled Hosny <khaledhosny@eglug.org>\n"
|
||||||
"Language-Team: Arabic <doc@arabeyes.org>\n"
|
"Language-Team: Arabic <doc@arabeyes.org>\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
@ -144,47 +144,43 @@ msgstr ""
|
|||||||
msgid "disabled OpenSearch providers"
|
msgid "disabled OpenSearch providers"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../js/misc/util.js:86
|
#: ../js/misc/util.js:71
|
||||||
msgid "Command not found"
|
msgid "Command not found"
|
||||||
msgstr "لم يُعثَر على الأمر"
|
msgstr "لم يُعثَر على الأمر"
|
||||||
|
|
||||||
#. Replace "Error invoking GLib.shell_parse_argv: " with
|
#. Replace "Error invoking GLib.shell_parse_argv: " with
|
||||||
#. something nicer
|
#. something nicer
|
||||||
#: ../js/misc/util.js:113
|
#: ../js/misc/util.js:98
|
||||||
msgid "Could not parse command:"
|
msgid "Could not parse command:"
|
||||||
msgstr "تعذّر تحليل الأمر:"
|
msgstr "تعذّر تحليل الأمر:"
|
||||||
|
|
||||||
#: ../js/misc/util.js:135
|
#: ../js/misc/util.js:106
|
||||||
msgid "No such application"
|
|
||||||
msgstr "لا تطبيق بهذا الاسم"
|
|
||||||
|
|
||||||
#: ../js/misc/util.js:148
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Execution of '%s' failed:"
|
msgid "Execution of '%s' failed:"
|
||||||
msgstr "فشل تنفيذ '%s':"
|
msgstr "فشل تنفيذ '%s':"
|
||||||
|
|
||||||
#. Translators: Filter to display all applications
|
#. Translators: Filter to display all applications
|
||||||
#: ../js/ui/appDisplay.js:226
|
#: ../js/ui/appDisplay.js:230
|
||||||
msgid "All"
|
msgid "All"
|
||||||
msgstr "الكل"
|
msgstr "الكل"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:324
|
#: ../js/ui/appDisplay.js:328
|
||||||
msgid "APPLICATIONS"
|
msgid "APPLICATIONS"
|
||||||
msgstr "التطبيقات"
|
msgstr "التطبيقات"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:350
|
#: ../js/ui/appDisplay.js:354
|
||||||
msgid "SETTINGS"
|
msgid "SETTINGS"
|
||||||
msgstr "الإعدادات"
|
msgstr "الإعدادات"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:612
|
#: ../js/ui/appDisplay.js:625
|
||||||
msgid "New Window"
|
msgid "New Window"
|
||||||
msgstr "نافذة جديدة"
|
msgstr "نافذة جديدة"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:615
|
#: ../js/ui/appDisplay.js:628
|
||||||
msgid "Remove from Favorites"
|
msgid "Remove from Favorites"
|
||||||
msgstr "أزِل من المفضّلة"
|
msgstr "أزِل من المفضّلة"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:616
|
#: ../js/ui/appDisplay.js:629
|
||||||
msgid "Add to Favorites"
|
msgid "Add to Favorites"
|
||||||
msgstr "أضِف إلى المفضّلة"
|
msgstr "أضِف إلى المفضّلة"
|
||||||
|
|
||||||
@ -344,7 +340,7 @@ msgstr "هذا الأسبوع"
|
|||||||
msgid "Next week"
|
msgid "Next week"
|
||||||
msgstr "الأسبوع القادم"
|
msgstr "الأسبوع القادم"
|
||||||
|
|
||||||
#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:933
|
#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:945
|
||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "أزِل"
|
msgstr "أزِل"
|
||||||
|
|
||||||
@ -399,7 +395,7 @@ msgstr "%A %Ol:%OM %p"
|
|||||||
#. Translators: This is the date format to use when the calendar popup is
|
#. 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").
|
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
|
||||||
#.
|
#.
|
||||||
#: ../js/ui/dateMenu.js:209
|
#: ../js/ui/dateMenu.js:194
|
||||||
msgid "%A %B %e, %Y"
|
msgid "%A %B %e, %Y"
|
||||||
msgstr "%A %e %B، %Y"
|
msgstr "%A %e %B، %Y"
|
||||||
|
|
||||||
@ -412,7 +408,7 @@ msgstr "العناصر الحديثة"
|
|||||||
msgid "Log Out %s"
|
msgid "Log Out %s"
|
||||||
msgstr "اخرج%.0s"
|
msgstr "اخرج%.0s"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:69
|
#: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:70
|
||||||
msgid "Log Out"
|
msgid "Log Out"
|
||||||
msgstr "اخرج"
|
msgstr "اخرج"
|
||||||
|
|
||||||
@ -434,45 +430,42 @@ msgstr "ستُخرج تلقائيا بعد %d ثوان."
|
|||||||
msgid "Logging out of the system."
|
msgid "Logging out of the system."
|
||||||
msgstr "يخرج من النظام."
|
msgstr "يخرج من النظام."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:74 ../js/ui/endSessionDialog.js:78
|
#: ../js/ui/endSessionDialog.js:75 ../js/ui/endSessionDialog.js:82
|
||||||
msgid "Shut Down"
|
msgid "Power Off"
|
||||||
msgstr "أطفئ"
|
msgstr "أطفئ الحاسوب"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:75
|
|
||||||
msgid "Click Shut Down to quit these applications and shut down the system."
|
|
||||||
msgstr "انقر على \"أطفئ\" لغلق هذه التطبيقات وإطفاء النظام."
|
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:76
|
#: ../js/ui/endSessionDialog.js:76
|
||||||
#, c-format
|
msgid "Click Power Off to quit these applications and power off the system."
|
||||||
msgid "The system will shut down automatically in %d seconds."
|
msgstr "انقر على \"أطفئ الحاسوب\" لغلق هذه التطبيقات وإطفاء النظام."
|
||||||
msgstr "سيُطفأ النظام تلقائيا خلال %d ثوان."
|
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:77
|
#: ../js/ui/endSessionDialog.js:77
|
||||||
msgid "Shutting down the system."
|
#, c-format
|
||||||
msgstr "يُغلق النظام."
|
msgid "The system will power off automatically in %d seconds."
|
||||||
|
msgstr "سيُطفأ النظام تلقائيا خلال %d ثوان."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:84 ../js/ui/endSessionDialog.js:88
|
#: ../js/ui/endSessionDialog.js:78
|
||||||
|
msgid "Powering off the system."
|
||||||
|
msgstr "يُطفأ النظام."
|
||||||
|
|
||||||
|
#: ../js/ui/endSessionDialog.js:80 ../js/ui/endSessionDialog.js:88
|
||||||
|
#: ../js/ui/endSessionDialog.js:93
|
||||||
msgid "Restart"
|
msgid "Restart"
|
||||||
msgstr "أعِد التشغيل"
|
msgstr "أعِد التشغيل"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:85
|
#: ../js/ui/endSessionDialog.js:89
|
||||||
msgid "Click Restart to quit these applications and restart the system."
|
msgid "Click Restart to quit these applications and restart the system."
|
||||||
msgstr "انقر على \"أعِد التشغيل\" لغلق هذه التطبيقات إعادة تشغيل النظام."
|
msgstr "انقر على \"أعِد التشغيل\" لغلق هذه التطبيقات إعادة تشغيل النظام."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:86
|
#: ../js/ui/endSessionDialog.js:90
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "The system will restart automatically in %d seconds."
|
msgid "The system will restart automatically in %d seconds."
|
||||||
msgstr "سيُعاد تشغيل النظام تلقائيا خلال %d ثوان."
|
msgstr "سيُعاد تشغيل النظام تلقائيا خلال %d ثوان."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:87
|
#: ../js/ui/endSessionDialog.js:91
|
||||||
msgid "Restarting the system."
|
msgid "Restarting the system."
|
||||||
msgstr "يُعيد تشغيل النظام."
|
msgstr "يُعيد تشغيل النظام."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:395
|
#: ../js/ui/endSessionDialog.js:415 ../js/ui/status/bluetooth.js:466
|
||||||
msgid "Confirm"
|
|
||||||
msgstr "أكّد"
|
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:400 ../js/ui/status/bluetooth.js:470
|
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "ألغِ"
|
msgstr "ألغِ"
|
||||||
|
|
||||||
@ -486,7 +479,7 @@ msgstr "مفعّل"
|
|||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The device has been disabled
|
#. * The device has been disabled
|
||||||
#: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1087
|
#: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1091
|
||||||
msgid "Disabled"
|
msgid "Disabled"
|
||||||
msgstr "معطّل"
|
msgstr "معطّل"
|
||||||
|
|
||||||
@ -506,47 +499,47 @@ msgstr "اعرض المصدر"
|
|||||||
msgid "Web Page"
|
msgid "Web Page"
|
||||||
msgstr "صفحة الوب"
|
msgstr "صفحة الوب"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:926
|
#: ../js/ui/messageTray.js:938
|
||||||
msgid "Open"
|
msgid "Open"
|
||||||
msgstr "افتح"
|
msgstr "افتح"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1963
|
#: ../js/ui/messageTray.js:2018
|
||||||
msgid "System Information"
|
msgid "System Information"
|
||||||
msgstr "معلومات النظام"
|
msgstr "معلومات النظام"
|
||||||
|
|
||||||
#: ../js/ui/overview.js:88
|
#: ../js/ui/overview.js:89
|
||||||
msgid "Undo"
|
msgid "Undo"
|
||||||
msgstr "تراجع"
|
msgstr "تراجع"
|
||||||
|
|
||||||
#: ../js/ui/overview.js:183
|
#: ../js/ui/overview.js:184
|
||||||
msgid "Windows"
|
msgid "Windows"
|
||||||
msgstr "النوافذ"
|
msgstr "النوافذ"
|
||||||
|
|
||||||
#: ../js/ui/overview.js:186
|
#: ../js/ui/overview.js:187
|
||||||
msgid "Applications"
|
msgid "Applications"
|
||||||
msgstr "التطبيقات"
|
msgstr "التطبيقات"
|
||||||
|
|
||||||
#. Translators: this is the name of the dock/favorites area on
|
#. Translators: this is the name of the dock/favorites area on
|
||||||
#. the left of the overview
|
#. the left of the overview
|
||||||
#: ../js/ui/overview.js:202
|
#: ../js/ui/overview.js:203
|
||||||
msgid "Dash"
|
msgid "Dash"
|
||||||
msgstr "الشريط"
|
msgstr "الشريط"
|
||||||
|
|
||||||
#. TODO - _quit() doesn't really work on apps in state STARTING yet
|
#. TODO - _quit() doesn't really work on apps in state STARTING yet
|
||||||
#: ../js/ui/panel.js:560
|
#: ../js/ui/panel.js:515
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Quit %s"
|
msgid "Quit %s"
|
||||||
msgstr "أغلق %s"
|
msgstr "أغلق %s"
|
||||||
|
|
||||||
#. Button on the left side of the panel.
|
#. Button on the left side of the panel.
|
||||||
#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
|
#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
|
||||||
#: ../js/ui/panel.js:919
|
#: ../js/ui/panel.js:878
|
||||||
msgid "Activities"
|
msgid "Activities"
|
||||||
msgstr "الأنشطة"
|
msgstr "الأنشطة"
|
||||||
|
|
||||||
#: ../js/ui/panel.js:1020
|
#: ../js/ui/panel.js:979
|
||||||
msgid "Panel"
|
msgid "Top Bar"
|
||||||
msgstr "اللوحة"
|
msgstr "الشريط العلوي"
|
||||||
|
|
||||||
#: ../js/ui/placeDisplay.js:122
|
#: ../js/ui/placeDisplay.js:122
|
||||||
#, c-format
|
#, c-format
|
||||||
@ -561,7 +554,7 @@ msgstr "أعد المحاولة"
|
|||||||
msgid "Connect to..."
|
msgid "Connect to..."
|
||||||
msgstr "اتّصل ب..."
|
msgstr "اتّصل ب..."
|
||||||
|
|
||||||
#: ../js/ui/placeDisplay.js:409
|
#: ../js/ui/placeDisplay.js:380
|
||||||
msgid "PLACES & DEVICES"
|
msgid "PLACES & DEVICES"
|
||||||
msgstr "الأماكن والأجهزة"
|
msgstr "الأماكن والأجهزة"
|
||||||
|
|
||||||
@ -570,55 +563,55 @@ msgstr "الأماكن والأجهزة"
|
|||||||
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
||||||
#. switches containing "◯" and "|"). Other values will
|
#. switches containing "◯" and "|"). Other values will
|
||||||
#. simply result in invisible toggle switches.
|
#. simply result in invisible toggle switches.
|
||||||
#: ../js/ui/popupMenu.js:618
|
#: ../js/ui/popupMenu.js:679
|
||||||
msgid "toggle-switch-us"
|
msgid "toggle-switch-us"
|
||||||
msgstr "toggle-switch-intl"
|
msgstr "toggle-switch-intl"
|
||||||
|
|
||||||
#: ../js/ui/runDialog.js:201
|
#: ../js/ui/runDialog.js:205
|
||||||
msgid "Please enter a command:"
|
msgid "Please enter a command:"
|
||||||
msgstr "من فضلك اكتب أمرا:"
|
msgstr "من فضلك اكتب أمرا:"
|
||||||
|
|
||||||
#: ../js/ui/searchDisplay.js:283
|
#: ../js/ui/searchDisplay.js:310
|
||||||
msgid "Searching..."
|
msgid "Searching..."
|
||||||
msgstr "يبحث..."
|
msgstr "يبحث..."
|
||||||
|
|
||||||
#: ../js/ui/searchDisplay.js:297
|
#: ../js/ui/searchDisplay.js:324
|
||||||
msgid "No matching results."
|
msgid "No matching results."
|
||||||
msgstr "لا نتائج مطابقة."
|
msgstr "لا نتائج مطابقة."
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:102 ../js/ui/statusMenu.js:166
|
#: ../js/ui/statusMenu.js:161 ../js/ui/statusMenu.js:228
|
||||||
msgid "Power Off..."
|
msgid "Power Off..."
|
||||||
msgstr "أطفئ..."
|
msgstr "أطفئ..."
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:104 ../js/ui/statusMenu.js:165
|
#: ../js/ui/statusMenu.js:163 ../js/ui/statusMenu.js:227
|
||||||
msgid "Suspend"
|
msgid "Suspend"
|
||||||
msgstr "علّق"
|
msgstr "علّق"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:125
|
#: ../js/ui/statusMenu.js:184
|
||||||
msgid "Available"
|
msgid "Available"
|
||||||
msgstr "متاح"
|
msgstr "متاح"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:130
|
#: ../js/ui/statusMenu.js:189
|
||||||
msgid "Busy"
|
msgid "Busy"
|
||||||
msgstr "مشغول"
|
msgstr "مشغول"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:138
|
#: ../js/ui/statusMenu.js:197
|
||||||
msgid "My Account"
|
msgid "My Account"
|
||||||
msgstr "حسابي"
|
msgstr "حسابي"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:142
|
#: ../js/ui/statusMenu.js:201
|
||||||
msgid "System Settings"
|
msgid "System Settings"
|
||||||
msgstr "إعدادات النظام"
|
msgstr "إعدادات النظام"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:149
|
#: ../js/ui/statusMenu.js:208
|
||||||
msgid "Lock Screen"
|
msgid "Lock Screen"
|
||||||
msgstr "أوصد الشاشة"
|
msgstr "أوصد الشاشة"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:153
|
#: ../js/ui/statusMenu.js:213
|
||||||
msgid "Switch User"
|
msgid "Switch User"
|
||||||
msgstr "بدّل المستخدم"
|
msgstr "بدّل المستخدم"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:158
|
#: ../js/ui/statusMenu.js:218
|
||||||
msgid "Log Out..."
|
msgid "Log Out..."
|
||||||
msgstr "اخرج..."
|
msgstr "اخرج..."
|
||||||
|
|
||||||
@ -626,14 +619,12 @@ msgstr "اخرج..."
|
|||||||
msgid "Zoom"
|
msgid "Zoom"
|
||||||
msgstr "تقريب"
|
msgstr "تقريب"
|
||||||
|
|
||||||
#: ../js/ui/status/accessibility.js:69
|
#. let screenReader = this._buildItem(_("Screen Reader"), APPLICATIONS_SCHEMA,
|
||||||
msgid "Screen Reader"
|
#. 'screen-reader-enabled');
|
||||||
msgstr "قارئ الشاشة"
|
#. this.menu.addMenuItem(screenReader);
|
||||||
|
#. let screenKeyboard = this._buildItem(_("Screen Keyboard"), APPLICATIONS_SCHEMA,
|
||||||
#: ../js/ui/status/accessibility.js:73
|
#. 'screen-keyboard-enabled');
|
||||||
msgid "Screen Keyboard"
|
#. this.menu.addMenuItem(screenKeyboard);
|
||||||
msgstr "لوحة مفاتيح على الشاشة"
|
|
||||||
|
|
||||||
#: ../js/ui/status/accessibility.js:77
|
#: ../js/ui/status/accessibility.js:77
|
||||||
msgid "Visual Alerts"
|
msgid "Visual Alerts"
|
||||||
msgstr "تنبيهات بصرية"
|
msgstr "تنبيهات بصرية"
|
||||||
@ -658,17 +649,17 @@ msgstr "مفاتيح الفأرة"
|
|||||||
msgid "Universal Access Settings"
|
msgid "Universal Access Settings"
|
||||||
msgstr "إعدادات الإتاحة"
|
msgstr "إعدادات الإتاحة"
|
||||||
|
|
||||||
#: ../js/ui/status/accessibility.js:145
|
#: ../js/ui/status/accessibility.js:146
|
||||||
msgid "High Contrast"
|
msgid "High Contrast"
|
||||||
msgstr "تباين عال"
|
msgstr "تباين عال"
|
||||||
|
|
||||||
#: ../js/ui/status/accessibility.js:182
|
#: ../js/ui/status/accessibility.js:183
|
||||||
msgid "Large Text"
|
msgid "Large Text"
|
||||||
msgstr "نص كبير"
|
msgstr "نص كبير"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:241
|
#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:237
|
||||||
#: ../js/ui/status/bluetooth.js:337 ../js/ui/status/bluetooth.js:371
|
#: ../js/ui/status/bluetooth.js:333 ../js/ui/status/bluetooth.js:367
|
||||||
#: ../js/ui/status/bluetooth.js:411 ../js/ui/status/bluetooth.js:444
|
#: ../js/ui/status/bluetooth.js:407 ../js/ui/status/bluetooth.js:440
|
||||||
msgid "Bluetooth"
|
msgid "Bluetooth"
|
||||||
msgstr "بلوتوث"
|
msgstr "بلوتوث"
|
||||||
|
|
||||||
@ -688,94 +679,94 @@ msgstr "اضبط جهازا جديدا..."
|
|||||||
msgid "Bluetooth Settings"
|
msgid "Bluetooth Settings"
|
||||||
msgstr "إعدادات بلوتوث"
|
msgstr "إعدادات بلوتوث"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:192
|
#: ../js/ui/status/bluetooth.js:188
|
||||||
msgid "Connection"
|
msgid "Connection"
|
||||||
msgstr "الاتصال"
|
msgstr "الاتصال"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:228
|
#: ../js/ui/status/bluetooth.js:224
|
||||||
msgid "Send Files..."
|
msgid "Send Files..."
|
||||||
msgstr "أرسل ملفات..."
|
msgstr "أرسل ملفات..."
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:233
|
#: ../js/ui/status/bluetooth.js:229
|
||||||
msgid "Browse Files..."
|
msgid "Browse Files..."
|
||||||
msgstr "تصفح الملفات..."
|
msgstr "تصفح الملفات..."
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:242
|
#: ../js/ui/status/bluetooth.js:238
|
||||||
msgid "Error browsing device"
|
msgid "Error browsing device"
|
||||||
msgstr "عطل أثناء تصفّح الجهاز"
|
msgstr "عطل أثناء تصفّح الجهاز"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:243
|
#: ../js/ui/status/bluetooth.js:239
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "The requested device cannot be browsed, error is '%s'"
|
msgid "The requested device cannot be browsed, error is '%s'"
|
||||||
msgstr "تعذّر تصفح الجهاز، رسالة العطل '%s'"
|
msgstr "تعذّر تصفح الجهاز، رسالة العطل '%s'"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:251
|
#: ../js/ui/status/bluetooth.js:247
|
||||||
msgid "Keyboard Settings"
|
msgid "Keyboard Settings"
|
||||||
msgstr "إعدادات لوحة المفاتيح"
|
msgstr "إعدادات لوحة المفاتيح"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:256
|
#: ../js/ui/status/bluetooth.js:252
|
||||||
msgid "Mouse Settings"
|
msgid "Mouse Settings"
|
||||||
msgstr "إعدادات الفأرة"
|
msgstr "إعدادات الفأرة"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:263 ../js/ui/status/volume.js:65
|
#: ../js/ui/status/bluetooth.js:259 ../js/ui/status/volume.js:66
|
||||||
msgid "Sound Settings"
|
msgid "Sound Settings"
|
||||||
msgstr "إعدادات الصوت"
|
msgstr "إعدادات الصوت"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:372
|
#: ../js/ui/status/bluetooth.js:368
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Authorization request from %s"
|
msgid "Authorization request from %s"
|
||||||
msgstr "طلب تخويل من %s"
|
msgstr "طلب تخويل من %s"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:378
|
#: ../js/ui/status/bluetooth.js:374
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Device %s wants access to the service '%s'"
|
msgid "Device %s wants access to the service '%s'"
|
||||||
msgstr "يريد الجهاز %s صلاحية الوصول للخدمة '%s'"
|
msgstr "يريد الجهاز %s صلاحية الوصول للخدمة '%s'"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:380
|
#: ../js/ui/status/bluetooth.js:376
|
||||||
msgid "Always grant access"
|
msgid "Always grant access"
|
||||||
msgstr "امنح الصلاحية دائما"
|
msgstr "امنح الصلاحية دائما"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:381
|
#: ../js/ui/status/bluetooth.js:377
|
||||||
msgid "Grant this time only"
|
msgid "Grant this time only"
|
||||||
msgstr "امنح هذه المرة فقط"
|
msgstr "امنح هذه المرة فقط"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:382
|
#: ../js/ui/status/bluetooth.js:378
|
||||||
msgid "Reject"
|
msgid "Reject"
|
||||||
msgstr "أخرج"
|
msgstr "أخرج"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:412
|
#: ../js/ui/status/bluetooth.js:408
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Pairing confirmation for %s"
|
msgid "Pairing confirmation for %s"
|
||||||
msgstr "تأكيد مزاوجة %s"
|
msgstr "تأكيد مزاوجة %s"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:418 ../js/ui/status/bluetooth.js:452
|
#: ../js/ui/status/bluetooth.js:414 ../js/ui/status/bluetooth.js:448
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Device %s wants to pair with this computer"
|
msgid "Device %s wants to pair with this computer"
|
||||||
msgstr "يريد الجهاز %s المزاوجة مع هذا الحاسوب"
|
msgstr "يريد الجهاز %s المزاوجة مع هذا الحاسوب"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:419
|
#: ../js/ui/status/bluetooth.js:415
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Please confirm whether the PIN '%s' matches the one on the device."
|
msgid "Please confirm whether the PIN '%s' matches the one on the device."
|
||||||
msgstr "من فضلك أكد تطابق الرقم '%s' مع الموجود على الجهاز."
|
msgstr "من فضلك أكد تطابق الرقم '%s' مع الموجود على الجهاز."
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:421
|
#: ../js/ui/status/bluetooth.js:417
|
||||||
msgid "Matches"
|
msgid "Matches"
|
||||||
msgstr "مطابقات"
|
msgstr "مطابقات"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:422
|
#: ../js/ui/status/bluetooth.js:418
|
||||||
msgid "Does not match"
|
msgid "Does not match"
|
||||||
msgstr "لا تتطابق"
|
msgstr "لا تتطابق"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:445
|
#: ../js/ui/status/bluetooth.js:441
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Pairing request for %s"
|
msgid "Pairing request for %s"
|
||||||
msgstr "طلب مزاوجة من %s"
|
msgstr "طلب مزاوجة من %s"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:453
|
#: ../js/ui/status/bluetooth.js:449
|
||||||
msgid "Please enter the PIN mentioned on the device."
|
msgid "Please enter the PIN mentioned on the device."
|
||||||
msgstr "من فضلك أدخل الرقم المذكور على الجهاز."
|
msgstr "من فضلك أدخل الرقم المذكور على الجهاز."
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:469
|
#: ../js/ui/status/bluetooth.js:465
|
||||||
msgid "OK"
|
msgid "OK"
|
||||||
msgstr "حسنا"
|
msgstr "حسنا"
|
||||||
|
|
||||||
@ -787,17 +778,147 @@ msgstr "أظهر تخطيط لوحة المفاتيح..."
|
|||||||
msgid "Localization Settings"
|
msgid "Localization Settings"
|
||||||
msgstr "إعدادات اللغة"
|
msgstr "إعدادات اللغة"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:102 ../js/ui/status/network.js:1393
|
||||||
|
msgid "<unknown>"
|
||||||
|
msgstr "<غير معروفة>"
|
||||||
|
|
||||||
|
#. Translators: this indicates that wireless or wwan is disabled by hardware killswitch
|
||||||
|
#: ../js/ui/status/network.js:295
|
||||||
|
msgid "disabled"
|
||||||
|
msgstr "مُعَطَّلة"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:476
|
||||||
|
msgid "connecting..."
|
||||||
|
msgstr "يتّصل..."
|
||||||
|
|
||||||
|
#. Translators: this is for network connections that require some kind of key or password
|
||||||
|
#: ../js/ui/status/network.js:479
|
||||||
|
msgid "authentication required"
|
||||||
|
msgstr "الاستيثاق مطلوب"
|
||||||
|
|
||||||
|
#. Translators: this is for wired network devices that are physically disconnected
|
||||||
|
#: ../js/ui/status/network.js:485
|
||||||
|
msgid "cable unplugged"
|
||||||
|
msgstr "الكبل مفصول"
|
||||||
|
|
||||||
|
#. Translators: this is for a network device that cannot be activated (for example it
|
||||||
|
#. is disabled by rfkill, or it has no coverage
|
||||||
|
#: ../js/ui/status/network.js:489
|
||||||
|
msgid "unavailable"
|
||||||
|
msgstr "غير متاح"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:491
|
||||||
|
msgid "connection failed"
|
||||||
|
msgstr "فشل الاتصال"
|
||||||
|
|
||||||
|
#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
|
||||||
|
#. and we cannot access its settings (including the name)
|
||||||
|
#: ../js/ui/status/network.js:571 ../js/ui/status/network.js:1341
|
||||||
|
msgid "Connected (private)"
|
||||||
|
msgstr "متّصل (شخصي)"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:636
|
||||||
|
msgid "Auto Ethernet"
|
||||||
|
msgstr "إيثرنت تلقائي"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:697
|
||||||
|
msgid "Auto broadband"
|
||||||
|
msgstr "نطاق عريض تلقائي"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:700
|
||||||
|
msgid "Auto dial-up"
|
||||||
|
msgstr "اتصال هاتفي تلقائي"
|
||||||
|
|
||||||
|
#. TRANSLATORS: this the automatic wireless connection name (including the network name)
|
||||||
|
#: ../js/ui/status/network.js:843 ../js/ui/status/network.js:1353
|
||||||
|
#, c-format
|
||||||
|
msgid "Auto %s"
|
||||||
|
msgstr "%s تلقائي"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:845
|
||||||
|
msgid "Auto bluetooth"
|
||||||
|
msgstr "بلوتوث تلقائي"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1355
|
||||||
|
msgid "Auto wireless"
|
||||||
|
msgstr "لاسلكي تلقائي"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1413
|
||||||
|
msgid "More..."
|
||||||
|
msgstr "المزيد..."
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1436
|
||||||
|
msgid "Enable networking"
|
||||||
|
msgstr "فعّل الشبكات"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1448
|
||||||
|
msgid "Wired"
|
||||||
|
msgstr "سلكي"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1459
|
||||||
|
msgid "Wireless"
|
||||||
|
msgstr "لاسلكي"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1469
|
||||||
|
msgid "Mobile broadband"
|
||||||
|
msgstr "شبكة هاتف محمول"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1479
|
||||||
|
msgid "VPN Connections"
|
||||||
|
msgstr "اتصال شخف"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1488
|
||||||
|
msgid "Network Settings"
|
||||||
|
msgstr "إعدادات الشّبكة"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1783
|
||||||
|
#, c-format
|
||||||
|
msgid "You're now connected to mobile broadband connection '%s'"
|
||||||
|
msgstr "صرت الآن متّصلا بشبكة الهاتف المحمول '%s'"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1787
|
||||||
|
#, c-format
|
||||||
|
msgid "You're now connected to wireless network '%s'"
|
||||||
|
msgstr "صرت الآن متّصلا بالشبكة اللاسلكية '%s'"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1791
|
||||||
|
#, c-format
|
||||||
|
msgid "You're now connected to wired network '%s'"
|
||||||
|
msgstr "صرت الآن متّصلا بالشبكة السلكية '%s'"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1795
|
||||||
|
#, c-format
|
||||||
|
msgid "You're now connected to VPN network '%s'"
|
||||||
|
msgstr "صرت الآن متّصلا بشبكة شخف '%s'"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1800
|
||||||
|
#, c-format
|
||||||
|
msgid "You're now connected to '%s'"
|
||||||
|
msgstr "صرت الآن متّصلا بشبكة '%s'"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1808
|
||||||
|
msgid "Connection established"
|
||||||
|
msgstr "تم الاتصال"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1930
|
||||||
|
msgid "Networking is disabled"
|
||||||
|
msgstr "عُطّلت الشبكات"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:2055
|
||||||
|
msgid "Network Manager"
|
||||||
|
msgstr "مدير الشبكة"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:85
|
#: ../js/ui/status/power.js:85
|
||||||
msgid "Power Settings"
|
msgid "Power Settings"
|
||||||
msgstr "إعدادات الطاقة"
|
msgstr "إعدادات الطاقة"
|
||||||
|
|
||||||
#. 0 is reported when UPower does not have enough data
|
#. 0 is reported when UPower does not have enough data
|
||||||
#. to estimate battery life
|
#. to estimate battery life
|
||||||
#: ../js/ui/status/power.js:110
|
#: ../js/ui/status/power.js:111
|
||||||
msgid "Estimating..."
|
msgid "Estimating..."
|
||||||
msgstr "يَحسِب..."
|
msgstr "يَحسِب..."
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:117
|
#: ../js/ui/status/power.js:118
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d hour remaining"
|
msgid "%d hour remaining"
|
||||||
msgid_plural "%d hours remaining"
|
msgid_plural "%d hours remaining"
|
||||||
@ -809,12 +930,12 @@ msgstr[4] "بقي %d ساعة"
|
|||||||
msgstr[5] "بقي %d ساعة"
|
msgstr[5] "بقي %d ساعة"
|
||||||
|
|
||||||
#. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining"
|
#. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining"
|
||||||
#: ../js/ui/status/power.js:120
|
#: ../js/ui/status/power.js:121
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d %s %d %s remaining"
|
msgid "%d %s %d %s remaining"
|
||||||
msgstr "بقي %d %s و %d %s"
|
msgstr "بقي %d %s و %d %s"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:122
|
#: ../js/ui/status/power.js:123
|
||||||
msgid "hour"
|
msgid "hour"
|
||||||
msgid_plural "hours"
|
msgid_plural "hours"
|
||||||
msgstr[0] "ساعة"
|
msgstr[0] "ساعة"
|
||||||
@ -824,7 +945,7 @@ msgstr[3] "ساعات"
|
|||||||
msgstr[4] "ساعة"
|
msgstr[4] "ساعة"
|
||||||
msgstr[5] "ساعة"
|
msgstr[5] "ساعة"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:122
|
#: ../js/ui/status/power.js:123
|
||||||
msgid "minute"
|
msgid "minute"
|
||||||
msgid_plural "minutes"
|
msgid_plural "minutes"
|
||||||
msgstr[0] "دقيقة"
|
msgstr[0] "دقيقة"
|
||||||
@ -834,7 +955,7 @@ msgstr[3] "دقائق"
|
|||||||
msgstr[4] "دقيقة"
|
msgstr[4] "دقيقة"
|
||||||
msgstr[5] "دقيقة"
|
msgstr[5] "دقيقة"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:125
|
#: ../js/ui/status/power.js:126
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d minute remaining"
|
msgid "%d minute remaining"
|
||||||
msgid_plural "%d minutes remaining"
|
msgid_plural "%d minutes remaining"
|
||||||
@ -845,78 +966,78 @@ msgstr[3] "بقي %d دقائق"
|
|||||||
msgstr[4] "بقي %d دقيقة"
|
msgstr[4] "بقي %d دقيقة"
|
||||||
msgstr[5] "بقي %d دقيقة"
|
msgstr[5] "بقي %d دقيقة"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:227
|
#: ../js/ui/status/power.js:228
|
||||||
msgid "AC adapter"
|
msgid "AC adapter"
|
||||||
msgstr "مقبس طاقة"
|
msgstr "مقبس طاقة"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:229
|
#: ../js/ui/status/power.js:230
|
||||||
msgid "Laptop battery"
|
msgid "Laptop battery"
|
||||||
msgstr "بطارية حاسوب محمول"
|
msgstr "بطارية حاسوب محمول"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:231
|
#: ../js/ui/status/power.js:232
|
||||||
msgid "UPS"
|
msgid "UPS"
|
||||||
msgstr "مزود طاقة لا منقطعة"
|
msgstr "مزود طاقة لا منقطعة"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:233
|
#: ../js/ui/status/power.js:234
|
||||||
msgid "Monitor"
|
msgid "Monitor"
|
||||||
msgstr "شاشة"
|
msgstr "شاشة"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:235
|
#: ../js/ui/status/power.js:236
|
||||||
msgid "Mouse"
|
msgid "Mouse"
|
||||||
msgstr "فأرة"
|
msgstr "فأرة"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:237
|
#: ../js/ui/status/power.js:238
|
||||||
msgid "Keyboard"
|
msgid "Keyboard"
|
||||||
msgstr "لوحة المفاتيح"
|
msgstr "لوحة المفاتيح"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:239
|
#: ../js/ui/status/power.js:240
|
||||||
msgid "PDA"
|
msgid "PDA"
|
||||||
msgstr "مساعد رقمي"
|
msgstr "مساعد رقمي"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:241
|
#: ../js/ui/status/power.js:242
|
||||||
msgid "Cell phone"
|
msgid "Cell phone"
|
||||||
msgstr "هاتف محمول"
|
msgstr "هاتف محمول"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:243
|
#: ../js/ui/status/power.js:244
|
||||||
msgid "Media player"
|
msgid "Media player"
|
||||||
msgstr "مشغل وسائط"
|
msgstr "مشغل وسائط"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:245
|
#: ../js/ui/status/power.js:246
|
||||||
msgid "Tablet"
|
msgid "Tablet"
|
||||||
msgstr "لوحة"
|
msgstr "لوحة"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:247
|
#: ../js/ui/status/power.js:248
|
||||||
msgid "Computer"
|
msgid "Computer"
|
||||||
msgstr "حاسوب"
|
msgstr "حاسوب"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:249 ../src/shell-app-system.c:1013
|
#: ../js/ui/status/power.js:250 ../src/shell-app-system.c:1088
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "مجهول"
|
msgstr "مجهول"
|
||||||
|
|
||||||
#: ../js/ui/status/volume.js:44
|
#: ../js/ui/status/volume.js:45
|
||||||
msgid "Volume"
|
msgid "Volume"
|
||||||
msgstr "جزء"
|
msgstr "جزء"
|
||||||
|
|
||||||
#: ../js/ui/status/volume.js:57
|
#: ../js/ui/status/volume.js:58
|
||||||
msgid "Microphone"
|
msgid "Microphone"
|
||||||
msgstr "ميكروفون"
|
msgstr "ميكروفون"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:239
|
#: ../js/ui/telepathyClient.js:332
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is online."
|
msgid "%s is online."
|
||||||
msgstr "%s متّصل."
|
msgstr "%s متّصل."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:244
|
#: ../js/ui/telepathyClient.js:337
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is offline."
|
msgid "%s is offline."
|
||||||
msgstr "%s غير متّصل."
|
msgstr "%s غير متّصل."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:247
|
#: ../js/ui/telepathyClient.js:340
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is away."
|
msgid "%s is away."
|
||||||
msgstr "%s غائب."
|
msgstr "%s غائب."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:250
|
#: ../js/ui/telepathyClient.js:343
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is busy."
|
msgid "%s is busy."
|
||||||
msgstr "%s مشغول."
|
msgstr "%s مشغول."
|
||||||
@ -924,7 +1045,7 @@ msgstr "%s مشغول."
|
|||||||
#. Translators: this is a time format string followed by a date.
|
#. Translators: this is a time format string followed by a date.
|
||||||
#. If applicable, replace %X with a strftime format valid for your
|
#. If applicable, replace %X with a strftime format valid for your
|
||||||
#. locale, without seconds.
|
#. locale, without seconds.
|
||||||
#: ../js/ui/telepathyClient.js:348
|
#: ../js/ui/telepathyClient.js:474
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent at %X on %A"
|
msgid "Sent at %X on %A"
|
||||||
msgstr "أُرسلت الساعة %l:%M:%S في %A"
|
msgstr "أُرسلت الساعة %l:%M:%S في %A"
|
||||||
@ -933,11 +1054,11 @@ msgstr "أُرسلت الساعة %l:%M:%S في %A"
|
|||||||
#. in the search entry when no search is
|
#. in the search entry when no search is
|
||||||
#. active; it should not exceed ~30
|
#. active; it should not exceed ~30
|
||||||
#. characters.
|
#. characters.
|
||||||
#: ../js/ui/viewSelector.js:117
|
#: ../js/ui/viewSelector.js:122
|
||||||
msgid "Type to search..."
|
msgid "Type to search..."
|
||||||
msgstr "اكتب نصا للبحث عنه..."
|
msgstr "اكتب نصا للبحث عنه..."
|
||||||
|
|
||||||
#: ../js/ui/viewSelector.js:137 ../src/shell-util.c:250
|
#: ../js/ui/viewSelector.js:142 ../src/shell-util.c:250
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "ابحث"
|
msgstr "ابحث"
|
||||||
|
|
||||||
@ -953,7 +1074,7 @@ msgstr "'%s' جاهز"
|
|||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The number of sound outputs on a particular device
|
#. * The number of sound outputs on a particular device
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1094
|
#: ../src/gvc/gvc-mixer-control.c:1098
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%u Output"
|
msgid "%u Output"
|
||||||
msgid_plural "%u Outputs"
|
msgid_plural "%u Outputs"
|
||||||
@ -966,7 +1087,7 @@ msgstr[5] "%u مخرج"
|
|||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The number of sound inputs on a particular device
|
#. * The number of sound inputs on a particular device
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1104
|
#: ../src/gvc/gvc-mixer-control.c:1108
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%u Input"
|
msgid "%u Input"
|
||||||
msgid_plural "%u Inputs"
|
msgid_plural "%u Inputs"
|
||||||
@ -977,19 +1098,24 @@ msgstr[3] "%u مداخل"
|
|||||||
msgstr[4] "%u مدخلا"
|
msgstr[4] "%u مدخلا"
|
||||||
msgstr[5] "%u مدخل"
|
msgstr[5] "%u مدخل"
|
||||||
|
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1402
|
#: ../src/gvc/gvc-mixer-control.c:1406
|
||||||
msgid "System Sounds"
|
msgid "System Sounds"
|
||||||
msgstr "أصوات النظام"
|
msgstr "أصوات النظام"
|
||||||
|
|
||||||
#: ../src/main.c:395
|
#: ../src/main.c:438
|
||||||
msgid "Print version"
|
msgid "Print version"
|
||||||
msgstr "اطبع الإصدارة"
|
msgstr "اطبع الإصدارة"
|
||||||
|
|
||||||
#: ../src/shell-global.c:1308
|
#: ../src/shell-app.c:454
|
||||||
|
#, c-format
|
||||||
|
msgid "Failed to launch '%s'"
|
||||||
|
msgstr "فشل تشغيل '%s'"
|
||||||
|
|
||||||
|
#: ../src/shell-global.c:1395
|
||||||
msgid "Less than a minute ago"
|
msgid "Less than a minute ago"
|
||||||
msgstr "منذ أقل من دقيقة"
|
msgstr "منذ أقل من دقيقة"
|
||||||
|
|
||||||
#: ../src/shell-global.c:1312
|
#: ../src/shell-global.c:1399
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d minute ago"
|
msgid "%d minute ago"
|
||||||
msgid_plural "%d minutes ago"
|
msgid_plural "%d minutes ago"
|
||||||
@ -1000,7 +1126,7 @@ msgstr[3] "منذ %d دقائق"
|
|||||||
msgstr[4] "منذ %d دقيقة"
|
msgstr[4] "منذ %d دقيقة"
|
||||||
msgstr[5] "منذ %d دقيقة"
|
msgstr[5] "منذ %d دقيقة"
|
||||||
|
|
||||||
#: ../src/shell-global.c:1317
|
#: ../src/shell-global.c:1404
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d hour ago"
|
msgid "%d hour ago"
|
||||||
msgid_plural "%d hours ago"
|
msgid_plural "%d hours ago"
|
||||||
@ -1011,7 +1137,7 @@ msgstr[3] "منذ %d ساعات"
|
|||||||
msgstr[4] "منذ %d ساعة"
|
msgstr[4] "منذ %d ساعة"
|
||||||
msgstr[5] "منذ %d ساعة"
|
msgstr[5] "منذ %d ساعة"
|
||||||
|
|
||||||
#: ../src/shell-global.c:1322
|
#: ../src/shell-global.c:1409
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d day ago"
|
msgid "%d day ago"
|
||||||
msgid_plural "%d days ago"
|
msgid_plural "%d days ago"
|
||||||
@ -1022,7 +1148,7 @@ msgstr[3] "منذ %d أيام"
|
|||||||
msgstr[4] "منذ %d يوما"
|
msgstr[4] "منذ %d يوما"
|
||||||
msgstr[5] "منذ %d يوم"
|
msgstr[5] "منذ %d يوم"
|
||||||
|
|
||||||
#: ../src/shell-global.c:1327
|
#: ../src/shell-global.c:1414
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d week ago"
|
msgid "%d week ago"
|
||||||
msgid_plural "%d weeks ago"
|
msgid_plural "%d weeks ago"
|
||||||
@ -1033,6 +1159,14 @@ msgstr[3] "منذ %d أسابيع"
|
|||||||
msgstr[4] "منذ %d أسبوعا"
|
msgstr[4] "منذ %d أسبوعا"
|
||||||
msgstr[5] "منذ %d أسبوع"
|
msgstr[5] "منذ %d أسبوع"
|
||||||
|
|
||||||
|
#: ../src/shell-mobile-providers.c:80
|
||||||
|
msgid "United Kingdom"
|
||||||
|
msgstr "المملكة المتحدة"
|
||||||
|
|
||||||
|
#: ../src/shell-mobile-providers.c:526
|
||||||
|
msgid "Default"
|
||||||
|
msgstr "المبدئي"
|
||||||
|
|
||||||
#: ../src/shell-polkit-authentication-agent.c:334
|
#: ../src/shell-polkit-authentication-agent.c:334
|
||||||
msgid "Authentication dialog was dismissed by the user"
|
msgid "Authentication dialog was dismissed by the user"
|
||||||
msgstr "أغلق المستخدم مربع الاستيثاق الحِواري"
|
msgstr "أغلق المستخدم مربع الاستيثاق الحِواري"
|
||||||
@ -1057,6 +1191,33 @@ msgstr "نظام الملفات"
|
|||||||
msgid "%1$s: %2$s"
|
msgid "%1$s: %2$s"
|
||||||
msgstr "%1$s: %2$s"
|
msgstr "%1$s: %2$s"
|
||||||
|
|
||||||
|
#~ msgid "Shut Down"
|
||||||
|
#~ msgstr "أطفئ"
|
||||||
|
|
||||||
|
#~ msgid "Click Shut Down to quit these applications and shut down the system."
|
||||||
|
#~ msgstr "انقر على \"أطفئ\" لغلق هذه التطبيقات وإطفاء النظام."
|
||||||
|
|
||||||
|
#~ msgid "The system will shut down automatically in %d seconds."
|
||||||
|
#~ msgstr "سيُطفأ النظام تلقائيا خلال %d ثوان."
|
||||||
|
|
||||||
|
#~ msgid "Shutting down the system."
|
||||||
|
#~ msgstr "يُغلق النظام."
|
||||||
|
|
||||||
|
#~ msgid "Confirm"
|
||||||
|
#~ msgstr "أكّد"
|
||||||
|
|
||||||
|
#~ msgid "Panel"
|
||||||
|
#~ msgstr "اللوحة"
|
||||||
|
|
||||||
|
#~ msgid "No such application"
|
||||||
|
#~ msgstr "لا تطبيق بهذا الاسم"
|
||||||
|
|
||||||
|
#~ msgid "Screen Reader"
|
||||||
|
#~ msgstr "قارئ الشاشة"
|
||||||
|
|
||||||
|
#~ msgid "Screen Keyboard"
|
||||||
|
#~ msgstr "لوحة مفاتيح على الشاشة"
|
||||||
|
|
||||||
#~ msgid "PREFERENCES"
|
#~ msgid "PREFERENCES"
|
||||||
#~ msgstr "التفضيلات"
|
#~ msgstr "التفضيلات"
|
||||||
|
|
||||||
@ -1125,9 +1286,6 @@ msgstr "%1$s: %2$s"
|
|||||||
#~ msgid "Frequent"
|
#~ msgid "Frequent"
|
||||||
#~ msgstr "متكرر"
|
#~ msgstr "متكرر"
|
||||||
|
|
||||||
#~ msgid "More"
|
|
||||||
#~ msgstr "المزيد"
|
|
||||||
|
|
||||||
#~ msgid "(see all)"
|
#~ msgid "(see all)"
|
||||||
#~ msgstr "(انظر الكل)"
|
#~ msgstr "(انظر الكل)"
|
||||||
|
|
||||||
|
1189
po/bn_IN.po
Normal file
1189
po/bn_IN.po
Normal file
File diff suppressed because it is too large
Load Diff
513
po/es.po
513
po/es.po
@ -1,18 +1,18 @@
|
|||||||
# Spanish translation of gnome-shell.
|
# Spanish translation of gnome-shell.
|
||||||
# Copyright (C) 2009 gnome-shell's COPYRIGHT HOLDER
|
# Copyright (C) 2009 gnome-shell's COPYRIGHT HOLDER
|
||||||
# This file is distributed under the same license as the gnome-shell package.
|
# 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.
|
# Benjamín Valero Espinosa <benjavalero@gmail.com>, 2011.
|
||||||
# Daniel Mustieles <daniel.mustieles@gmail.com>, 2010, 2011.
|
# Daniel Mustieles <daniel.mustieles@gmail.com>, 2010, 2011.
|
||||||
|
# Jorge González <jorgegonz@svn.gnome.org>, 2009, 2010, 2011.
|
||||||
#
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gnome-shell.master\n"
|
"Project-Id-Version: gnome-shell.master\n"
|
||||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||||
"shell&component=general\n"
|
"shell&keywords=I18N+L10N&component=general\n"
|
||||||
"POT-Creation-Date: 2011-03-09 21:00+0000\n"
|
"POT-Creation-Date: 2011-03-25 20:20+0000\n"
|
||||||
"PO-Revision-Date: 2011-03-10 10:59+0100\n"
|
"PO-Revision-Date: 2011-03-25 21:35+0100\n"
|
||||||
"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
|
"Last-Translator: Jorge González <jorgegonz@svn.gnome.org>\n"
|
||||||
"Language-Team: Español <gnome-es-list@gnome.org>\n"
|
"Language-Team: Español <gnome-es-list@gnome.org>\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
@ -96,16 +96,16 @@ msgid ""
|
|||||||
"at the optimal thread count on the system."
|
"at the optimal thread count on the system."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Establece la tubería GStreamer usada para codificar grabaciones. Sigue la "
|
"Establece la tubería GStreamer usada para codificar grabaciones. Sigue la "
|
||||||
"sintaxis usada para gst-launch. La tubería debería tener un sumidero («sink») "
|
"sintaxis usada para gst-launch. La tubería debería tener un sumidero "
|
||||||
"de ensamblaje/sesensamblaje donde el vídeo que se está grabando se graba. "
|
"(«sink») de ensamblaje/sesensamblaje donde el vídeo que se está grabando se "
|
||||||
"Generalmente tendrá un origen de ensamblado/desensamblado; la salida de ese "
|
"graba. Generalmente tendrá un origen de ensamblado/desensamblado; la salida "
|
||||||
"punto se escibirá en el archivo de salida. No obstante la tubería también "
|
"de ese punto se escibirá en el archivo de salida. No obstante la tubería "
|
||||||
"puede tomar parte en su propia salida; esto se puede usar para enviar la "
|
"también puede tomar parte en su propia salida; esto se puede usar para "
|
||||||
"salida a un servidor «icecast» a través de shout2send o similar. Cuando no "
|
"enviar la salida a un servidor «icecast» a través de shout2send o similar. "
|
||||||
"está establecido o lo está a un valor vacío, se usará la tubería "
|
"Cuando no está establecido o lo está a un valor vacío, se usará la tubería "
|
||||||
"predeterminada. Actualmente es «videorate ! vp8enc quality=10 speed=2 threads="
|
"predeterminada. Actualmente es «videorate ! vp8enc quality=10 speed=2 "
|
||||||
"%T ! queue ! webmmux» y greba en WEBM usando el códec VP8. Se usa %T como "
|
"threads=%T ! queue ! webmmux» y greba en WEBM usando el códec VP8. Se usa %T "
|
||||||
"suposición para el número de hilos óptimos en el sistema."
|
"como suposición para el número de hilos óptimos en el sistema."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:14
|
#: ../data/org.gnome.shell.gschema.xml.in.h:14
|
||||||
msgid "Show date in clock"
|
msgid "Show date in clock"
|
||||||
@ -174,47 +174,43 @@ msgstr ""
|
|||||||
msgid "disabled OpenSearch providers"
|
msgid "disabled OpenSearch providers"
|
||||||
msgstr "proveedores OpenSearch desactivados"
|
msgstr "proveedores OpenSearch desactivados"
|
||||||
|
|
||||||
#: ../js/misc/util.js:86
|
#: ../js/misc/util.js:71
|
||||||
msgid "Command not found"
|
msgid "Command not found"
|
||||||
msgstr "Comando no encontrado"
|
msgstr "Comando no encontrado"
|
||||||
|
|
||||||
#. Replace "Error invoking GLib.shell_parse_argv: " with
|
#. Replace "Error invoking GLib.shell_parse_argv: " with
|
||||||
#. something nicer
|
#. something nicer
|
||||||
#: ../js/misc/util.js:113
|
#: ../js/misc/util.js:98
|
||||||
msgid "Could not parse command:"
|
msgid "Could not parse command:"
|
||||||
msgstr "No se pudo analizar el comando:"
|
msgstr "No se pudo analizar el comando:"
|
||||||
|
|
||||||
#: ../js/misc/util.js:135
|
#: ../js/misc/util.js:106
|
||||||
msgid "No such application"
|
|
||||||
msgstr "No existe la aplicación"
|
|
||||||
|
|
||||||
#: ../js/misc/util.js:148
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Execution of '%s' failed:"
|
msgid "Execution of '%s' failed:"
|
||||||
msgstr "Falló la ejecución de «%s»:"
|
msgstr "Falló la ejecución de «%s»:"
|
||||||
|
|
||||||
#. Translators: Filter to display all applications
|
#. Translators: Filter to display all applications
|
||||||
#: ../js/ui/appDisplay.js:226
|
#: ../js/ui/appDisplay.js:230
|
||||||
msgid "All"
|
msgid "All"
|
||||||
msgstr "Todas"
|
msgstr "Todas"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:324
|
#: ../js/ui/appDisplay.js:328
|
||||||
msgid "APPLICATIONS"
|
msgid "APPLICATIONS"
|
||||||
msgstr "APLICACIONES"
|
msgstr "APLICACIONES"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:350
|
#: ../js/ui/appDisplay.js:354
|
||||||
msgid "SETTINGS"
|
msgid "SETTINGS"
|
||||||
msgstr "CONFIGURACIÓN"
|
msgstr "CONFIGURACIÓN"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:612
|
#: ../js/ui/appDisplay.js:625
|
||||||
msgid "New Window"
|
msgid "New Window"
|
||||||
msgstr "Ventana nueva"
|
msgstr "Ventana nueva"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:615
|
#: ../js/ui/appDisplay.js:628
|
||||||
msgid "Remove from Favorites"
|
msgid "Remove from Favorites"
|
||||||
msgstr "Quitar de los favoritos"
|
msgstr "Quitar de los favoritos"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:616
|
#: ../js/ui/appDisplay.js:629
|
||||||
msgid "Add to Favorites"
|
msgid "Add to Favorites"
|
||||||
msgstr "Añadir a los favoritos"
|
msgstr "Añadir a los favoritos"
|
||||||
|
|
||||||
@ -374,7 +370,7 @@ msgstr "Esta semana"
|
|||||||
msgid "Next week"
|
msgid "Next week"
|
||||||
msgstr "La semana que viene"
|
msgstr "La semana que viene"
|
||||||
|
|
||||||
#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:931
|
#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:994
|
||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "Quitar"
|
msgstr "Quitar"
|
||||||
|
|
||||||
@ -429,7 +425,7 @@ msgstr "%a %H:%M"
|
|||||||
#. Translators: This is the date format to use when the calendar popup is
|
#. 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").
|
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
|
||||||
#.
|
#.
|
||||||
#: ../js/ui/dateMenu.js:209
|
#: ../js/ui/dateMenu.js:194
|
||||||
msgid "%A %B %e, %Y"
|
msgid "%A %B %e, %Y"
|
||||||
msgstr "%A, %e de %B de %Y"
|
msgstr "%A, %e de %B de %Y"
|
||||||
|
|
||||||
@ -442,7 +438,7 @@ msgstr "ELEMENTOS RECIENTES"
|
|||||||
msgid "Log Out %s"
|
msgid "Log Out %s"
|
||||||
msgstr "Cerrar la sesión %s"
|
msgstr "Cerrar la sesión %s"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:69
|
#: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:70
|
||||||
msgid "Log Out"
|
msgid "Log Out"
|
||||||
msgstr "Cerrar la sesión"
|
msgstr "Cerrar la sesión"
|
||||||
|
|
||||||
@ -466,46 +462,44 @@ msgstr "Su sesión se cerrará automáticamente en %d segundos."
|
|||||||
msgid "Logging out of the system."
|
msgid "Logging out of the system."
|
||||||
msgstr "Cerrando la sesión."
|
msgstr "Cerrando la sesión."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:74 ../js/ui/endSessionDialog.js:78
|
#: ../js/ui/endSessionDialog.js:75 ../js/ui/endSessionDialog.js:82
|
||||||
msgid "Shut Down"
|
msgid "Power Off"
|
||||||
msgstr "Apagar"
|
msgstr "Apagar"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:75
|
#: ../js/ui/endSessionDialog.js:76
|
||||||
msgid "Click Shut Down to quit these applications and shut down the system."
|
msgid "Click Power Off to quit these applications and power off the system."
|
||||||
msgstr "Pulse «Apagar» para salir de esas aplicaciones y apagar el sistema."
|
msgstr "Pulse «Apagar» para salir de esas aplicaciones y apagar el sistema."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:76
|
#: ../js/ui/endSessionDialog.js:77
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "The system will shut down automatically in %d seconds."
|
msgid "The system will power off automatically in %d seconds."
|
||||||
msgstr "El sistema se apagará automáticamente en %d segundos."
|
msgstr "El sistema se apagará automáticamente en %d segundos."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:77
|
#: ../js/ui/endSessionDialog.js:78
|
||||||
msgid "Shutting down the system."
|
msgid "Powering off the system."
|
||||||
msgstr "Apagando el sistema."
|
msgstr "Apagando el sistema."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:84 ../js/ui/endSessionDialog.js:88
|
#: ../js/ui/endSessionDialog.js:80 ../js/ui/endSessionDialog.js:88
|
||||||
|
#: ../js/ui/endSessionDialog.js:93
|
||||||
msgid "Restart"
|
msgid "Restart"
|
||||||
msgstr "Reiniciar"
|
msgstr "Reiniciar"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:85
|
#: ../js/ui/endSessionDialog.js:89
|
||||||
msgid "Click Restart to quit these applications and restart the system."
|
msgid "Click Restart to quit these applications and restart the system."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Pulse «Reiniciar» para salir de esas aplicaciones y reiniciar el sistema."
|
"Pulse «Reiniciar» para salir de esas aplicaciones y reiniciar el sistema."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:86
|
#: ../js/ui/endSessionDialog.js:90
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "The system will restart automatically in %d seconds."
|
msgid "The system will restart automatically in %d seconds."
|
||||||
msgstr "El sistema se reiniciará automáticamente en %d segundos."
|
msgstr "El sistema se reiniciará automáticamente en %d segundos."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:87
|
#: ../js/ui/endSessionDialog.js:91
|
||||||
msgid "Restarting the system."
|
msgid "Restarting the system."
|
||||||
msgstr "Reiniciando el sistema."
|
msgstr "Reiniciando el sistema."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:395
|
#: ../js/ui/endSessionDialog.js:415 ../js/ui/polkitAuthenticationAgent.js:172
|
||||||
msgid "Confirm"
|
#: ../js/ui/status/bluetooth.js:466
|
||||||
msgstr "Confirmar"
|
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:400 ../js/ui/status/bluetooth.js:470
|
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Cancelar"
|
msgstr "Cancelar"
|
||||||
|
|
||||||
@ -519,7 +513,7 @@ msgstr "Activado"
|
|||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The device has been disabled
|
#. * The device has been disabled
|
||||||
#: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1087
|
#: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1091
|
||||||
msgid "Disabled"
|
msgid "Disabled"
|
||||||
msgstr "Desactivado"
|
msgstr "Desactivado"
|
||||||
|
|
||||||
@ -539,47 +533,47 @@ msgstr "Ver fuente"
|
|||||||
msgid "Web Page"
|
msgid "Web Page"
|
||||||
msgstr "Página web"
|
msgstr "Página web"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:924
|
#: ../js/ui/messageTray.js:987
|
||||||
msgid "Open"
|
msgid "Open"
|
||||||
msgstr "Abrir"
|
msgstr "Abrir"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1961
|
#: ../js/ui/messageTray.js:2145
|
||||||
msgid "System Information"
|
msgid "System Information"
|
||||||
msgstr "Información del sistema"
|
msgstr "Información del sistema"
|
||||||
|
|
||||||
#: ../js/ui/overview.js:88
|
#: ../js/ui/overview.js:91
|
||||||
msgid "Undo"
|
msgid "Undo"
|
||||||
msgstr "Deshacer"
|
msgstr "Deshacer"
|
||||||
|
|
||||||
#: ../js/ui/overview.js:183
|
#: ../js/ui/overview.js:186
|
||||||
msgid "Windows"
|
msgid "Windows"
|
||||||
msgstr "Ventanas"
|
msgstr "Ventanas"
|
||||||
|
|
||||||
#: ../js/ui/overview.js:186
|
#: ../js/ui/overview.js:189
|
||||||
msgid "Applications"
|
msgid "Applications"
|
||||||
msgstr "Aplicaciones"
|
msgstr "Aplicaciones"
|
||||||
|
|
||||||
#. Translators: this is the name of the dock/favorites area on
|
#. Translators: this is the name of the dock/favorites area on
|
||||||
#. the left of the overview
|
#. the left of the overview
|
||||||
#: ../js/ui/overview.js:202
|
#: ../js/ui/overview.js:205
|
||||||
msgid "Dash"
|
msgid "Dash"
|
||||||
msgstr "Plano"
|
msgstr "Plano"
|
||||||
|
|
||||||
#. TODO - _quit() doesn't really work on apps in state STARTING yet
|
#. TODO - _quit() doesn't really work on apps in state STARTING yet
|
||||||
#: ../js/ui/panel.js:560
|
#: ../js/ui/panel.js:515
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Quit %s"
|
msgid "Quit %s"
|
||||||
msgstr "Salir de %s"
|
msgstr "Salir de %s"
|
||||||
|
|
||||||
#. Button on the left side of the panel.
|
#. Button on the left side of the panel.
|
||||||
#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
|
#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
|
||||||
#: ../js/ui/panel.js:919
|
#: ../js/ui/panel.js:878
|
||||||
msgid "Activities"
|
msgid "Activities"
|
||||||
msgstr "Actividades"
|
msgstr "Actividades"
|
||||||
|
|
||||||
#: ../js/ui/panel.js:1020
|
#: ../js/ui/panel.js:979
|
||||||
msgid "Panel"
|
msgid "Top Bar"
|
||||||
msgstr "Panel"
|
msgstr "Barra superior"
|
||||||
|
|
||||||
#: ../js/ui/placeDisplay.js:122
|
#: ../js/ui/placeDisplay.js:122
|
||||||
#, c-format
|
#, c-format
|
||||||
@ -594,64 +588,85 @@ msgstr "Reintentar"
|
|||||||
msgid "Connect to..."
|
msgid "Connect to..."
|
||||||
msgstr "Conectar a…"
|
msgstr "Conectar a…"
|
||||||
|
|
||||||
#: ../js/ui/placeDisplay.js:409
|
#: ../js/ui/placeDisplay.js:380
|
||||||
msgid "PLACES & DEVICES"
|
msgid "PLACES & DEVICES"
|
||||||
msgstr "LUGARES Y DISPOSITIVOS"
|
msgstr "LUGARES Y DISPOSITIVOS"
|
||||||
|
|
||||||
|
#: ../js/ui/polkitAuthenticationAgent.js:74
|
||||||
|
msgid "Authentication Required"
|
||||||
|
msgstr "Se necesita autenticación"
|
||||||
|
|
||||||
|
#: ../js/ui/polkitAuthenticationAgent.js:108
|
||||||
|
msgid "Administrator"
|
||||||
|
msgstr "Administrador"
|
||||||
|
|
||||||
|
#: ../js/ui/polkitAuthenticationAgent.js:176
|
||||||
|
msgid "Authenticate"
|
||||||
|
msgstr "Autenticar"
|
||||||
|
|
||||||
|
#: ../js/ui/polkitAuthenticationAgent.js:260
|
||||||
|
msgid "Sorry, that didn't work. Please try again."
|
||||||
|
msgstr "Inténtelo de nuevo,"
|
||||||
|
|
||||||
|
#: ../js/ui/polkitAuthenticationAgent.js:272
|
||||||
|
msgid "Password:"
|
||||||
|
msgstr "Contraseña:"
|
||||||
|
|
||||||
#. Translators: this MUST be either "toggle-switch-us"
|
#. Translators: this MUST be either "toggle-switch-us"
|
||||||
#. (for toggle switches containing the English words
|
#. (for toggle switches containing the English words
|
||||||
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
||||||
#. switches containing "◯" and "|"). Other values will
|
#. switches containing "◯" and "|"). Other values will
|
||||||
#. simply result in invisible toggle switches.
|
#. simply result in invisible toggle switches.
|
||||||
#: ../js/ui/popupMenu.js:618
|
#: ../js/ui/popupMenu.js:679
|
||||||
msgid "toggle-switch-us"
|
msgid "toggle-switch-us"
|
||||||
msgstr "toggle-switch-intl"
|
msgstr "toggle-switch-intl"
|
||||||
|
|
||||||
#: ../js/ui/runDialog.js:201
|
#: ../js/ui/runDialog.js:205
|
||||||
msgid "Please enter a command:"
|
msgid "Please enter a command:"
|
||||||
msgstr "Introduzca un comando:"
|
msgstr "Introduzca un comando:"
|
||||||
|
|
||||||
#: ../js/ui/searchDisplay.js:283
|
#: ../js/ui/searchDisplay.js:310
|
||||||
msgid "Searching..."
|
msgid "Searching..."
|
||||||
msgstr "Buscando…"
|
msgstr "Buscando…"
|
||||||
|
|
||||||
#: ../js/ui/searchDisplay.js:297
|
#: ../js/ui/searchDisplay.js:324
|
||||||
msgid "No matching results."
|
msgid "No matching results."
|
||||||
msgstr "No se encontró ningún resultado coincidente."
|
msgstr "No se encontró ningún resultado coincidente."
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:113 ../js/ui/statusMenu.js:177
|
#: ../js/ui/statusMenu.js:161 ../js/ui/statusMenu.js:163
|
||||||
|
#: ../js/ui/statusMenu.js:228
|
||||||
msgid "Power Off..."
|
msgid "Power Off..."
|
||||||
msgstr "Apagar…"
|
msgstr "Apagar…"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:115 ../js/ui/statusMenu.js:176
|
#: ../js/ui/statusMenu.js:163 ../js/ui/statusMenu.js:227
|
||||||
msgid "Suspend"
|
msgid "Suspend"
|
||||||
msgstr "Suspender"
|
msgstr "Suspender"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:136
|
#: ../js/ui/statusMenu.js:184
|
||||||
msgid "Available"
|
msgid "Available"
|
||||||
msgstr "Disponible"
|
msgstr "Disponible"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:141
|
#: ../js/ui/statusMenu.js:189
|
||||||
msgid "Busy"
|
msgid "Busy"
|
||||||
msgstr "Ocupado"
|
msgstr "Ocupado"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:149
|
#: ../js/ui/statusMenu.js:197
|
||||||
msgid "My Account"
|
msgid "My Account"
|
||||||
msgstr "Mi cuenta"
|
msgstr "Mi cuenta"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:153
|
#: ../js/ui/statusMenu.js:201
|
||||||
msgid "System Settings"
|
msgid "System Settings"
|
||||||
msgstr "Configuración del sistema"
|
msgstr "Configuración del sistema"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:160
|
#: ../js/ui/statusMenu.js:208
|
||||||
msgid "Lock Screen"
|
msgid "Lock Screen"
|
||||||
msgstr "Bloquear la pantalla"
|
msgstr "Bloquear la pantalla"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:164
|
#: ../js/ui/statusMenu.js:213
|
||||||
msgid "Switch User"
|
msgid "Switch User"
|
||||||
msgstr "Cambiar de usuario"
|
msgstr "Cambiar de usuario"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:169
|
#: ../js/ui/statusMenu.js:218
|
||||||
msgid "Log Out..."
|
msgid "Log Out..."
|
||||||
msgstr "Cerrar la sesión…"
|
msgstr "Cerrar la sesión…"
|
||||||
|
|
||||||
@ -659,14 +674,12 @@ msgstr "Cerrar la sesión…"
|
|||||||
msgid "Zoom"
|
msgid "Zoom"
|
||||||
msgstr "Ampliación"
|
msgstr "Ampliación"
|
||||||
|
|
||||||
#: ../js/ui/status/accessibility.js:69
|
#. let screenReader = this._buildItem(_("Screen Reader"), APPLICATIONS_SCHEMA,
|
||||||
msgid "Screen Reader"
|
#. 'screen-reader-enabled');
|
||||||
msgstr "Lector de pantalla"
|
#. this.menu.addMenuItem(screenReader);
|
||||||
|
#. let screenKeyboard = this._buildItem(_("Screen Keyboard"), APPLICATIONS_SCHEMA,
|
||||||
#: ../js/ui/status/accessibility.js:73
|
#. 'screen-keyboard-enabled');
|
||||||
msgid "Screen Keyboard"
|
#. this.menu.addMenuItem(screenKeyboard);
|
||||||
msgstr "Teclado en pantalla"
|
|
||||||
|
|
||||||
#: ../js/ui/status/accessibility.js:77
|
#: ../js/ui/status/accessibility.js:77
|
||||||
msgid "Visual Alerts"
|
msgid "Visual Alerts"
|
||||||
msgstr "Alertas visuales"
|
msgstr "Alertas visuales"
|
||||||
@ -689,19 +702,19 @@ msgstr "Teclas del ratón"
|
|||||||
|
|
||||||
#: ../js/ui/status/accessibility.js:93
|
#: ../js/ui/status/accessibility.js:93
|
||||||
msgid "Universal Access Settings"
|
msgid "Universal Access Settings"
|
||||||
msgstr "Preferencias del acceso universal"
|
msgstr "Configuración del acceso universal"
|
||||||
|
|
||||||
#: ../js/ui/status/accessibility.js:145
|
#: ../js/ui/status/accessibility.js:146
|
||||||
msgid "High Contrast"
|
msgid "High Contrast"
|
||||||
msgstr "Contraste alto"
|
msgstr "Contraste alto"
|
||||||
|
|
||||||
#: ../js/ui/status/accessibility.js:182
|
#: ../js/ui/status/accessibility.js:183
|
||||||
msgid "Large Text"
|
msgid "Large Text"
|
||||||
msgstr "Texto grande"
|
msgstr "Texto grande"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:241
|
#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:237
|
||||||
#: ../js/ui/status/bluetooth.js:337 ../js/ui/status/bluetooth.js:371
|
#: ../js/ui/status/bluetooth.js:333 ../js/ui/status/bluetooth.js:367
|
||||||
#: ../js/ui/status/bluetooth.js:411 ../js/ui/status/bluetooth.js:444
|
#: ../js/ui/status/bluetooth.js:407 ../js/ui/status/bluetooth.js:440
|
||||||
msgid "Bluetooth"
|
msgid "Bluetooth"
|
||||||
msgstr "Bluetooth"
|
msgstr "Bluetooth"
|
||||||
|
|
||||||
@ -721,94 +734,94 @@ msgstr "Configurar un dispositivo nuevo…"
|
|||||||
msgid "Bluetooth Settings"
|
msgid "Bluetooth Settings"
|
||||||
msgstr "Configuración de Bluetooth"
|
msgstr "Configuración de Bluetooth"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:192
|
#: ../js/ui/status/bluetooth.js:188
|
||||||
msgid "Connection"
|
msgid "Connection"
|
||||||
msgstr "Conexión"
|
msgstr "Conexión"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:228
|
#: ../js/ui/status/bluetooth.js:224
|
||||||
msgid "Send Files..."
|
msgid "Send Files..."
|
||||||
msgstr "Enviar archivos…"
|
msgstr "Enviar archivos…"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:233
|
#: ../js/ui/status/bluetooth.js:229
|
||||||
msgid "Browse Files..."
|
msgid "Browse Files..."
|
||||||
msgstr "Examinar archivos…"
|
msgstr "Examinar archivos…"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:242
|
#: ../js/ui/status/bluetooth.js:238
|
||||||
msgid "Error browsing device"
|
msgid "Error browsing device"
|
||||||
msgstr "Error al examinar el dispositivo"
|
msgstr "Error al examinar el dispositivo"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:243
|
#: ../js/ui/status/bluetooth.js:239
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "The requested device cannot be browsed, error is '%s'"
|
msgid "The requested device cannot be browsed, error is '%s'"
|
||||||
msgstr "No se puede examinar el dispositivo solicitado, el error es «%s»"
|
msgstr "No se puede examinar el dispositivo solicitado, el error es «%s»"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:251
|
#: ../js/ui/status/bluetooth.js:247
|
||||||
msgid "Keyboard Settings"
|
msgid "Keyboard Settings"
|
||||||
msgstr "Configuración del teclado"
|
msgstr "Configuración del teclado"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:256
|
#: ../js/ui/status/bluetooth.js:252
|
||||||
msgid "Mouse Settings"
|
msgid "Mouse Settings"
|
||||||
msgstr "Ajustes del ratón…"
|
msgstr "Ajustes del ratón…"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:263 ../js/ui/status/volume.js:65
|
#: ../js/ui/status/bluetooth.js:259 ../js/ui/status/volume.js:66
|
||||||
msgid "Sound Settings"
|
msgid "Sound Settings"
|
||||||
msgstr "Configuración del sonido"
|
msgstr "Configuración del sonido"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:372
|
#: ../js/ui/status/bluetooth.js:368
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Authorization request from %s"
|
msgid "Authorization request from %s"
|
||||||
msgstr "Solicitud de autorización de %s"
|
msgstr "Solicitud de autorización de %s"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:378
|
#: ../js/ui/status/bluetooth.js:374
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Device %s wants access to the service '%s'"
|
msgid "Device %s wants access to the service '%s'"
|
||||||
msgstr "El dispositivo %s quiere acceder al servicio «%s»"
|
msgstr "El dispositivo %s quiere acceder al servicio «%s»"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:380
|
#: ../js/ui/status/bluetooth.js:376
|
||||||
msgid "Always grant access"
|
msgid "Always grant access"
|
||||||
msgstr "Conceder acceso siempre"
|
msgstr "Conceder acceso siempre"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:381
|
#: ../js/ui/status/bluetooth.js:377
|
||||||
msgid "Grant this time only"
|
msgid "Grant this time only"
|
||||||
msgstr "Conceder sólo esta vez"
|
msgstr "Conceder sólo esta vez"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:382
|
#: ../js/ui/status/bluetooth.js:378
|
||||||
msgid "Reject"
|
msgid "Reject"
|
||||||
msgstr "Rechazar"
|
msgstr "Rechazar"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:412
|
#: ../js/ui/status/bluetooth.js:408
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Pairing confirmation for %s"
|
msgid "Pairing confirmation for %s"
|
||||||
msgstr "Confirmación de emparejamiento para «%s»"
|
msgstr "Confirmación de emparejamiento para «%s»"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:418 ../js/ui/status/bluetooth.js:452
|
#: ../js/ui/status/bluetooth.js:414 ../js/ui/status/bluetooth.js:448
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Device %s wants to pair with this computer"
|
msgid "Device %s wants to pair with this computer"
|
||||||
msgstr "El dispositivo «%s» quiere emparejarse con este equipo"
|
msgstr "El dispositivo «%s» quiere emparejarse con este equipo"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:419
|
#: ../js/ui/status/bluetooth.js:415
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Please confirm whether the PIN '%s' matches the one on the device."
|
msgid "Please confirm whether the PIN '%s' matches the one on the device."
|
||||||
msgstr "Confirme que el PIN mostrado en «%s» coincide con el del dispositivo."
|
msgstr "Confirme que el PIN mostrado en «%s» coincide con el del dispositivo."
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:421
|
#: ../js/ui/status/bluetooth.js:417
|
||||||
msgid "Matches"
|
msgid "Matches"
|
||||||
msgstr "Coincide"
|
msgstr "Coincide"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:422
|
#: ../js/ui/status/bluetooth.js:418
|
||||||
msgid "Does not match"
|
msgid "Does not match"
|
||||||
msgstr "No coincide"
|
msgstr "No coincide"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:445
|
#: ../js/ui/status/bluetooth.js:441
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Pairing request for %s"
|
msgid "Pairing request for %s"
|
||||||
msgstr "Solicitud de emparejamiento para «%s»"
|
msgstr "Solicitud de emparejamiento para «%s»"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:453
|
#: ../js/ui/status/bluetooth.js:449
|
||||||
msgid "Please enter the PIN mentioned on the device."
|
msgid "Please enter the PIN mentioned on the device."
|
||||||
msgstr "Introduzca el PIN mencionado en el dispositivo."
|
msgstr "Introduzca el PIN mencionado en el dispositivo."
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:469
|
#: ../js/ui/status/bluetooth.js:465
|
||||||
msgid "OK"
|
msgid "OK"
|
||||||
msgstr "Aceptar"
|
msgstr "Aceptar"
|
||||||
|
|
||||||
@ -820,17 +833,153 @@ msgstr "Mostrar la distribución del teclado…"
|
|||||||
msgid "Localization Settings"
|
msgid "Localization Settings"
|
||||||
msgstr "Configuración regional"
|
msgstr "Configuración regional"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:102 ../js/ui/status/network.js:1437
|
||||||
|
msgid "<unknown>"
|
||||||
|
msgstr "<desconocido>"
|
||||||
|
|
||||||
|
#. Translators: this indicates that wireless or wwan is disabled by hardware killswitch
|
||||||
|
#: ../js/ui/status/network.js:295
|
||||||
|
msgid "disabled"
|
||||||
|
msgstr "desactivada"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:478
|
||||||
|
msgid "connecting..."
|
||||||
|
msgstr "conectando…"
|
||||||
|
|
||||||
|
#. Translators: this is for network connections that require some kind of key or password
|
||||||
|
#: ../js/ui/status/network.js:481
|
||||||
|
msgid "authentication required"
|
||||||
|
msgstr "se necesita autenticación"
|
||||||
|
|
||||||
|
#. Translators: this is for devices that require some kind of firmware or kernel
|
||||||
|
#. module, which is missing
|
||||||
|
#: ../js/ui/status/network.js:491
|
||||||
|
msgid "firmware missing"
|
||||||
|
msgstr "falta el «firmware»"
|
||||||
|
|
||||||
|
#. Translators: this is for wired network devices that are physically disconnected
|
||||||
|
#: ../js/ui/status/network.js:498
|
||||||
|
msgid "cable unplugged"
|
||||||
|
msgstr "cable desconectado"
|
||||||
|
|
||||||
|
#. Translators: this is for a network device that cannot be activated (for example it
|
||||||
|
#. is disabled by rfkill, or it has no coverage
|
||||||
|
#: ../js/ui/status/network.js:503
|
||||||
|
msgid "unavailable"
|
||||||
|
msgstr "no disponible"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:505
|
||||||
|
msgid "connection failed"
|
||||||
|
msgstr "falló la conexión"
|
||||||
|
|
||||||
|
#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
|
||||||
|
#. and we cannot access its settings (including the name)
|
||||||
|
#: ../js/ui/status/network.js:585 ../js/ui/status/network.js:1385
|
||||||
|
msgid "Connected (private)"
|
||||||
|
msgstr "Conectada (privada)"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:666
|
||||||
|
msgid "Auto Ethernet"
|
||||||
|
msgstr "Ethernet automática"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:741
|
||||||
|
msgid "Auto broadband"
|
||||||
|
msgstr "Banda ancha automática"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:744
|
||||||
|
msgid "Auto dial-up"
|
||||||
|
msgstr "Marcado automático"
|
||||||
|
|
||||||
|
#. TRANSLATORS: this the automatic wireless connection name (including the network name)
|
||||||
|
#: ../js/ui/status/network.js:887 ../js/ui/status/network.js:1397
|
||||||
|
#, c-format
|
||||||
|
msgid "Auto %s"
|
||||||
|
msgstr "%s automática"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:889
|
||||||
|
msgid "Auto bluetooth"
|
||||||
|
msgstr "Bluetooth automático"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1399
|
||||||
|
msgid "Auto wireless"
|
||||||
|
msgstr "Inalámbrica automática"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1457
|
||||||
|
msgid "More..."
|
||||||
|
msgstr "Más…"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1480
|
||||||
|
msgid "Enable networking"
|
||||||
|
msgstr "Activar red"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1492
|
||||||
|
msgid "Wired"
|
||||||
|
msgstr "Cableada"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1503
|
||||||
|
msgid "Wireless"
|
||||||
|
msgstr "Inalámbrica"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1513
|
||||||
|
msgid "Mobile broadband"
|
||||||
|
msgstr "Banda ancha móvil"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1523
|
||||||
|
msgid "VPN Connections"
|
||||||
|
msgstr "Conexiones VPN"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1532
|
||||||
|
msgid "Network Settings"
|
||||||
|
msgstr "Configuración de la red"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1827
|
||||||
|
#, c-format
|
||||||
|
msgid "You're now connected to mobile broadband connection '%s'"
|
||||||
|
msgstr "Ahora está conectado a la red de banda ancha móvil «%s»"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1831
|
||||||
|
#, c-format
|
||||||
|
msgid "You're now connected to wireless network '%s'"
|
||||||
|
msgstr "Ahora está conectado a la red inalámbrica «%s»"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1835
|
||||||
|
#, c-format
|
||||||
|
msgid "You're now connected to wired network '%s'"
|
||||||
|
msgstr "Ahora está conectado a la red cableada «%s»"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1839
|
||||||
|
#, c-format
|
||||||
|
msgid "You're now connected to VPN network '%s'"
|
||||||
|
msgstr "Ahora está conectado a la VPN «%s»"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1844
|
||||||
|
#, c-format
|
||||||
|
msgid "You're now connected to '%s'"
|
||||||
|
msgstr "Ahora está conectado a «%s»"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1852
|
||||||
|
msgid "Connection established"
|
||||||
|
msgstr "Conexión establecida"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1974
|
||||||
|
msgid "Networking is disabled"
|
||||||
|
msgstr "La red está desactivada"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:2099
|
||||||
|
msgid "Network Manager"
|
||||||
|
msgstr "Gestor de la red"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:85
|
#: ../js/ui/status/power.js:85
|
||||||
msgid "Power Settings"
|
msgid "Power Settings"
|
||||||
msgstr "Configuración de energía"
|
msgstr "Configuración de energía"
|
||||||
|
|
||||||
#. 0 is reported when UPower does not have enough data
|
#. 0 is reported when UPower does not have enough data
|
||||||
#. to estimate battery life
|
#. to estimate battery life
|
||||||
#: ../js/ui/status/power.js:110
|
#: ../js/ui/status/power.js:111
|
||||||
msgid "Estimating..."
|
msgid "Estimating..."
|
||||||
msgstr "Estimando…"
|
msgstr "Estimando…"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:117
|
#: ../js/ui/status/power.js:118
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d hour remaining"
|
msgid "%d hour remaining"
|
||||||
msgid_plural "%d hours remaining"
|
msgid_plural "%d hours remaining"
|
||||||
@ -838,102 +987,102 @@ msgstr[0] "Queda %d hora"
|
|||||||
msgstr[1] "Queda %d horas"
|
msgstr[1] "Queda %d horas"
|
||||||
|
|
||||||
#. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining"
|
#. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining"
|
||||||
#: ../js/ui/status/power.js:120
|
#: ../js/ui/status/power.js:121
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d %s %d %s remaining"
|
msgid "%d %s %d %s remaining"
|
||||||
msgstr "Quedan %d %s %d %s"
|
msgstr "Quedan %d %s %d %s"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:122
|
#: ../js/ui/status/power.js:123
|
||||||
msgid "hour"
|
msgid "hour"
|
||||||
msgid_plural "hours"
|
msgid_plural "hours"
|
||||||
msgstr[0] "hora"
|
msgstr[0] "hora"
|
||||||
msgstr[1] "horas"
|
msgstr[1] "horas"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:122
|
#: ../js/ui/status/power.js:123
|
||||||
msgid "minute"
|
msgid "minute"
|
||||||
msgid_plural "minutes"
|
msgid_plural "minutes"
|
||||||
msgstr[0] "minuto"
|
msgstr[0] "minuto"
|
||||||
msgstr[1] "minutos"
|
msgstr[1] "minutos"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:125
|
#: ../js/ui/status/power.js:126
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d minute remaining"
|
msgid "%d minute remaining"
|
||||||
msgid_plural "%d minutes remaining"
|
msgid_plural "%d minutes remaining"
|
||||||
msgstr[0] "Queda %d minuto"
|
msgstr[0] "Queda %d minuto"
|
||||||
msgstr[1] "Queda %d minutos"
|
msgstr[1] "Queda %d minutos"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:227
|
#: ../js/ui/status/power.js:228
|
||||||
msgid "AC adapter"
|
msgid "AC adapter"
|
||||||
msgstr "Adaptador de corriente"
|
msgstr "Adaptador de corriente"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:229
|
#: ../js/ui/status/power.js:230
|
||||||
msgid "Laptop battery"
|
msgid "Laptop battery"
|
||||||
msgstr "Batería del portátil"
|
msgstr "Batería del portátil"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:231
|
#: ../js/ui/status/power.js:232
|
||||||
msgid "UPS"
|
msgid "UPS"
|
||||||
msgstr "SAI"
|
msgstr "SAI"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:233
|
#: ../js/ui/status/power.js:234
|
||||||
msgid "Monitor"
|
msgid "Monitor"
|
||||||
msgstr "Monitor"
|
msgstr "Monitor"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:235
|
#: ../js/ui/status/power.js:236
|
||||||
msgid "Mouse"
|
msgid "Mouse"
|
||||||
msgstr "Ratón"
|
msgstr "Ratón"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:237
|
#: ../js/ui/status/power.js:238
|
||||||
msgid "Keyboard"
|
msgid "Keyboard"
|
||||||
msgstr "Teclado"
|
msgstr "Teclado"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:239
|
#: ../js/ui/status/power.js:240
|
||||||
msgid "PDA"
|
msgid "PDA"
|
||||||
msgstr "PDA"
|
msgstr "PDA"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:241
|
#: ../js/ui/status/power.js:242
|
||||||
msgid "Cell phone"
|
msgid "Cell phone"
|
||||||
msgstr "Teléfono móvil"
|
msgstr "Teléfono móvil"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:243
|
#: ../js/ui/status/power.js:244
|
||||||
msgid "Media player"
|
msgid "Media player"
|
||||||
msgstr "Reproductor multimedia"
|
msgstr "Reproductor multimedia"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:245
|
#: ../js/ui/status/power.js:246
|
||||||
msgid "Tablet"
|
msgid "Tablet"
|
||||||
msgstr "Tableta"
|
msgstr "Tableta"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:247
|
#: ../js/ui/status/power.js:248
|
||||||
msgid "Computer"
|
msgid "Computer"
|
||||||
msgstr "Equipo"
|
msgstr "Equipo"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:249 ../src/shell-app-system.c:1013
|
#: ../js/ui/status/power.js:250 ../src/shell-app-system.c:1088
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "Desconocido"
|
msgstr "Desconocido"
|
||||||
|
|
||||||
#: ../js/ui/status/volume.js:44
|
#: ../js/ui/status/volume.js:45
|
||||||
msgid "Volume"
|
msgid "Volume"
|
||||||
msgstr "Volumen"
|
msgstr "Volumen"
|
||||||
|
|
||||||
#: ../js/ui/status/volume.js:57
|
#: ../js/ui/status/volume.js:58
|
||||||
msgid "Microphone"
|
msgid "Microphone"
|
||||||
msgstr "Micrófono"
|
msgstr "Micrófono"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:239
|
#: ../js/ui/telepathyClient.js:332
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is online."
|
msgid "%s is online."
|
||||||
msgstr "%s está conectado/a."
|
msgstr "%s está conectado/a."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:244
|
#: ../js/ui/telepathyClient.js:337
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is offline."
|
msgid "%s is offline."
|
||||||
msgstr "%s está desconectado/a."
|
msgstr "%s está desconectado/a."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:247
|
#: ../js/ui/telepathyClient.js:340
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is away."
|
msgid "%s is away."
|
||||||
msgstr "%s está ausente."
|
msgstr "%s está ausente."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:250
|
#: ../js/ui/telepathyClient.js:343
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is busy."
|
msgid "%s is busy."
|
||||||
msgstr "%s está ocupado/a."
|
msgstr "%s está ocupado/a."
|
||||||
@ -941,7 +1090,7 @@ msgstr "%s está ocupado/a."
|
|||||||
#. Translators: this is a time format string followed by a date.
|
#. Translators: this is a time format string followed by a date.
|
||||||
#. If applicable, replace %X with a strftime format valid for your
|
#. If applicable, replace %X with a strftime format valid for your
|
||||||
#. locale, without seconds.
|
#. locale, without seconds.
|
||||||
#: ../js/ui/telepathyClient.js:357
|
#: ../js/ui/telepathyClient.js:474
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent at %X on %A"
|
msgid "Sent at %X on %A"
|
||||||
msgstr "Enviado a las %X el %A"
|
msgstr "Enviado a las %X el %A"
|
||||||
@ -950,11 +1099,11 @@ msgstr "Enviado a las %X el %A"
|
|||||||
#. in the search entry when no search is
|
#. in the search entry when no search is
|
||||||
#. active; it should not exceed ~30
|
#. active; it should not exceed ~30
|
||||||
#. characters.
|
#. characters.
|
||||||
#: ../js/ui/viewSelector.js:117
|
#: ../js/ui/viewSelector.js:122
|
||||||
msgid "Type to search..."
|
msgid "Type to search..."
|
||||||
msgstr "Teclear para buscar…"
|
msgstr "Teclear para buscar…"
|
||||||
|
|
||||||
#: ../js/ui/viewSelector.js:137 ../src/shell-util.c:250
|
#: ../js/ui/viewSelector.js:142 ../src/shell-util.c:250
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "Buscar"
|
msgstr "Buscar"
|
||||||
|
|
||||||
@ -970,7 +1119,7 @@ msgstr "«%s» está preparado"
|
|||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The number of sound outputs on a particular device
|
#. * The number of sound outputs on a particular device
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1094
|
#: ../src/gvc/gvc-mixer-control.c:1098
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%u Output"
|
msgid "%u Output"
|
||||||
msgid_plural "%u Outputs"
|
msgid_plural "%u Outputs"
|
||||||
@ -979,53 +1128,66 @@ msgstr[1] "%u salidas"
|
|||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The number of sound inputs on a particular device
|
#. * The number of sound inputs on a particular device
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1104
|
#: ../src/gvc/gvc-mixer-control.c:1108
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%u Input"
|
msgid "%u Input"
|
||||||
msgid_plural "%u Inputs"
|
msgid_plural "%u Inputs"
|
||||||
msgstr[0] "%u entrada"
|
msgstr[0] "%u entrada"
|
||||||
msgstr[1] "%u entradas"
|
msgstr[1] "%u entradas"
|
||||||
|
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1402
|
#: ../src/gvc/gvc-mixer-control.c:1406
|
||||||
msgid "System Sounds"
|
msgid "System Sounds"
|
||||||
msgstr "Sonidos del sistema"
|
msgstr "Sonidos del sistema"
|
||||||
|
|
||||||
#: ../src/main.c:395
|
#: ../src/main.c:446
|
||||||
msgid "Print version"
|
msgid "Print version"
|
||||||
msgstr "Imprimir versión"
|
msgstr "Imprimir versión"
|
||||||
|
|
||||||
#: ../src/shell-global.c:1308
|
#: ../src/shell-app.c:454
|
||||||
|
#, c-format
|
||||||
|
msgid "Failed to launch '%s'"
|
||||||
|
msgstr "Falló al lanzar «%s»"
|
||||||
|
|
||||||
|
#: ../src/shell-global.c:1395
|
||||||
msgid "Less than a minute ago"
|
msgid "Less than a minute ago"
|
||||||
msgstr "Hace menos de un minuto"
|
msgstr "Hace menos de un minuto"
|
||||||
|
|
||||||
#: ../src/shell-global.c:1312
|
#: ../src/shell-global.c:1399
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d minute ago"
|
msgid "%d minute ago"
|
||||||
msgid_plural "%d minutes ago"
|
msgid_plural "%d minutes ago"
|
||||||
msgstr[0] "Hace %d minuto"
|
msgstr[0] "Hace %d minuto"
|
||||||
msgstr[1] "Hace %d minutos"
|
msgstr[1] "Hace %d minutos"
|
||||||
|
|
||||||
#: ../src/shell-global.c:1317
|
#: ../src/shell-global.c:1404
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d hour ago"
|
msgid "%d hour ago"
|
||||||
msgid_plural "%d hours ago"
|
msgid_plural "%d hours ago"
|
||||||
msgstr[0] "Hace %d hora"
|
msgstr[0] "Hace %d hora"
|
||||||
msgstr[1] "Hace %d horas"
|
msgstr[1] "Hace %d horas"
|
||||||
|
|
||||||
#: ../src/shell-global.c:1322
|
#: ../src/shell-global.c:1409
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d day ago"
|
msgid "%d day ago"
|
||||||
msgid_plural "%d days ago"
|
msgid_plural "%d days ago"
|
||||||
msgstr[0] "Hace %d día"
|
msgstr[0] "Hace %d día"
|
||||||
msgstr[1] "Hace %d días"
|
msgstr[1] "Hace %d días"
|
||||||
|
|
||||||
#: ../src/shell-global.c:1327
|
#: ../src/shell-global.c:1414
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d week ago"
|
msgid "%d week ago"
|
||||||
msgid_plural "%d weeks ago"
|
msgid_plural "%d weeks ago"
|
||||||
msgstr[0] "Hace %d semana"
|
msgstr[0] "Hace %d semana"
|
||||||
msgstr[1] "Hace %d semanas"
|
msgstr[1] "Hace %d semanas"
|
||||||
|
|
||||||
|
#: ../src/shell-mobile-providers.c:80
|
||||||
|
msgid "United Kingdom"
|
||||||
|
msgstr "Reino Unido"
|
||||||
|
|
||||||
|
#: ../src/shell-mobile-providers.c:526
|
||||||
|
msgid "Default"
|
||||||
|
msgstr "Predeterminada"
|
||||||
|
|
||||||
#: ../src/shell-polkit-authentication-agent.c:334
|
#: ../src/shell-polkit-authentication-agent.c:334
|
||||||
msgid "Authentication dialog was dismissed by the user"
|
msgid "Authentication dialog was dismissed by the user"
|
||||||
msgstr "El usuario rechazó el diálogo de autenticación"
|
msgstr "El usuario rechazó el diálogo de autenticación"
|
||||||
@ -1050,6 +1212,36 @@ msgstr "Sistema de archivos"
|
|||||||
msgid "%1$s: %2$s"
|
msgid "%1$s: %2$s"
|
||||||
msgstr "%1$s: %2$s"
|
msgstr "%1$s: %2$s"
|
||||||
|
|
||||||
|
#~ msgid "Shut Down"
|
||||||
|
#~ msgstr "Apagar"
|
||||||
|
|
||||||
|
#~ msgid "Click Shut Down to quit these applications and shut down the system."
|
||||||
|
#~ msgstr "Pulse «Apagar» para salir de esas aplicaciones y apagar el sistema."
|
||||||
|
|
||||||
|
#~ msgid "The system will shut down automatically in %d seconds."
|
||||||
|
#~ msgstr "El sistema se apagará automáticamente en %d segundos."
|
||||||
|
|
||||||
|
#~ msgid "Shutting down the system."
|
||||||
|
#~ msgstr "Apagando el sistema."
|
||||||
|
|
||||||
|
#~ msgid "Confirm"
|
||||||
|
#~ msgstr "Confirmar"
|
||||||
|
|
||||||
|
#~ msgid "Panel"
|
||||||
|
#~ msgstr "Panel"
|
||||||
|
|
||||||
|
#~ msgid "No such application"
|
||||||
|
#~ msgstr "No existe la aplicación"
|
||||||
|
|
||||||
|
#~ msgid "Screen Reader"
|
||||||
|
#~ msgstr "Lector de pantalla"
|
||||||
|
|
||||||
|
#~ msgid "Screen Keyboard"
|
||||||
|
#~ msgstr "Teclado en pantalla"
|
||||||
|
|
||||||
|
#~ msgid "%s is now known as %s"
|
||||||
|
#~ msgstr "Ahora %s se llama %s"
|
||||||
|
|
||||||
#~ msgid "PREFERENCES"
|
#~ msgid "PREFERENCES"
|
||||||
#~ msgstr "PREFERENCIAS"
|
#~ msgstr "PREFERENCIAS"
|
||||||
|
|
||||||
@ -1224,8 +1416,8 @@ msgstr "%1$s: %2$s"
|
|||||||
#~ "If true and format is either \"12-hour\" or \"24-hour\", display seconds "
|
#~ "If true and format is either \"12-hour\" or \"24-hour\", display seconds "
|
||||||
#~ "in time."
|
#~ "in time."
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
#~ "Si es cierta y el formato es «12-horas» o «24-horas», muestra los segundos "
|
#~ "Si es cierta y el formato es «12-horas» o «24-horas», muestra los "
|
||||||
#~ "en la hora."
|
#~ "segundos en la hora."
|
||||||
|
|
||||||
#~ msgid ""
|
#~ msgid ""
|
||||||
#~ "This key specifies the format used by the panel clock when the format key "
|
#~ "This key specifies the format used by the panel clock when the format key "
|
||||||
@ -1242,18 +1434,19 @@ msgstr "%1$s: %2$s"
|
|||||||
#~ msgid ""
|
#~ msgid ""
|
||||||
#~ "This key specifies the hour format used by the panel clock. Possible "
|
#~ "This key specifies the hour format used by the panel clock. Possible "
|
||||||
#~ "values are \"12-hour\", \"24-hour\", \"unix\" and \"custom\". If set to "
|
#~ "values are \"12-hour\", \"24-hour\", \"unix\" and \"custom\". If set to "
|
||||||
#~ "\"unix\", the clock will display time in seconds since Epoch, i.e. 1970-"
|
#~ "\"unix\", the clock will display time in seconds since Epoch, i.e. "
|
||||||
#~ "01-01. If set to \"custom\", the clock will display time according to the "
|
#~ "1970-01-01. If set to \"custom\", the clock will display time according "
|
||||||
#~ "format specified in the custom_format key. Note that if set to either "
|
#~ "to the format specified in the custom_format key. Note that if set to "
|
||||||
#~ "\"unix\" or \"custom\", the show_date and show_seconds keys are ignored."
|
#~ "either \"unix\" or \"custom\", the show_date and show_seconds keys are "
|
||||||
|
#~ "ignored."
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
#~ "Esta clave especifica el formato de la hora especificado por el reloj del "
|
#~ "Esta clave especifica el formato de la hora especificado por el reloj del "
|
||||||
#~ "panel. Los valores posibles son «12-hour» (12 horas), «24-hour» (24 horas), "
|
#~ "panel. Los valores posibles son «12-hour» (12 horas), «24-hour» (24 "
|
||||||
#~ "«unix» y «custom» (personalizado).Si se establece a «unix» el reloj mostrará "
|
#~ "horas), «unix» y «custom» (personalizado).Si se establece a «unix» el "
|
||||||
#~ "la hora en segundos desde la época (1 de enero de 1970). Si se establece "
|
#~ "reloj mostrará la hora en segundos desde la época (1 de enero de 1970). "
|
||||||
#~ "a «custom» el reloj mostrará la hora según el formato especificado en la "
|
#~ "Si se establece a «custom» el reloj mostrará la hora según el formato "
|
||||||
#~ "clave «custom_format». Note que si se establece a «unix» o «custom» se "
|
#~ "especificado en la clave «custom_format». Note que si se establece a "
|
||||||
#~ "ignoran las claves «show_date» y «show_seconds»."
|
#~ "«unix» o «custom» se ignoran las claves «show_date» y «show_seconds»."
|
||||||
|
|
||||||
#~ msgid "Clock Format"
|
#~ msgid "Clock Format"
|
||||||
#~ msgstr "Formato del reloj"
|
#~ msgstr "Formato del reloj"
|
||||||
@ -1319,9 +1512,6 @@ msgstr "%1$s: %2$s"
|
|||||||
#~ msgid "Frequent"
|
#~ msgid "Frequent"
|
||||||
#~ msgstr "Frecuentes"
|
#~ msgstr "Frecuentes"
|
||||||
|
|
||||||
#~ msgid "More"
|
|
||||||
#~ msgstr "Más"
|
|
||||||
|
|
||||||
#~ msgid "(see all)"
|
#~ msgid "(see all)"
|
||||||
#~ msgstr "(ver todo)"
|
#~ msgstr "(ver todo)"
|
||||||
|
|
||||||
@ -1349,8 +1539,5 @@ msgstr "%1$s: %2$s"
|
|||||||
#~ msgid "DOCUMENTS"
|
#~ msgid "DOCUMENTS"
|
||||||
#~ msgstr "DOCUMENTOS"
|
#~ msgstr "DOCUMENTOS"
|
||||||
|
|
||||||
#~ msgid "Manager"
|
|
||||||
#~ msgstr "Gestor"
|
|
||||||
|
|
||||||
#~ msgid "The user manager object this user is controlled by."
|
#~ msgid "The user manager object this user is controlled by."
|
||||||
#~ msgstr "El objeto de gestión de usuarios que controla a este usuario."
|
#~ msgstr "El objeto de gestión de usuarios que controla a este usuario."
|
||||||
|
495
po/et.po
495
po/et.po
@ -12,21 +12,21 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gnome-shell MASTER\n"
|
"Project-Id-Version: gnome-shell MASTER\n"
|
||||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||||
"shell&component=general\n"
|
"shell&keywords=I18N+L10N&component=general\n"
|
||||||
"POT-Creation-Date: 2011-02-04 22:28+0000\n"
|
"POT-Creation-Date: 2011-03-18 10:35+0000\n"
|
||||||
"PO-Revision-Date: 2011-02-06 08:43+0200\n"
|
"PO-Revision-Date: 2011-03-18 21:33+0300\n"
|
||||||
"Last-Translator: Ivar Smolin <okul@linux.ee>\n"
|
"Last-Translator: Mattias Põldaru <mahfiaz@gmail.com>\n"
|
||||||
"Language-Team: Estonian <gnome-et@linux.ee>\n"
|
"Language-Team: Estonian <gnome-et@linux.ee>\n"
|
||||||
|
"Language: et\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Language: et\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
"X-Poedit-Language: Estonian\n"
|
"X-Poedit-Language: Estonian\n"
|
||||||
"X-Poedit-Country: Estonia\n"
|
"X-Poedit-Country: Estonia\n"
|
||||||
|
|
||||||
msgid "GNOME Shell"
|
msgid "GNOME Shell"
|
||||||
msgstr "GNOME kest"
|
msgstr "GNOME Shell"
|
||||||
|
|
||||||
msgid "Window management and application launching"
|
msgid "Window management and application launching"
|
||||||
msgstr "Aknahaldur ja rakenduste käivitaja"
|
msgstr "Aknahaldur ja rakenduste käivitaja"
|
||||||
@ -58,6 +58,10 @@ msgstr ""
|
|||||||
msgid "History for command (Alt-F2) dialog"
|
msgid "History for command (Alt-F2) dialog"
|
||||||
msgstr "Käsudialoogi (Alt-F2) ajalugu"
|
msgstr "Käsudialoogi (Alt-F2) ajalugu"
|
||||||
|
|
||||||
|
# suurendusklaasidialoog? miks ka mitte :)
|
||||||
|
msgid "History for the looking glass dialog"
|
||||||
|
msgstr "Otsingudialoogi ajalugu"
|
||||||
|
|
||||||
msgid "If true, display date in the clock, in addition to time."
|
msgid "If true, display date in the clock, in addition to time."
|
||||||
msgstr "Kui määratud, siis kuvatakse kellaaja kõrval ka kuupäeva."
|
msgstr "Kui määratud, siis kuvatakse kellaaja kõrval ka kuupäeva."
|
||||||
|
|
||||||
@ -83,6 +87,16 @@ msgid ""
|
|||||||
"records to WEBM using the VP8 codec. %T is used as a placeholder for a guess "
|
"records to WEBM using the VP8 codec. %T is used as a placeholder for a guess "
|
||||||
"at the optimal thread count on the system."
|
"at the optimal thread count on the system."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Määrab GStreameri toru, mida kasutatakse lindistuste kodeerimiseks. See peab "
|
||||||
|
"vastama gst-launch'i süntaksile. Torul peaks olema vaba plokk (pad), kuhu "
|
||||||
|
"lindistatav video salvestatakse. Tavaliselt on vaba plokk olemas; selle "
|
||||||
|
"ploki väljund kirjutatakse väljundfaili. Toru võib hoolitseda ka enda "
|
||||||
|
"väljundi eest - seda võib kasutada väljundi saatmiseks icecast serverisse "
|
||||||
|
"shout2send või sarnase tehnoloogia abil. Kui see on määramata või väärtus on "
|
||||||
|
"tühi, kasutatakse vaikimisi toru. See on praegu 'videorate ! vp8enc "
|
||||||
|
"quality=10 speed=2 threads=%T ! queue ! webmmux' ning lindistab WEBM "
|
||||||
|
"vormingusse VP8 koodekiga. %T asendatakse süsteemi oletatava optimaalseima "
|
||||||
|
"lõimede (thread) arvuga."
|
||||||
|
|
||||||
msgid "Show date in clock"
|
msgid "Show date in clock"
|
||||||
msgstr "Kell näitab kuupäeva"
|
msgstr "Kell näitab kuupäeva"
|
||||||
@ -96,7 +110,7 @@ msgstr "Kellaaega näidatakse sekunditega"
|
|||||||
msgid ""
|
msgid ""
|
||||||
"The applications corresponding to these identifiers will be displayed in the "
|
"The applications corresponding to these identifiers will be displayed in the "
|
||||||
"favorites area."
|
"favorites area."
|
||||||
msgstr ""
|
msgstr "Nendele tunnustele vastavaid rakendusi kuvatakse lemmikutes."
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"The filename for recorded screencasts will be a unique filename based on the "
|
"The filename for recorded screencasts will be a unique filename based on the "
|
||||||
@ -112,9 +126,10 @@ msgid ""
|
|||||||
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
||||||
"screencast recorder in frames-per-second."
|
"screencast recorder in frames-per-second."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"GNOME Shelli lindistatava ekraanivideo kaadrisagedus (kaadrit sekundis)."
|
||||||
|
|
||||||
msgid "The gstreamer pipeline used to encode the screencast"
|
msgid "The gstreamer pipeline used to encode the screencast"
|
||||||
msgstr ""
|
msgstr "GStreameri toru, mida ekraanivideo kodeerimiseks kasutatakse"
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"The shell normally monitors active applications in order to present the most "
|
"The shell normally monitors active applications in order to present the most "
|
||||||
@ -122,125 +137,19 @@ msgid ""
|
|||||||
"want to disable this for privacy reasons. Please note that doing so won't "
|
"want to disable this for privacy reasons. Please note that doing so won't "
|
||||||
"remove already saved data."
|
"remove already saved data."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Shell tavaliselt seirab aktiivseid rakendusi, et näidata enamkasutatavaid "
|
||||||
|
"(näiteks käivitajaid). Kuigi neid andmeid hoitakse privaatselt, võid "
|
||||||
|
"privaatsuse suurendamiseks selle keelata. Selle keelamine siiski ei eemalda "
|
||||||
|
"juba salvestatud andmeid."
|
||||||
|
|
||||||
msgid "Uuids of extensions to disable"
|
msgid "Uuids of extensions to disable"
|
||||||
msgstr "Keelatavate laienduste UUID-d"
|
msgstr "Keelatavate laienduste UUID-d"
|
||||||
|
|
||||||
msgid "Whether to collect stats about applications usage"
|
msgid "Whether to collect stats about applications usage"
|
||||||
msgstr ""
|
msgstr "Kas rakenduste kasutuse kohta kogutakse andmeid"
|
||||||
|
|
||||||
msgid "disabled OpenSearch providers"
|
msgid "disabled OpenSearch providers"
|
||||||
msgstr ""
|
msgstr "keelatud OpenSearch pakkujad"
|
||||||
|
|
||||||
msgid "Clip the crosshairs at the center"
|
|
||||||
msgstr "Niitristi keskel on auk"
|
|
||||||
|
|
||||||
msgid "Color of the crosshairs"
|
|
||||||
msgstr "Niitristi värvus"
|
|
||||||
|
|
||||||
msgid ""
|
|
||||||
"Determines the length of the vertical and horizontal lines that make up the "
|
|
||||||
"crosshairs."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid ""
|
|
||||||
"Determines the position of the magnified mouse image within the magnified "
|
|
||||||
"view and how it reacts to system mouse movement. The values are - none: no "
|
|
||||||
"mouse tracking; - centered: the mouse image is displayed at the center of "
|
|
||||||
"the zoom region (which also represents the point under the system mouse) and "
|
|
||||||
"the magnified contents are scrolled as the system mouse moves; - "
|
|
||||||
"proportional: the position of the magnified mouse in the zoom region is "
|
|
||||||
"proportionally the same as the position of the system mouse on screen; - "
|
|
||||||
"push: when the magnified mouse intersects a boundary of the zoom region, the "
|
|
||||||
"contents are scrolled into view."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid ""
|
|
||||||
"Determines the transparency of the crosshairs, from fully opaque to fully "
|
|
||||||
"transparent."
|
|
||||||
msgstr ""
|
|
||||||
"Määrab niitristi läbipaistvuse, alates täiesti läbipaistmatust kuni täiesti "
|
|
||||||
"läbipaistvani."
|
|
||||||
|
|
||||||
msgid ""
|
|
||||||
"Determines whether the crosshairs intersect the magnified mouse sprite, or "
|
|
||||||
"are clipped such that the ends of the horizontal and vertical lines surround "
|
|
||||||
"the mouse image."
|
|
||||||
msgstr ""
|
|
||||||
"Määrab, kas niitrist kattub suurendatud hiire pildiga või on keskelt ära "
|
|
||||||
"lõigatud nii, et jooned ümbritsevad hiirekursori pilti."
|
|
||||||
|
|
||||||
msgid "Enable lens mode"
|
|
||||||
msgstr "Läätsede režiimi lubamine"
|
|
||||||
|
|
||||||
msgid ""
|
|
||||||
"Enables/disables display of crosshairs centered on the magnified mouse "
|
|
||||||
"sprite."
|
|
||||||
msgstr "Lubab/keelab niitristi kuvamise suurendatud hiirekursori kohal."
|
|
||||||
|
|
||||||
msgid ""
|
|
||||||
"For centered mouse tracking, when the system pointer is at or near the edge "
|
|
||||||
"of the screen, the magnified contents continue to scroll such that the "
|
|
||||||
"screen edge moves into the magnified view."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Length of the crosshairs"
|
|
||||||
msgstr "Niitristi pikkus"
|
|
||||||
|
|
||||||
msgid "Magnification factor"
|
|
||||||
msgstr "Suurendustegur"
|
|
||||||
|
|
||||||
msgid "Mouse Tracking Mode"
|
|
||||||
msgstr "Hiire jälitamise režiim"
|
|
||||||
|
|
||||||
msgid "Opacity of the crosshairs"
|
|
||||||
msgstr "Niitristi läbipaistvus"
|
|
||||||
|
|
||||||
msgid "Screen position"
|
|
||||||
msgstr "Ekraani asukoht"
|
|
||||||
|
|
||||||
msgid "Scroll magnified contents beyond the edges of the desktop"
|
|
||||||
msgstr "Suurendusklaas võib liikuda töölauapiiridest väljapoole"
|
|
||||||
|
|
||||||
msgid "Show or hide crosshairs"
|
|
||||||
msgstr "Niitristi kuvamine või peitmine"
|
|
||||||
|
|
||||||
msgid "Show or hide the magnifier"
|
|
||||||
msgstr "Suurendusklaasi kuvamine või peitmine"
|
|
||||||
|
|
||||||
msgid "Show or hide the magnifier and all of its zoom regions."
|
|
||||||
msgstr ""
|
|
||||||
"Suurendusklaasi ja selle kõigi suurenduspiirkondade kuvamine või peitmine."
|
|
||||||
|
|
||||||
msgid ""
|
|
||||||
"The color of the the vertical and horizontal lines that make up the "
|
|
||||||
"crosshairs."
|
|
||||||
msgstr "Niitristi püst- ja rõhtjoone värvus."
|
|
||||||
|
|
||||||
msgid ""
|
|
||||||
"The magnified view either fills the entire screen, or occupies the top-half, "
|
|
||||||
"bottom-half, left-half, or right-half of the screen."
|
|
||||||
msgstr ""
|
|
||||||
"Suurendatud vaade täidab kas kogu ekraani või täidab ülemise, alumise, "
|
|
||||||
"vasaku või parema ekraanipoole."
|
|
||||||
|
|
||||||
msgid ""
|
|
||||||
"The power of the magnification. A value of 1.0 means no magnification. A "
|
|
||||||
"value of 2.0 doubles the size."
|
|
||||||
msgstr "Suurendustegur. 1,0 tähendab originaalsuurust. 2,0 muudab kaks korda."
|
|
||||||
|
|
||||||
msgid "Thickness of the crosshairs"
|
|
||||||
msgstr "Niitristi paksus"
|
|
||||||
|
|
||||||
msgid ""
|
|
||||||
"Whether the magnified view should be centered over the location of the "
|
|
||||||
"system mouse and move with it."
|
|
||||||
msgstr ""
|
|
||||||
"Kas suurendatud vaate keskkoht peaks asetsema süsteemi hiire kohal ning "
|
|
||||||
"liikuma sellega kaasa."
|
|
||||||
|
|
||||||
msgid "Width of the vertical and horizontal lines that make up the crosshairs."
|
|
||||||
msgstr "Niitristi moodustavate püst- ja rõhtjoone laius"
|
|
||||||
|
|
||||||
msgid "Command not found"
|
msgid "Command not found"
|
||||||
msgstr "Käsku ei leitud"
|
msgstr "Käsku ei leitud"
|
||||||
@ -250,9 +159,6 @@ msgstr "Käsku ei leitud"
|
|||||||
msgid "Could not parse command:"
|
msgid "Could not parse command:"
|
||||||
msgstr "Käsku pole võimalik analüüsida:"
|
msgstr "Käsku pole võimalik analüüsida:"
|
||||||
|
|
||||||
msgid "No such application"
|
|
||||||
msgstr "Sellist rakendust ei ole"
|
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Execution of '%s' failed:"
|
msgid "Execution of '%s' failed:"
|
||||||
msgstr "'%s' käivitamine nurjus:"
|
msgstr "'%s' käivitamine nurjus:"
|
||||||
@ -264,8 +170,8 @@ msgstr "Kõik"
|
|||||||
msgid "APPLICATIONS"
|
msgid "APPLICATIONS"
|
||||||
msgstr "Rakendused"
|
msgstr "Rakendused"
|
||||||
|
|
||||||
msgid "PREFERENCES"
|
msgid "SETTINGS"
|
||||||
msgstr "Eelistused"
|
msgstr "Seaded"
|
||||||
|
|
||||||
msgid "New Window"
|
msgid "New Window"
|
||||||
msgstr "Uus aken"
|
msgstr "Uus aken"
|
||||||
@ -382,7 +288,7 @@ msgstr "L"
|
|||||||
|
|
||||||
#. Translators: Text to show if there are no events
|
#. Translators: Text to show if there are no events
|
||||||
msgid "Nothing Scheduled"
|
msgid "Nothing Scheduled"
|
||||||
msgstr ""
|
msgstr "Ühtegi sündmust pole plaanitud"
|
||||||
|
|
||||||
#. Translators: Shown on calendar heading when selected day occurs on current year
|
#. Translators: Shown on calendar heading when selected day occurs on current year
|
||||||
msgctxt "calendar heading"
|
msgctxt "calendar heading"
|
||||||
@ -465,6 +371,8 @@ msgstr "Logi välja"
|
|||||||
|
|
||||||
msgid "Click Log Out to quit these applications and log out of the system."
|
msgid "Click Log Out to quit these applications and log out of the system."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Nende rakenduste sulgemiseks ja süsteemist väljalogimiseks klõpsa nupule "
|
||||||
|
"Logi välja."
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s will be logged out automatically in %d seconds."
|
msgid "%s will be logged out automatically in %d seconds."
|
||||||
@ -482,6 +390,8 @@ msgstr "Lülita välja"
|
|||||||
|
|
||||||
msgid "Click Shut Down to quit these applications and shut down the system."
|
msgid "Click Shut Down to quit these applications and shut down the system."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Nende rakenduste sulgemiseks ja süsteemi väljalülitamiseks klõpsa nupule "
|
||||||
|
"Logi välja."
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "The system will shut down automatically in %d seconds."
|
msgid "The system will shut down automatically in %d seconds."
|
||||||
@ -534,6 +444,9 @@ msgstr "Kuva lähtekoodi"
|
|||||||
msgid "Web Page"
|
msgid "Web Page"
|
||||||
msgstr "Veebileht"
|
msgstr "Veebileht"
|
||||||
|
|
||||||
|
msgid "Open"
|
||||||
|
msgstr "Ava"
|
||||||
|
|
||||||
msgid "System Information"
|
msgid "System Information"
|
||||||
msgstr "Süsteemi andmed"
|
msgstr "Süsteemi andmed"
|
||||||
|
|
||||||
@ -546,6 +459,11 @@ msgstr "Aknad"
|
|||||||
msgid "Applications"
|
msgid "Applications"
|
||||||
msgstr "Rakendused"
|
msgstr "Rakendused"
|
||||||
|
|
||||||
|
#. Translators: this is the name of the dock/favorites area on
|
||||||
|
#. the left of the overview
|
||||||
|
msgid "Dash"
|
||||||
|
msgstr "Dokk"
|
||||||
|
|
||||||
#. TODO - _quit() doesn't really work on apps in state STARTING yet
|
#. TODO - _quit() doesn't really work on apps in state STARTING yet
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Quit %s"
|
msgid "Quit %s"
|
||||||
@ -556,6 +474,9 @@ msgstr "Lõpeta %s"
|
|||||||
msgid "Activities"
|
msgid "Activities"
|
||||||
msgstr "Tegevused"
|
msgstr "Tegevused"
|
||||||
|
|
||||||
|
msgid "Panel"
|
||||||
|
msgstr "Paneel"
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to unmount '%s'"
|
msgid "Failed to unmount '%s'"
|
||||||
msgstr "'%s' lahtihaakimine nurjus"
|
msgstr "'%s' lahtihaakimine nurjus"
|
||||||
@ -580,6 +501,18 @@ msgstr "toggle-switch-intl"
|
|||||||
msgid "Please enter a command:"
|
msgid "Please enter a command:"
|
||||||
msgstr "Palun sisesta käsk:"
|
msgstr "Palun sisesta käsk:"
|
||||||
|
|
||||||
|
msgid "Searching..."
|
||||||
|
msgstr "Otsimine..."
|
||||||
|
|
||||||
|
msgid "No matching results."
|
||||||
|
msgstr "Tulemused puuduvad."
|
||||||
|
|
||||||
|
msgid "Power Off..."
|
||||||
|
msgstr "Lülita välja..."
|
||||||
|
|
||||||
|
msgid "Suspend"
|
||||||
|
msgstr "Uinak"
|
||||||
|
|
||||||
msgid "Available"
|
msgid "Available"
|
||||||
msgstr "Saadaval"
|
msgstr "Saadaval"
|
||||||
|
|
||||||
@ -601,24 +534,15 @@ msgstr "Vaheta kasutajat"
|
|||||||
msgid "Log Out..."
|
msgid "Log Out..."
|
||||||
msgstr "Logi välja..."
|
msgstr "Logi välja..."
|
||||||
|
|
||||||
#. This is temporarily removed, see
|
|
||||||
#. http://bugzilla.gnome.org/show_bug.cgi?id=636680
|
|
||||||
#. for details.
|
|
||||||
#. item = new PopupMenu.PopupMenuItem(_("Suspend..."));
|
|
||||||
#. item.connect('activate', Lang.bind(this, this._onShutDownActivate));
|
|
||||||
#. this.menu.addMenuItem(item);
|
|
||||||
msgid "Shut Down..."
|
|
||||||
msgstr "Lülita välja..."
|
|
||||||
|
|
||||||
msgid "Zoom"
|
msgid "Zoom"
|
||||||
msgstr ""
|
msgstr "Suurendus"
|
||||||
|
|
||||||
msgid "Screen Reader"
|
|
||||||
msgstr "Ekraanilugeja"
|
|
||||||
|
|
||||||
msgid "Screen Keyboard"
|
|
||||||
msgstr "Ekraaniklaviatuur"
|
|
||||||
|
|
||||||
|
#. let screenReader = this._buildItem(_("Screen Reader"), APPLICATIONS_SCHEMA,
|
||||||
|
#. 'screen-reader-enabled');
|
||||||
|
#. this.menu.addMenuItem(screenReader);
|
||||||
|
#. let screenKeyboard = this._buildItem(_("Screen Keyboard"), APPLICATIONS_SCHEMA,
|
||||||
|
#. 'screen-keyboard-enabled');
|
||||||
|
#. this.menu.addMenuItem(screenKeyboard);
|
||||||
msgid "Visual Alerts"
|
msgid "Visual Alerts"
|
||||||
msgstr "Visuaalsed märguanded"
|
msgstr "Visuaalsed märguanded"
|
||||||
|
|
||||||
@ -638,10 +562,10 @@ msgid "Universal Access Settings"
|
|||||||
msgstr "Universaalse ligipääsu sätted"
|
msgstr "Universaalse ligipääsu sätted"
|
||||||
|
|
||||||
msgid "High Contrast"
|
msgid "High Contrast"
|
||||||
msgstr ""
|
msgstr "Kõrgkontrastne"
|
||||||
|
|
||||||
msgid "Large Text"
|
msgid "Large Text"
|
||||||
msgstr ""
|
msgstr "Suur tekst"
|
||||||
|
|
||||||
msgid "Bluetooth"
|
msgid "Bluetooth"
|
||||||
msgstr "Bluetooth"
|
msgstr "Bluetooth"
|
||||||
@ -653,7 +577,7 @@ msgid "Send Files to Device..."
|
|||||||
msgstr "Failide saatmine seadmesse..."
|
msgstr "Failide saatmine seadmesse..."
|
||||||
|
|
||||||
msgid "Setup a New Device..."
|
msgid "Setup a New Device..."
|
||||||
msgstr ""
|
msgstr "Uue seadme häälestamine..."
|
||||||
|
|
||||||
msgid "Bluetooth Settings"
|
msgid "Bluetooth Settings"
|
||||||
msgstr "Bluetoothi sätted"
|
msgstr "Bluetoothi sätted"
|
||||||
@ -672,7 +596,7 @@ msgstr "Viga seadme sirvimisel"
|
|||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "The requested device cannot be browsed, error is '%s'"
|
msgid "The requested device cannot be browsed, error is '%s'"
|
||||||
msgstr ""
|
msgstr "Küsitud seadet pole võimalik sirvida, viga on '%s'"
|
||||||
|
|
||||||
msgid "Keyboard Settings"
|
msgid "Keyboard Settings"
|
||||||
msgstr "Klaviatuurisätted"
|
msgstr "Klaviatuurisätted"
|
||||||
@ -683,9 +607,6 @@ msgstr "Hiiresätted"
|
|||||||
msgid "Sound Settings"
|
msgid "Sound Settings"
|
||||||
msgstr "Helisätted"
|
msgstr "Helisätted"
|
||||||
|
|
||||||
msgid "Bluetooth Agent"
|
|
||||||
msgstr "Bluetoothi agent"
|
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Authorization request from %s"
|
msgid "Authorization request from %s"
|
||||||
msgstr "Autoriseerimise päring seadmelt %s"
|
msgstr "Autoriseerimise päring seadmelt %s"
|
||||||
@ -731,12 +652,121 @@ msgstr "Palun sisesta seadme poolt öeldav PIN-kood."
|
|||||||
msgid "OK"
|
msgid "OK"
|
||||||
msgstr "Olgu"
|
msgstr "Olgu"
|
||||||
|
|
||||||
|
msgid "Show Keyboard Layout..."
|
||||||
|
msgstr "Klaviatuuripaigutuse kuvamine..."
|
||||||
|
|
||||||
msgid "Localization Settings"
|
msgid "Localization Settings"
|
||||||
msgstr "Lokaliseerimissätted"
|
msgstr "Lokaliseerimissätted"
|
||||||
|
|
||||||
|
msgid "<unknown>"
|
||||||
|
msgstr "<tundmatu>"
|
||||||
|
|
||||||
|
#. Translators: this indicates that wireless or wwan is disabled by hardware killswitch
|
||||||
|
msgid "disabled"
|
||||||
|
msgstr "keelatud"
|
||||||
|
|
||||||
|
msgid "connecting..."
|
||||||
|
msgstr "ühendumine..."
|
||||||
|
|
||||||
|
#. Translators: this is for network connections that require some kind of key or password
|
||||||
|
msgid "authentication required"
|
||||||
|
msgstr "vajalik on autentimine"
|
||||||
|
|
||||||
|
#. Translators: this is for wired network devices that are physically disconnected
|
||||||
|
msgid "cable unplugged"
|
||||||
|
msgstr "juhe eemaldatud"
|
||||||
|
|
||||||
|
#. Translators: this is for a network device that cannot be activated (for example it
|
||||||
|
#. is disabled by rfkill, or it has no coverage
|
||||||
|
msgid "unavailable"
|
||||||
|
msgstr "pole saadaval"
|
||||||
|
|
||||||
|
msgid "connection failed"
|
||||||
|
msgstr "ühendumine nurjus"
|
||||||
|
|
||||||
|
#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
|
||||||
|
#. and we cannot access its settings (including the name)
|
||||||
|
msgid "Connected (private)"
|
||||||
|
msgstr "Ühendatud (privaatne)"
|
||||||
|
|
||||||
|
msgid "Auto Ethernet"
|
||||||
|
msgstr "Automaatne ethernet"
|
||||||
|
|
||||||
|
msgid "Auto broadband"
|
||||||
|
msgstr "Automaatne lairibaühendus"
|
||||||
|
|
||||||
|
msgid "Auto dial-up"
|
||||||
|
msgstr "Automaatne sissehelistamine"
|
||||||
|
|
||||||
|
#. TRANSLATORS: this the automatic wireless connection name (including the network name)
|
||||||
|
#, c-format
|
||||||
|
msgid "Auto %s"
|
||||||
|
msgstr "Automaatne %s"
|
||||||
|
|
||||||
|
msgid "Auto bluetooth"
|
||||||
|
msgstr "Automaatne bluetooth"
|
||||||
|
|
||||||
|
msgid "Auto wireless"
|
||||||
|
msgstr "Automaatne juhtmeta ühendus"
|
||||||
|
|
||||||
|
msgid "More..."
|
||||||
|
msgstr "Veel..."
|
||||||
|
|
||||||
|
msgid "Enable networking"
|
||||||
|
msgstr "Luba võrguühendused"
|
||||||
|
|
||||||
|
msgid "Wired"
|
||||||
|
msgstr "Juhtmega"
|
||||||
|
|
||||||
|
msgid "Wireless"
|
||||||
|
msgstr "Juhtmeta"
|
||||||
|
|
||||||
|
msgid "Mobile broadband"
|
||||||
|
msgstr "Mobiiliühendus"
|
||||||
|
|
||||||
|
msgid "VPN Connections"
|
||||||
|
msgstr "VPN-ühendused"
|
||||||
|
|
||||||
|
msgid "Network Settings"
|
||||||
|
msgstr "Võrgusätted"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "You're now connected to mobile broadband connection '%s'"
|
||||||
|
msgstr "Loodi mobiiliühendus '%s'"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "You're now connected to wireless network '%s'"
|
||||||
|
msgstr "Loodi ühendus juhtmeta võrguga '%s'"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "You're now connected to wired network '%s'"
|
||||||
|
msgstr "Loodi ühendus juhtmega võrguga '%s'"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "You're now connected to VPN network '%s'"
|
||||||
|
msgstr "Loodi ühendus VPN-võrguga '%s'"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "You're now connected to '%s'"
|
||||||
|
msgstr "Loodi võrguühendus '%s' kaudu"
|
||||||
|
|
||||||
|
msgid "Connection estabilished"
|
||||||
|
msgstr "Ühendus loodud"
|
||||||
|
|
||||||
|
msgid "Networking is disabled"
|
||||||
|
msgstr "Võrguühendused on keelatud"
|
||||||
|
|
||||||
|
msgid "Network Manager"
|
||||||
|
msgstr "Võrguhaldur"
|
||||||
|
|
||||||
msgid "Power Settings"
|
msgid "Power Settings"
|
||||||
msgstr "Toitesätted..."
|
msgstr "Toitesätted..."
|
||||||
|
|
||||||
|
#. 0 is reported when UPower does not have enough data
|
||||||
|
#. to estimate battery life
|
||||||
|
msgid "Estimating..."
|
||||||
|
msgstr "Andmete kogumine..."
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d hour remaining"
|
msgid "%d hour remaining"
|
||||||
msgid_plural "%d hours remaining"
|
msgid_plural "%d hours remaining"
|
||||||
@ -829,8 +859,15 @@ msgstr "%s on hõivatud."
|
|||||||
msgid "Sent at %X on %A"
|
msgid "Sent at %X on %A"
|
||||||
msgstr "Saadetud: %a, kell %X"
|
msgstr "Saadetud: %a, kell %X"
|
||||||
|
|
||||||
msgid "Search your computer"
|
#. Translators: this is the text displayed
|
||||||
msgstr ""
|
#. in the search entry when no search is
|
||||||
|
#. active; it should not exceed ~30
|
||||||
|
#. characters.
|
||||||
|
msgid "Type to search..."
|
||||||
|
msgstr "Otsing..."
|
||||||
|
|
||||||
|
msgid "Search"
|
||||||
|
msgstr "Otsing"
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s has finished starting"
|
msgid "%s has finished starting"
|
||||||
@ -840,32 +877,32 @@ msgstr "%s läks käima"
|
|||||||
msgid "'%s' is ready"
|
msgid "'%s' is ready"
|
||||||
msgstr "'%s' on valmis"
|
msgstr "'%s' on valmis"
|
||||||
|
|
||||||
msgid ""
|
|
||||||
"Can't add a new workspace because maximum workspaces limit has been reached."
|
|
||||||
msgstr "Pole võimalik uut tööala lisada, kuna tööalade piir on saavutatud."
|
|
||||||
|
|
||||||
msgid "Can't remove the first workspace."
|
|
||||||
msgstr "Esimest tööala pole võimalik eemaldada."
|
|
||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The number of sound outputs on a particular device
|
#. * The number of sound outputs on a particular device
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%u Output"
|
msgid "%u Output"
|
||||||
msgid_plural "%u Outputs"
|
msgid_plural "%u Outputs"
|
||||||
msgstr[0] ""
|
msgstr[0] "%u väljund"
|
||||||
msgstr[1] ""
|
msgstr[1] "%u väljundit"
|
||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The number of sound inputs on a particular device
|
#. * The number of sound inputs on a particular device
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%u Input"
|
msgid "%u Input"
|
||||||
msgid_plural "%u Inputs"
|
msgid_plural "%u Inputs"
|
||||||
msgstr[0] ""
|
msgstr[0] "%u sisend"
|
||||||
msgstr[1] ""
|
msgstr[1] "%u sisendit"
|
||||||
|
|
||||||
msgid "System Sounds"
|
msgid "System Sounds"
|
||||||
msgstr "Süsteemi helid"
|
msgstr "Süsteemi helid"
|
||||||
|
|
||||||
|
msgid "Print version"
|
||||||
|
msgstr "Printimise versioon"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "Failed to launch '%s'"
|
||||||
|
msgstr "'%s' käivitamine nurjus"
|
||||||
|
|
||||||
msgid "Less than a minute ago"
|
msgid "Less than a minute ago"
|
||||||
msgstr "Vähem kui minuti eest"
|
msgstr "Vähem kui minuti eest"
|
||||||
|
|
||||||
@ -893,6 +930,15 @@ msgid_plural "%d weeks ago"
|
|||||||
msgstr[0] "%d nädal tagasi"
|
msgstr[0] "%d nädal tagasi"
|
||||||
msgstr[1] "%d nädalat tagasi"
|
msgstr[1] "%d nädalat tagasi"
|
||||||
|
|
||||||
|
msgid "United Kingdom"
|
||||||
|
msgstr "Suurbritannia"
|
||||||
|
|
||||||
|
msgid "Default"
|
||||||
|
msgstr "Vaikimisi"
|
||||||
|
|
||||||
|
msgid "Authentication dialog was dismissed by the user"
|
||||||
|
msgstr "Kasutaja katkestas autentimisdialoogi"
|
||||||
|
|
||||||
msgid "Home Folder"
|
msgid "Home Folder"
|
||||||
msgstr "Kodukaust"
|
msgstr "Kodukaust"
|
||||||
|
|
||||||
@ -901,9 +947,6 @@ msgstr "Kodukaust"
|
|||||||
msgid "File System"
|
msgid "File System"
|
||||||
msgstr "Failisüsteem"
|
msgstr "Failisüsteem"
|
||||||
|
|
||||||
msgid "Search"
|
|
||||||
msgstr "Otsing"
|
|
||||||
|
|
||||||
#. Translators: the first string is the name of a gvfs
|
#. Translators: the first string is the name of a gvfs
|
||||||
#. * method, and the second string is a path. For
|
#. * method, and the second string is a path. For
|
||||||
#. * example, "Trash: some-directory". It means that the
|
#. * example, "Trash: some-directory". It means that the
|
||||||
@ -913,8 +956,120 @@ msgstr "Otsing"
|
|||||||
msgid "%1$s: %2$s"
|
msgid "%1$s: %2$s"
|
||||||
msgstr "%1$s: %2$s"
|
msgstr "%1$s: %2$s"
|
||||||
|
|
||||||
#~ msgid "Suspend..."
|
#~ msgid "No such application"
|
||||||
#~ msgstr "Peata..."
|
#~ msgstr "Sellist rakendust ei ole"
|
||||||
|
|
||||||
|
#~ msgid "Screen Reader"
|
||||||
|
#~ msgstr "Ekraanilugeja"
|
||||||
|
|
||||||
|
#~ msgid "Screen Keyboard"
|
||||||
|
#~ msgstr "Ekraaniklaviatuur"
|
||||||
|
|
||||||
|
#~ msgid "Clip the crosshairs at the center"
|
||||||
|
#~ msgstr "Niitristi keskel on auk"
|
||||||
|
|
||||||
|
#~ msgid "Color of the crosshairs"
|
||||||
|
#~ msgstr "Niitristi värvus"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "Determines the transparency of the crosshairs, from fully opaque to fully "
|
||||||
|
#~ "transparent."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Määrab niitristi läbipaistvuse, alates täiesti läbipaistmatust kuni "
|
||||||
|
#~ "täiesti läbipaistvani."
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "Determines whether the crosshairs intersect the magnified mouse sprite, "
|
||||||
|
#~ "or are clipped such that the ends of the horizontal and vertical lines "
|
||||||
|
#~ "surround the mouse image."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Määrab, kas niitrist kattub suurendatud hiire pildiga või on keskelt ära "
|
||||||
|
#~ "lõigatud nii, et jooned ümbritsevad hiirekursori pilti."
|
||||||
|
|
||||||
|
#~ msgid "Enable lens mode"
|
||||||
|
#~ msgstr "Läätsede režiimi lubamine"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "Enables/disables display of crosshairs centered on the magnified mouse "
|
||||||
|
#~ "sprite."
|
||||||
|
#~ msgstr "Lubab/keelab niitristi kuvamise suurendatud hiirekursori kohal."
|
||||||
|
|
||||||
|
#~ msgid "Length of the crosshairs"
|
||||||
|
#~ msgstr "Niitristi pikkus"
|
||||||
|
|
||||||
|
#~ msgid "Magnification factor"
|
||||||
|
#~ msgstr "Suurendustegur"
|
||||||
|
|
||||||
|
#~ msgid "Mouse Tracking Mode"
|
||||||
|
#~ msgstr "Hiire jälitamise režiim"
|
||||||
|
|
||||||
|
#~ msgid "Opacity of the crosshairs"
|
||||||
|
#~ msgstr "Niitristi läbipaistvus"
|
||||||
|
|
||||||
|
#~ msgid "Screen position"
|
||||||
|
#~ msgstr "Ekraani asukoht"
|
||||||
|
|
||||||
|
#~ msgid "Scroll magnified contents beyond the edges of the desktop"
|
||||||
|
#~ msgstr "Suurendusklaas võib liikuda töölauapiiridest väljapoole"
|
||||||
|
|
||||||
|
#~ msgid "Show or hide crosshairs"
|
||||||
|
#~ msgstr "Niitristi kuvamine või peitmine"
|
||||||
|
|
||||||
|
#~ msgid "Show or hide the magnifier"
|
||||||
|
#~ msgstr "Suurendusklaasi kuvamine või peitmine"
|
||||||
|
|
||||||
|
#~ msgid "Show or hide the magnifier and all of its zoom regions."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Suurendusklaasi ja selle kõigi suurenduspiirkondade kuvamine või peitmine."
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "The color of the the vertical and horizontal lines that make up the "
|
||||||
|
#~ "crosshairs."
|
||||||
|
#~ msgstr "Niitristi püst- ja rõhtjoone värvus."
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "The magnified view either fills the entire screen, or occupies the top-"
|
||||||
|
#~ "half, bottom-half, left-half, or right-half of the screen."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Suurendatud vaade täidab kas kogu ekraani või täidab ülemise, alumise, "
|
||||||
|
#~ "vasaku või parema ekraanipoole."
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "The power of the magnification. A value of 1.0 means no magnification. A "
|
||||||
|
#~ "value of 2.0 doubles the size."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Suurendustegur. 1,0 tähendab originaalsuurust. 2,0 muudab kaks korda."
|
||||||
|
|
||||||
|
#~ msgid "Thickness of the crosshairs"
|
||||||
|
#~ msgstr "Niitristi paksus"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "Whether the magnified view should be centered over the location of the "
|
||||||
|
#~ "system mouse and move with it."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Kas suurendatud vaate keskkoht peaks asetsema süsteemi hiire kohal ning "
|
||||||
|
#~ "liikuma sellega kaasa."
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "Width of the vertical and horizontal lines that make up the crosshairs."
|
||||||
|
#~ msgstr "Niitristi moodustavate püst- ja rõhtjoone laius"
|
||||||
|
|
||||||
|
#~ msgid "PREFERENCES"
|
||||||
|
#~ msgstr "Eelistused"
|
||||||
|
|
||||||
|
#~ msgid "Shut Down..."
|
||||||
|
#~ msgstr "Lülita välja..."
|
||||||
|
|
||||||
|
#~ msgid "Bluetooth Agent"
|
||||||
|
#~ msgstr "Bluetoothi agent"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "Can't add a new workspace because maximum workspaces limit has been "
|
||||||
|
#~ "reached."
|
||||||
|
#~ msgstr "Pole võimalik uut tööala lisada, kuna tööalade piir on saavutatud."
|
||||||
|
|
||||||
|
#~ msgid "Can't remove the first workspace."
|
||||||
|
#~ msgstr "Esimest tööala pole võimalik eemaldada."
|
||||||
|
|
||||||
#~ msgid "Clock"
|
#~ msgid "Clock"
|
||||||
#~ msgstr "Kell"
|
#~ msgstr "Kell"
|
||||||
@ -958,11 +1113,5 @@ msgstr "%1$s: %2$s"
|
|||||||
#~ msgid "Find"
|
#~ msgid "Find"
|
||||||
#~ msgstr "Otsi"
|
#~ msgstr "Otsi"
|
||||||
|
|
||||||
#~ msgid "Searching..."
|
|
||||||
#~ msgstr "Otsimine..."
|
|
||||||
|
|
||||||
#~ msgid "No matching results."
|
|
||||||
#~ msgstr "Tulemused puuduvad."
|
|
||||||
|
|
||||||
#~ msgid "Invisible"
|
#~ msgid "Invisible"
|
||||||
#~ msgstr "Nähtamatu"
|
#~ msgstr "Nähtamatu"
|
||||||
|
342
po/he.po
342
po/he.po
@ -8,8 +8,8 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gnome-shell master\n"
|
"Project-Id-Version: gnome-shell master\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2011-03-10 18:43+0200\n"
|
"POT-Creation-Date: 2011-03-17 00:33+0200\n"
|
||||||
"PO-Revision-Date: 2011-03-10 18:45+0200\n"
|
"PO-Revision-Date: 2011-03-17 00:37+0200\n"
|
||||||
"Last-Translator: Yaron Shahrabani <sh.yaron@gmail.com>\n"
|
"Last-Translator: Yaron Shahrabani <sh.yaron@gmail.com>\n"
|
||||||
"Language-Team: Hebrew <sh.yaron@gmail.com>\n"
|
"Language-Team: Hebrew <sh.yaron@gmail.com>\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
@ -171,21 +171,17 @@ msgstr "Whether to collect stats about applications usage"
|
|||||||
msgid "disabled OpenSearch providers"
|
msgid "disabled OpenSearch providers"
|
||||||
msgstr "disabled OpenSearch providers"
|
msgstr "disabled OpenSearch providers"
|
||||||
|
|
||||||
#: ../js/misc/util.js:86
|
#: ../js/misc/util.js:71
|
||||||
msgid "Command not found"
|
msgid "Command not found"
|
||||||
msgstr "הפקודה לא נמצאה"
|
msgstr "הפקודה לא נמצאה"
|
||||||
|
|
||||||
#. Replace "Error invoking GLib.shell_parse_argv: " with
|
#. Replace "Error invoking GLib.shell_parse_argv: " with
|
||||||
#. something nicer
|
#. something nicer
|
||||||
#: ../js/misc/util.js:113
|
#: ../js/misc/util.js:98
|
||||||
msgid "Could not parse command:"
|
msgid "Could not parse command:"
|
||||||
msgstr "לא ניתן לפענח את הפקודה:"
|
msgstr "לא ניתן לפענח את הפקודה:"
|
||||||
|
|
||||||
#: ../js/misc/util.js:135
|
#: ../js/misc/util.js:106
|
||||||
msgid "No such application"
|
|
||||||
msgstr "אין כזה יישום"
|
|
||||||
|
|
||||||
#: ../js/misc/util.js:148
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Execution of '%s' failed:"
|
msgid "Execution of '%s' failed:"
|
||||||
msgstr "ההרצה של '%s' נכשלה:"
|
msgstr "ההרצה של '%s' נכשלה:"
|
||||||
@ -371,7 +367,7 @@ msgstr "השבוע"
|
|||||||
msgid "Next week"
|
msgid "Next week"
|
||||||
msgstr "בשבוע הבא"
|
msgstr "בשבוע הבא"
|
||||||
|
|
||||||
#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:931
|
#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:933
|
||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "הסרה"
|
msgstr "הסרה"
|
||||||
|
|
||||||
@ -426,7 +422,7 @@ msgstr "%a %l:%M %p"
|
|||||||
#. Translators: This is the date format to use when the calendar popup is
|
#. 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").
|
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
|
||||||
#.
|
#.
|
||||||
#: ../js/ui/dateMenu.js:209
|
#: ../js/ui/dateMenu.js:194
|
||||||
msgid "%A %B %e, %Y"
|
msgid "%A %B %e, %Y"
|
||||||
msgstr "%A ה־%e ב%B, %Y"
|
msgstr "%A ה־%e ב%B, %Y"
|
||||||
|
|
||||||
@ -499,7 +495,7 @@ msgstr "המערכת מופעלת מחדש"
|
|||||||
msgid "Confirm"
|
msgid "Confirm"
|
||||||
msgstr "אישור"
|
msgstr "אישור"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:400 ../js/ui/status/bluetooth.js:470
|
#: ../js/ui/endSessionDialog.js:400 ../js/ui/status/bluetooth.js:465
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "ביטול"
|
msgstr "ביטול"
|
||||||
|
|
||||||
@ -513,7 +509,7 @@ msgstr "פעיל"
|
|||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The device has been disabled
|
#. * The device has been disabled
|
||||||
#: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1087
|
#: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1091
|
||||||
msgid "Disabled"
|
msgid "Disabled"
|
||||||
msgstr "מנוטרל"
|
msgstr "מנוטרל"
|
||||||
|
|
||||||
@ -533,11 +529,11 @@ msgstr "צפייה במקור"
|
|||||||
msgid "Web Page"
|
msgid "Web Page"
|
||||||
msgstr "דף אינטרנט"
|
msgstr "דף אינטרנט"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:924
|
#: ../js/ui/messageTray.js:926
|
||||||
msgid "Open"
|
msgid "Open"
|
||||||
msgstr "פתיחה"
|
msgstr "פתיחה"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1961
|
#: ../js/ui/messageTray.js:1986
|
||||||
msgid "System Information"
|
msgid "System Information"
|
||||||
msgstr "פרטי המערכת"
|
msgstr "פרטי המערכת"
|
||||||
|
|
||||||
@ -560,18 +556,18 @@ msgid "Dash"
|
|||||||
msgstr "חלונית"
|
msgstr "חלונית"
|
||||||
|
|
||||||
#. TODO - _quit() doesn't really work on apps in state STARTING yet
|
#. TODO - _quit() doesn't really work on apps in state STARTING yet
|
||||||
#: ../js/ui/panel.js:560
|
#: ../js/ui/panel.js:514
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Quit %s"
|
msgid "Quit %s"
|
||||||
msgstr "יציאה מ־%s"
|
msgstr "יציאה מ־%s"
|
||||||
|
|
||||||
#. Button on the left side of the panel.
|
#. Button on the left side of the panel.
|
||||||
#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
|
#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
|
||||||
#: ../js/ui/panel.js:919
|
#: ../js/ui/panel.js:873
|
||||||
msgid "Activities"
|
msgid "Activities"
|
||||||
msgstr "פעילויות"
|
msgstr "פעילויות"
|
||||||
|
|
||||||
#: ../js/ui/panel.js:1020
|
#: ../js/ui/panel.js:974
|
||||||
msgid "Panel"
|
msgid "Panel"
|
||||||
msgstr "לוח"
|
msgstr "לוח"
|
||||||
|
|
||||||
@ -588,7 +584,7 @@ msgstr "ניסיון חוזר"
|
|||||||
msgid "Connect to..."
|
msgid "Connect to..."
|
||||||
msgstr "התחברות אל..."
|
msgstr "התחברות אל..."
|
||||||
|
|
||||||
#: ../js/ui/placeDisplay.js:409
|
#: ../js/ui/placeDisplay.js:380
|
||||||
msgid "PLACES & DEVICES"
|
msgid "PLACES & DEVICES"
|
||||||
msgstr "מקומות והתקנים"
|
msgstr "מקומות והתקנים"
|
||||||
|
|
||||||
@ -597,7 +593,7 @@ msgstr "מקומות והתקנים"
|
|||||||
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
||||||
#. switches containing "◯" and "|"). Other values will
|
#. switches containing "◯" and "|"). Other values will
|
||||||
#. simply result in invisible toggle switches.
|
#. simply result in invisible toggle switches.
|
||||||
#: ../js/ui/popupMenu.js:618
|
#: ../js/ui/popupMenu.js:636
|
||||||
msgid "toggle-switch-us"
|
msgid "toggle-switch-us"
|
||||||
msgstr "toggle-switch-intl"
|
msgstr "toggle-switch-intl"
|
||||||
|
|
||||||
@ -613,39 +609,39 @@ msgstr "בחיפוש..."
|
|||||||
msgid "No matching results."
|
msgid "No matching results."
|
||||||
msgstr "אין תוצאות תואמות."
|
msgstr "אין תוצאות תואמות."
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:113 ../js/ui/statusMenu.js:177
|
#: ../js/ui/statusMenu.js:114 ../js/ui/statusMenu.js:178
|
||||||
msgid "Power Off..."
|
msgid "Power Off..."
|
||||||
msgstr "כיבוי..."
|
msgstr "כיבוי..."
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:115 ../js/ui/statusMenu.js:176
|
#: ../js/ui/statusMenu.js:116 ../js/ui/statusMenu.js:177
|
||||||
msgid "Suspend"
|
msgid "Suspend"
|
||||||
msgstr "השהיה"
|
msgstr "השהיה"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:136
|
#: ../js/ui/statusMenu.js:137
|
||||||
msgid "Available"
|
msgid "Available"
|
||||||
msgstr "זמין"
|
msgstr "זמין"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:141
|
#: ../js/ui/statusMenu.js:142
|
||||||
msgid "Busy"
|
msgid "Busy"
|
||||||
msgstr "עסוק"
|
msgstr "עסוק"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:149
|
#: ../js/ui/statusMenu.js:150
|
||||||
msgid "My Account"
|
msgid "My Account"
|
||||||
msgstr "החשבון שלי"
|
msgstr "החשבון שלי"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:153
|
#: ../js/ui/statusMenu.js:154
|
||||||
msgid "System Settings"
|
msgid "System Settings"
|
||||||
msgstr "הגדרות המערכת"
|
msgstr "הגדרות המערכת"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:160
|
#: ../js/ui/statusMenu.js:161
|
||||||
msgid "Lock Screen"
|
msgid "Lock Screen"
|
||||||
msgstr "נעילת המסך"
|
msgstr "נעילת המסך"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:164
|
#: ../js/ui/statusMenu.js:165
|
||||||
msgid "Switch User"
|
msgid "Switch User"
|
||||||
msgstr "החלפת משתמש"
|
msgstr "החלפת משתמש"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:169
|
#: ../js/ui/statusMenu.js:170
|
||||||
msgid "Log Out..."
|
msgid "Log Out..."
|
||||||
msgstr "ניתוק..."
|
msgstr "ניתוק..."
|
||||||
|
|
||||||
@ -653,14 +649,12 @@ msgstr "ניתוק..."
|
|||||||
msgid "Zoom"
|
msgid "Zoom"
|
||||||
msgstr "תקריב"
|
msgstr "תקריב"
|
||||||
|
|
||||||
#: ../js/ui/status/accessibility.js:69
|
#. let screenReader = this._buildItem(_("Screen Reader"), APPLICATIONS_SCHEMA,
|
||||||
msgid "Screen Reader"
|
#. 'screen-reader-enabled');
|
||||||
msgstr "מקריא מסך"
|
#. this.menu.addMenuItem(screenReader);
|
||||||
|
#. let screenKeyboard = this._buildItem(_("Screen Keyboard"), APPLICATIONS_SCHEMA,
|
||||||
#: ../js/ui/status/accessibility.js:73
|
#. 'screen-keyboard-enabled');
|
||||||
msgid "Screen Keyboard"
|
#. this.menu.addMenuItem(screenKeyboard);
|
||||||
msgstr "מקלדת מסך"
|
|
||||||
|
|
||||||
#: ../js/ui/status/accessibility.js:77
|
#: ../js/ui/status/accessibility.js:77
|
||||||
msgid "Visual Alerts"
|
msgid "Visual Alerts"
|
||||||
msgstr "התראות חזותיות"
|
msgstr "התראות חזותיות"
|
||||||
@ -685,17 +679,17 @@ msgstr "מקשי עכבר"
|
|||||||
msgid "Universal Access Settings"
|
msgid "Universal Access Settings"
|
||||||
msgstr "הגדרות גישה אוניברסלית"
|
msgstr "הגדרות גישה אוניברסלית"
|
||||||
|
|
||||||
#: ../js/ui/status/accessibility.js:145
|
#: ../js/ui/status/accessibility.js:146
|
||||||
msgid "High Contrast"
|
msgid "High Contrast"
|
||||||
msgstr "ניגודיות גבוהה"
|
msgstr "ניגודיות גבוהה"
|
||||||
|
|
||||||
#: ../js/ui/status/accessibility.js:182
|
#: ../js/ui/status/accessibility.js:183
|
||||||
msgid "Large Text"
|
msgid "Large Text"
|
||||||
msgstr "טקסט גדול"
|
msgstr "טקסט גדול"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:241
|
#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:236
|
||||||
#: ../js/ui/status/bluetooth.js:337 ../js/ui/status/bluetooth.js:371
|
#: ../js/ui/status/bluetooth.js:332 ../js/ui/status/bluetooth.js:366
|
||||||
#: ../js/ui/status/bluetooth.js:411 ../js/ui/status/bluetooth.js:444
|
#: ../js/ui/status/bluetooth.js:406 ../js/ui/status/bluetooth.js:439
|
||||||
msgid "Bluetooth"
|
msgid "Bluetooth"
|
||||||
msgstr "Bluetooth"
|
msgstr "Bluetooth"
|
||||||
|
|
||||||
@ -715,94 +709,94 @@ msgstr "הגדרת התקן חדש..."
|
|||||||
msgid "Bluetooth Settings"
|
msgid "Bluetooth Settings"
|
||||||
msgstr "הגדרות Bluetooth"
|
msgstr "הגדרות Bluetooth"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:192
|
#: ../js/ui/status/bluetooth.js:187
|
||||||
msgid "Connection"
|
msgid "Connection"
|
||||||
msgstr "חיבור"
|
msgstr "חיבור"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:228
|
#: ../js/ui/status/bluetooth.js:223
|
||||||
msgid "Send Files..."
|
msgid "Send Files..."
|
||||||
msgstr "שליחת קבצים..."
|
msgstr "שליחת קבצים..."
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:233
|
#: ../js/ui/status/bluetooth.js:228
|
||||||
msgid "Browse Files..."
|
msgid "Browse Files..."
|
||||||
msgstr "עיון בקבצים..."
|
msgstr "עיון בקבצים..."
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:242
|
#: ../js/ui/status/bluetooth.js:237
|
||||||
msgid "Error browsing device"
|
msgid "Error browsing device"
|
||||||
msgstr "שגיאה בעיון בהתקן"
|
msgstr "שגיאה בעיון בהתקן"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:243
|
#: ../js/ui/status/bluetooth.js:238
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "The requested device cannot be browsed, error is '%s'"
|
msgid "The requested device cannot be browsed, error is '%s'"
|
||||||
msgstr "לא ניתן לעיין בהתקן הנבחר, השגיאה היא '%s'"
|
msgstr "לא ניתן לעיין בהתקן הנבחר, השגיאה היא '%s'"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:251
|
#: ../js/ui/status/bluetooth.js:246
|
||||||
msgid "Keyboard Settings"
|
msgid "Keyboard Settings"
|
||||||
msgstr "הגדרות מקלדת"
|
msgstr "הגדרות מקלדת"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:256
|
#: ../js/ui/status/bluetooth.js:251
|
||||||
msgid "Mouse Settings"
|
msgid "Mouse Settings"
|
||||||
msgstr "הגדרות עכבר"
|
msgstr "הגדרות עכבר"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:263 ../js/ui/status/volume.js:65
|
#: ../js/ui/status/bluetooth.js:258 ../js/ui/status/volume.js:66
|
||||||
msgid "Sound Settings"
|
msgid "Sound Settings"
|
||||||
msgstr "הגדרות שמע"
|
msgstr "הגדרות שמע"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:372
|
#: ../js/ui/status/bluetooth.js:367
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Authorization request from %s"
|
msgid "Authorization request from %s"
|
||||||
msgstr "בקשת אישור מאת %s"
|
msgstr "בקשת אישור מאת %s"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:378
|
#: ../js/ui/status/bluetooth.js:373
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Device %s wants access to the service '%s'"
|
msgid "Device %s wants access to the service '%s'"
|
||||||
msgstr "ההתקן %s מעוניין לגשת אל השירות '%s'"
|
msgstr "ההתקן %s מעוניין לגשת אל השירות '%s'"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:380
|
#: ../js/ui/status/bluetooth.js:375
|
||||||
msgid "Always grant access"
|
msgid "Always grant access"
|
||||||
msgstr "תמיד להעניק גישה"
|
msgstr "תמיד להעניק גישה"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:381
|
#: ../js/ui/status/bluetooth.js:376
|
||||||
msgid "Grant this time only"
|
msgid "Grant this time only"
|
||||||
msgstr "הענקת גישה הפעם בלבד"
|
msgstr "הענקת גישה הפעם בלבד"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:382
|
#: ../js/ui/status/bluetooth.js:377
|
||||||
msgid "Reject"
|
msgid "Reject"
|
||||||
msgstr "סירוב"
|
msgstr "סירוב"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:412
|
#: ../js/ui/status/bluetooth.js:407
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Pairing confirmation for %s"
|
msgid "Pairing confirmation for %s"
|
||||||
msgstr "אישור צימוד עבור %s"
|
msgstr "אישור צימוד עבור %s"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:418 ../js/ui/status/bluetooth.js:452
|
#: ../js/ui/status/bluetooth.js:413 ../js/ui/status/bluetooth.js:447
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Device %s wants to pair with this computer"
|
msgid "Device %s wants to pair with this computer"
|
||||||
msgstr "ההתקן %s מעוניין בצימוד עם מחשב זה"
|
msgstr "ההתקן %s מעוניין בצימוד עם מחשב זה"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:419
|
#: ../js/ui/status/bluetooth.js:414
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Please confirm whether the PIN '%s' matches the one on the device."
|
msgid "Please confirm whether the PIN '%s' matches the one on the device."
|
||||||
msgstr "נא לאשר האם קוד ה־PIN '%s' תואם את זה שמופיע בהתקן."
|
msgstr "נא לאשר האם קוד ה־PIN '%s' תואם את זה שמופיע בהתקן."
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:421
|
#: ../js/ui/status/bluetooth.js:416
|
||||||
msgid "Matches"
|
msgid "Matches"
|
||||||
msgstr "התאמות"
|
msgstr "התאמות"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:422
|
#: ../js/ui/status/bluetooth.js:417
|
||||||
msgid "Does not match"
|
msgid "Does not match"
|
||||||
msgstr "אינו תואם"
|
msgstr "אינו תואם"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:445
|
#: ../js/ui/status/bluetooth.js:440
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Pairing request for %s"
|
msgid "Pairing request for %s"
|
||||||
msgstr "בקשת צימוד עבור %s"
|
msgstr "בקשת צימוד עבור %s"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:453
|
#: ../js/ui/status/bluetooth.js:448
|
||||||
msgid "Please enter the PIN mentioned on the device."
|
msgid "Please enter the PIN mentioned on the device."
|
||||||
msgstr "נא להזין את קוד ה־PIN המוזכר בהתקן."
|
msgstr "נא להזין את קוד ה־PIN המוזכר בהתקן."
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:469
|
#: ../js/ui/status/bluetooth.js:464
|
||||||
msgid "OK"
|
msgid "OK"
|
||||||
msgstr "אישור"
|
msgstr "אישור"
|
||||||
|
|
||||||
@ -814,17 +808,147 @@ msgstr "הצגת פריסת המקלדת..."
|
|||||||
msgid "Localization Settings"
|
msgid "Localization Settings"
|
||||||
msgstr "הגדרות אזוריות"
|
msgstr "הגדרות אזוריות"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:102 ../js/ui/status/network.js:1393
|
||||||
|
msgid "<unknown>"
|
||||||
|
msgstr "<לא ידוע>"
|
||||||
|
|
||||||
|
#. Translators: this indicates that wireless or wwan is disabled by hardware killswitch
|
||||||
|
#: ../js/ui/status/network.js:295
|
||||||
|
msgid "disabled"
|
||||||
|
msgstr "מנוטרל"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:476
|
||||||
|
msgid "connecting..."
|
||||||
|
msgstr "בהתחברות..."
|
||||||
|
|
||||||
|
#. Translators: this is for network connections that require some kind of key or password
|
||||||
|
#: ../js/ui/status/network.js:479
|
||||||
|
msgid "authentication required"
|
||||||
|
msgstr "נדרש אימות"
|
||||||
|
|
||||||
|
#. Translators: this is for wired network devices that are physically disconnected
|
||||||
|
#: ../js/ui/status/network.js:485
|
||||||
|
msgid "cable unplugged"
|
||||||
|
msgstr "הכבל מנותק"
|
||||||
|
|
||||||
|
#. Translators: this is for a network device that cannot be activated (for example it
|
||||||
|
#. is disabled by rfkill, or it has no coverage
|
||||||
|
#: ../js/ui/status/network.js:489
|
||||||
|
msgid "unavailable"
|
||||||
|
msgstr "לא זמין"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:491
|
||||||
|
msgid "connection failed"
|
||||||
|
msgstr "החיבור נכשל"
|
||||||
|
|
||||||
|
#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
|
||||||
|
#. and we cannot access its settings (including the name)
|
||||||
|
#: ../js/ui/status/network.js:571 ../js/ui/status/network.js:1341
|
||||||
|
msgid "Connected (private)"
|
||||||
|
msgstr "מחובר (פרטי)"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:636
|
||||||
|
msgid "Auto Ethernet"
|
||||||
|
msgstr "אתרנט אוטומטי"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:697
|
||||||
|
msgid "Auto broadband"
|
||||||
|
msgstr "פס רחב אוטומטי"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:700
|
||||||
|
msgid "Auto dial-up"
|
||||||
|
msgstr "חיוג אוטומטי"
|
||||||
|
|
||||||
|
#. TRANSLATORS: this the automatic wireless connection name (including the network name)
|
||||||
|
#: ../js/ui/status/network.js:843 ../js/ui/status/network.js:1353
|
||||||
|
#, c-format
|
||||||
|
msgid "Auto %s"
|
||||||
|
msgstr "%s אוטומטי"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:845
|
||||||
|
msgid "Auto bluetooth"
|
||||||
|
msgstr "Bluetooth אוטומטי"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1355
|
||||||
|
msgid "Auto wireless"
|
||||||
|
msgstr "אלחוטי אוטומטי"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1413
|
||||||
|
msgid "More..."
|
||||||
|
msgstr "עוד..."
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1436
|
||||||
|
msgid "Enable networking"
|
||||||
|
msgstr "הפעלת תכונת הרשת"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1448
|
||||||
|
msgid "Wired"
|
||||||
|
msgstr "קווי"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1459
|
||||||
|
msgid "Wireless"
|
||||||
|
msgstr "אלחוטי"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1469
|
||||||
|
msgid "Mobile broadband"
|
||||||
|
msgstr "פס־רחב נייד"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1479
|
||||||
|
msgid "VPN Connections"
|
||||||
|
msgstr "חיבורי VPN"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1488
|
||||||
|
msgid "Network Settings"
|
||||||
|
msgstr "הגדרות הרשת"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1782
|
||||||
|
#, c-format
|
||||||
|
msgid "You're now connected to mobile broadband connection '%s'"
|
||||||
|
msgstr "כרגע ישנו חיבור בינך ובין רשת הפס הרחב הניידת '%s'"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1786
|
||||||
|
#, c-format
|
||||||
|
msgid "You're now connected to wireless network '%s'"
|
||||||
|
msgstr "כרגע ישנו חיבור בינך ובין הרשת האלחוטית '%s'"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1790
|
||||||
|
#, c-format
|
||||||
|
msgid "You're now connected to wired network '%s'"
|
||||||
|
msgstr "כרגע ישנו חיבור בינך ובין הרשת הקווית '%s'"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1794
|
||||||
|
#, c-format
|
||||||
|
msgid "You're now connected to VPN network '%s'"
|
||||||
|
msgstr "כרגע ישנו חיבור בינך ובין רשת ה־VPN '%s'"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1799
|
||||||
|
#, c-format
|
||||||
|
msgid "You're now connected to '%s'"
|
||||||
|
msgstr "כעת ישנו חיבור בינך ובין '%s'"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1807
|
||||||
|
msgid "Connection established"
|
||||||
|
msgstr "ההתחברות הצליחה"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1929
|
||||||
|
msgid "Networking is disabled"
|
||||||
|
msgstr "תכונת הרשת מנוטרלת"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:2054
|
||||||
|
msgid "Network Manager"
|
||||||
|
msgstr "מנהל הרשתות"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:85
|
#: ../js/ui/status/power.js:85
|
||||||
msgid "Power Settings"
|
msgid "Power Settings"
|
||||||
msgstr "הגדרות צריכת החשמל"
|
msgstr "הגדרות צריכת החשמל"
|
||||||
|
|
||||||
#. 0 is reported when UPower does not have enough data
|
#. 0 is reported when UPower does not have enough data
|
||||||
#. to estimate battery life
|
#. to estimate battery life
|
||||||
#: ../js/ui/status/power.js:110
|
#: ../js/ui/status/power.js:111
|
||||||
msgid "Estimating..."
|
msgid "Estimating..."
|
||||||
msgstr "מתבצע שיערוך..."
|
msgstr "מתבצע שיערוך..."
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:117
|
#: ../js/ui/status/power.js:118
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d hour remaining"
|
msgid "%d hour remaining"
|
||||||
msgid_plural "%d hours remaining"
|
msgid_plural "%d hours remaining"
|
||||||
@ -833,26 +957,26 @@ msgstr[1] "נותרו %d שעות"
|
|||||||
msgstr[2] "נותרו שעתיים"
|
msgstr[2] "נותרו שעתיים"
|
||||||
|
|
||||||
#. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining"
|
#. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining"
|
||||||
#: ../js/ui/status/power.js:120
|
#: ../js/ui/status/power.js:121
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d %s %d %s remaining"
|
msgid "%d %s %d %s remaining"
|
||||||
msgstr "%d %s %d %s נותרו"
|
msgstr "%d %s %d %s נותרו"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:122
|
#: ../js/ui/status/power.js:123
|
||||||
msgid "hour"
|
msgid "hour"
|
||||||
msgid_plural "hours"
|
msgid_plural "hours"
|
||||||
msgstr[0] "שעה"
|
msgstr[0] "שעה"
|
||||||
msgstr[1] "שעות"
|
msgstr[1] "שעות"
|
||||||
msgstr[2] "שעתיים"
|
msgstr[2] "שעתיים"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:122
|
#: ../js/ui/status/power.js:123
|
||||||
msgid "minute"
|
msgid "minute"
|
||||||
msgid_plural "minutes"
|
msgid_plural "minutes"
|
||||||
msgstr[0] "דקה"
|
msgstr[0] "דקה"
|
||||||
msgstr[1] "דקות"
|
msgstr[1] "דקות"
|
||||||
msgstr[2] "דקות"
|
msgstr[2] "דקות"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:125
|
#: ../js/ui/status/power.js:126
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d minute remaining"
|
msgid "%d minute remaining"
|
||||||
msgid_plural "%d minutes remaining"
|
msgid_plural "%d minutes remaining"
|
||||||
@ -860,78 +984,78 @@ msgstr[0] "דקה אחת נותרה"
|
|||||||
msgstr[1] "%d דקות נותרו"
|
msgstr[1] "%d דקות נותרו"
|
||||||
msgstr[2] "שתי דקות נותרו"
|
msgstr[2] "שתי דקות נותרו"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:227
|
#: ../js/ui/status/power.js:228
|
||||||
msgid "AC adapter"
|
msgid "AC adapter"
|
||||||
msgstr "מתאם חשמל"
|
msgstr "מתאם חשמל"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:229
|
#: ../js/ui/status/power.js:230
|
||||||
msgid "Laptop battery"
|
msgid "Laptop battery"
|
||||||
msgstr "סוללת נייד"
|
msgstr "סוללת נייד"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:231
|
#: ../js/ui/status/power.js:232
|
||||||
msgid "UPS"
|
msgid "UPS"
|
||||||
msgstr "אל־פסק"
|
msgstr "אל־פסק"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:233
|
#: ../js/ui/status/power.js:234
|
||||||
msgid "Monitor"
|
msgid "Monitor"
|
||||||
msgstr "צג"
|
msgstr "צג"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:235
|
#: ../js/ui/status/power.js:236
|
||||||
msgid "Mouse"
|
msgid "Mouse"
|
||||||
msgstr "עכבר"
|
msgstr "עכבר"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:237
|
#: ../js/ui/status/power.js:238
|
||||||
msgid "Keyboard"
|
msgid "Keyboard"
|
||||||
msgstr "מקלדת"
|
msgstr "מקלדת"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:239
|
#: ../js/ui/status/power.js:240
|
||||||
msgid "PDA"
|
msgid "PDA"
|
||||||
msgstr "מחשב כף יד"
|
msgstr "מחשב כף יד"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:241
|
#: ../js/ui/status/power.js:242
|
||||||
msgid "Cell phone"
|
msgid "Cell phone"
|
||||||
msgstr "טלפון סלולרי"
|
msgstr "טלפון סלולרי"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:243
|
#: ../js/ui/status/power.js:244
|
||||||
msgid "Media player"
|
msgid "Media player"
|
||||||
msgstr "נגן מדיה"
|
msgstr "נגן מדיה"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:245
|
#: ../js/ui/status/power.js:246
|
||||||
msgid "Tablet"
|
msgid "Tablet"
|
||||||
msgstr "טבלת שליטה"
|
msgstr "טבלת שליטה"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:247
|
#: ../js/ui/status/power.js:248
|
||||||
msgid "Computer"
|
msgid "Computer"
|
||||||
msgstr "מחשב"
|
msgstr "מחשב"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:249 ../src/shell-app-system.c:1013
|
#: ../js/ui/status/power.js:250 ../src/shell-app-system.c:961
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "לא ידוע"
|
msgstr "לא ידוע"
|
||||||
|
|
||||||
#: ../js/ui/status/volume.js:44
|
#: ../js/ui/status/volume.js:45
|
||||||
msgid "Volume"
|
msgid "Volume"
|
||||||
msgstr "עצמה"
|
msgstr "עצמה"
|
||||||
|
|
||||||
#: ../js/ui/status/volume.js:57
|
#: ../js/ui/status/volume.js:58
|
||||||
msgid "Microphone"
|
msgid "Microphone"
|
||||||
msgstr "מיקרופון"
|
msgstr "מיקרופון"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:239
|
#: ../js/ui/telepathyClient.js:332
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is online."
|
msgid "%s is online."
|
||||||
msgstr "%s התחבר/ה."
|
msgstr "%s התחבר/ה."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:244
|
#: ../js/ui/telepathyClient.js:337
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is offline."
|
msgid "%s is offline."
|
||||||
msgstr "%s התנתק/ה."
|
msgstr "%s התנתק/ה."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:247
|
#: ../js/ui/telepathyClient.js:340
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is away."
|
msgid "%s is away."
|
||||||
msgstr "'%s' מרוחק/ת."
|
msgstr "'%s' מרוחק/ת."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:250
|
#: ../js/ui/telepathyClient.js:343
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is busy."
|
msgid "%s is busy."
|
||||||
msgstr "%s עסוק/ה."
|
msgstr "%s עסוק/ה."
|
||||||
@ -939,7 +1063,7 @@ msgstr "%s עסוק/ה."
|
|||||||
#. Translators: this is a time format string followed by a date.
|
#. Translators: this is a time format string followed by a date.
|
||||||
#. If applicable, replace %X with a strftime format valid for your
|
#. If applicable, replace %X with a strftime format valid for your
|
||||||
#. locale, without seconds.
|
#. locale, without seconds.
|
||||||
#: ../js/ui/telepathyClient.js:357
|
#: ../js/ui/telepathyClient.js:474
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent at %X on %A"
|
msgid "Sent at %X on %A"
|
||||||
msgstr "נשלח ב־%X בשעה %A"
|
msgstr "נשלח ב־%X בשעה %A"
|
||||||
@ -948,11 +1072,11 @@ msgstr "נשלח ב־%X בשעה %A"
|
|||||||
#. in the search entry when no search is
|
#. in the search entry when no search is
|
||||||
#. active; it should not exceed ~30
|
#. active; it should not exceed ~30
|
||||||
#. characters.
|
#. characters.
|
||||||
#: ../js/ui/viewSelector.js:117
|
#: ../js/ui/viewSelector.js:119
|
||||||
msgid "Type to search..."
|
msgid "Type to search..."
|
||||||
msgstr "יש להקליד כדי לחפש..."
|
msgstr "יש להקליד כדי לחפש..."
|
||||||
|
|
||||||
#: ../js/ui/viewSelector.js:137 ../src/shell-util.c:250
|
#: ../js/ui/viewSelector.js:139 ../src/shell-util.c:250
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "חיפוש"
|
msgstr "חיפוש"
|
||||||
|
|
||||||
@ -968,7 +1092,7 @@ msgstr "'%s' מוכן"
|
|||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The number of sound outputs on a particular device
|
#. * The number of sound outputs on a particular device
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1094
|
#: ../src/gvc/gvc-mixer-control.c:1098
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%u Output"
|
msgid "%u Output"
|
||||||
msgid_plural "%u Outputs"
|
msgid_plural "%u Outputs"
|
||||||
@ -978,7 +1102,7 @@ msgstr[2] "2 פלטים"
|
|||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The number of sound inputs on a particular device
|
#. * The number of sound inputs on a particular device
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1104
|
#: ../src/gvc/gvc-mixer-control.c:1108
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%u Input"
|
msgid "%u Input"
|
||||||
msgid_plural "%u Inputs"
|
msgid_plural "%u Inputs"
|
||||||
@ -986,7 +1110,7 @@ msgstr[0] "קלט אחד"
|
|||||||
msgstr[1] "%u קלטים"
|
msgstr[1] "%u קלטים"
|
||||||
msgstr[2] "2 קלטים"
|
msgstr[2] "2 קלטים"
|
||||||
|
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1402
|
#: ../src/gvc/gvc-mixer-control.c:1406
|
||||||
msgid "System Sounds"
|
msgid "System Sounds"
|
||||||
msgstr "צלילי מערכת"
|
msgstr "צלילי מערכת"
|
||||||
|
|
||||||
@ -994,11 +1118,16 @@ msgstr "צלילי מערכת"
|
|||||||
msgid "Print version"
|
msgid "Print version"
|
||||||
msgstr "Print version"
|
msgstr "Print version"
|
||||||
|
|
||||||
#: ../src/shell-global.c:1308
|
#: ../src/shell-app.c:442
|
||||||
|
#, c-format
|
||||||
|
msgid "Failed to launch '%s'"
|
||||||
|
msgstr "אירע כשל בטעינת '%s'"
|
||||||
|
|
||||||
|
#: ../src/shell-global.c:1340
|
||||||
msgid "Less than a minute ago"
|
msgid "Less than a minute ago"
|
||||||
msgstr "לפני פחות מדקה"
|
msgstr "לפני פחות מדקה"
|
||||||
|
|
||||||
#: ../src/shell-global.c:1312
|
#: ../src/shell-global.c:1344
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d minute ago"
|
msgid "%d minute ago"
|
||||||
msgid_plural "%d minutes ago"
|
msgid_plural "%d minutes ago"
|
||||||
@ -1006,7 +1135,7 @@ msgstr[0] "לפני דקה"
|
|||||||
msgstr[1] "לפני %d דקות"
|
msgstr[1] "לפני %d דקות"
|
||||||
msgstr[2] "לפני 2 דקות"
|
msgstr[2] "לפני 2 דקות"
|
||||||
|
|
||||||
#: ../src/shell-global.c:1317
|
#: ../src/shell-global.c:1349
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d hour ago"
|
msgid "%d hour ago"
|
||||||
msgid_plural "%d hours ago"
|
msgid_plural "%d hours ago"
|
||||||
@ -1014,7 +1143,7 @@ msgstr[0] "לפני שעה"
|
|||||||
msgstr[1] "לפני %d שעות"
|
msgstr[1] "לפני %d שעות"
|
||||||
msgstr[2] "לפני שעתיים"
|
msgstr[2] "לפני שעתיים"
|
||||||
|
|
||||||
#: ../src/shell-global.c:1322
|
#: ../src/shell-global.c:1354
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d day ago"
|
msgid "%d day ago"
|
||||||
msgid_plural "%d days ago"
|
msgid_plural "%d days ago"
|
||||||
@ -1022,7 +1151,7 @@ msgstr[0] "לפני יום"
|
|||||||
msgstr[1] "לפני %d ימים"
|
msgstr[1] "לפני %d ימים"
|
||||||
msgstr[2] "לפני יומיים"
|
msgstr[2] "לפני יומיים"
|
||||||
|
|
||||||
#: ../src/shell-global.c:1327
|
#: ../src/shell-global.c:1359
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d week ago"
|
msgid "%d week ago"
|
||||||
msgid_plural "%d weeks ago"
|
msgid_plural "%d weeks ago"
|
||||||
@ -1030,6 +1159,14 @@ msgstr[0] "לפני שבוע"
|
|||||||
msgstr[1] "לפני %d שבועות"
|
msgstr[1] "לפני %d שבועות"
|
||||||
msgstr[2] "לפני שבועיים"
|
msgstr[2] "לפני שבועיים"
|
||||||
|
|
||||||
|
#: ../src/shell-mobile-providers.c:80
|
||||||
|
msgid "United Kingdom"
|
||||||
|
msgstr "בריטניה"
|
||||||
|
|
||||||
|
#: ../src/shell-mobile-providers.c:526
|
||||||
|
msgid "Default"
|
||||||
|
msgstr "בררת מחדל"
|
||||||
|
|
||||||
#: ../src/shell-polkit-authentication-agent.c:334
|
#: ../src/shell-polkit-authentication-agent.c:334
|
||||||
msgid "Authentication dialog was dismissed by the user"
|
msgid "Authentication dialog was dismissed by the user"
|
||||||
msgstr "המשתמש בחר להתעלם מתיבת דו־שיח האימות"
|
msgstr "המשתמש בחר להתעלם מתיבת דו־שיח האימות"
|
||||||
@ -1054,6 +1191,15 @@ msgstr "מערכת הקבצים"
|
|||||||
msgid "%1$s: %2$s"
|
msgid "%1$s: %2$s"
|
||||||
msgstr "%1$s: %2$s"
|
msgstr "%1$s: %2$s"
|
||||||
|
|
||||||
|
#~ msgid "No such application"
|
||||||
|
#~ msgstr "אין כזה יישום"
|
||||||
|
|
||||||
|
#~ msgid "Screen Reader"
|
||||||
|
#~ msgstr "מקריא מסך"
|
||||||
|
|
||||||
|
#~ msgid "Screen Keyboard"
|
||||||
|
#~ msgstr "מקלדת מסך"
|
||||||
|
|
||||||
#~ msgid "PREFERENCES"
|
#~ msgid "PREFERENCES"
|
||||||
#~ msgstr "העדפות"
|
#~ msgstr "העדפות"
|
||||||
|
|
||||||
|
479
po/it.po
479
po/it.po
@ -8,8 +8,8 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gnome-shell\n"
|
"Project-Id-Version: gnome-shell\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2011-03-11 01:54+0100\n"
|
"POT-Creation-Date: 2011-03-24 22:46+0100\n"
|
||||||
"PO-Revision-Date: 2011-03-11 01:56+0100\n"
|
"PO-Revision-Date: 2011-03-24 22:58+0100\n"
|
||||||
"Last-Translator: Luca Ferretti <lferrett@gnome.org>\n"
|
"Last-Translator: Luca Ferretti <lferrett@gnome.org>\n"
|
||||||
"Language-Team: Italian <tp@lists.linux.it>\n"
|
"Language-Team: Italian <tp@lists.linux.it>\n"
|
||||||
"Language: it\n"
|
"Language: it\n"
|
||||||
@ -174,47 +174,43 @@ msgstr ""
|
|||||||
msgid "disabled OpenSearch providers"
|
msgid "disabled OpenSearch providers"
|
||||||
msgstr "Fornitori OpenSearch disabilitati"
|
msgstr "Fornitori OpenSearch disabilitati"
|
||||||
|
|
||||||
#: ../js/misc/util.js:86
|
#: ../js/misc/util.js:71
|
||||||
msgid "Command not found"
|
msgid "Command not found"
|
||||||
msgstr "Comando non trovato"
|
msgstr "Comando non trovato"
|
||||||
|
|
||||||
#. Replace "Error invoking GLib.shell_parse_argv: " with
|
#. Replace "Error invoking GLib.shell_parse_argv: " with
|
||||||
#. something nicer
|
#. something nicer
|
||||||
#: ../js/misc/util.js:113
|
#: ../js/misc/util.js:98
|
||||||
msgid "Could not parse command:"
|
msgid "Could not parse command:"
|
||||||
msgstr "Impossibile analizzare il comando:"
|
msgstr "Impossibile analizzare il comando:"
|
||||||
|
|
||||||
#: ../js/misc/util.js:135
|
#: ../js/misc/util.js:106
|
||||||
msgid "No such application"
|
|
||||||
msgstr "Applicazione inesistente"
|
|
||||||
|
|
||||||
#: ../js/misc/util.js:148
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Execution of '%s' failed:"
|
msgid "Execution of '%s' failed:"
|
||||||
msgstr "Esecuzione di «%s» non riuscita:"
|
msgstr "Esecuzione di «%s» non riuscita:"
|
||||||
|
|
||||||
#. Translators: Filter to display all applications
|
#. Translators: Filter to display all applications
|
||||||
#: ../js/ui/appDisplay.js:226
|
#: ../js/ui/appDisplay.js:230
|
||||||
msgid "All"
|
msgid "All"
|
||||||
msgstr "Tutte"
|
msgstr "Tutte"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:324
|
#: ../js/ui/appDisplay.js:328
|
||||||
msgid "APPLICATIONS"
|
msgid "APPLICATIONS"
|
||||||
msgstr "APPLICAZIONI"
|
msgstr "APPLICAZIONI"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:350
|
#: ../js/ui/appDisplay.js:354
|
||||||
msgid "SETTINGS"
|
msgid "SETTINGS"
|
||||||
msgstr "IMPOSTAZIONI"
|
msgstr "IMPOSTAZIONI"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:612
|
#: ../js/ui/appDisplay.js:625
|
||||||
msgid "New Window"
|
msgid "New Window"
|
||||||
msgstr "Nuova finestra"
|
msgstr "Nuova finestra"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:615
|
#: ../js/ui/appDisplay.js:628
|
||||||
msgid "Remove from Favorites"
|
msgid "Remove from Favorites"
|
||||||
msgstr "Rimuovi dai preferiti"
|
msgstr "Rimuovi dai preferiti"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:616
|
#: ../js/ui/appDisplay.js:629
|
||||||
msgid "Add to Favorites"
|
msgid "Add to Favorites"
|
||||||
msgstr "Aggiungi ai preferiti"
|
msgstr "Aggiungi ai preferiti"
|
||||||
|
|
||||||
@ -376,7 +372,7 @@ msgstr "Questa settimana"
|
|||||||
msgid "Next week"
|
msgid "Next week"
|
||||||
msgstr "Prossima settimana"
|
msgstr "Prossima settimana"
|
||||||
|
|
||||||
#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:931
|
#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:994
|
||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "Rimuovi"
|
msgstr "Rimuovi"
|
||||||
|
|
||||||
@ -431,7 +427,7 @@ msgstr "%a %l.%M %P"
|
|||||||
#. Translators: This is the date format to use when the calendar popup is
|
#. 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").
|
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
|
||||||
#.
|
#.
|
||||||
#: ../js/ui/dateMenu.js:209
|
#: ../js/ui/dateMenu.js:194
|
||||||
msgid "%A %B %e, %Y"
|
msgid "%A %B %e, %Y"
|
||||||
msgstr "%a %e %B %Y"
|
msgstr "%a %e %B %Y"
|
||||||
|
|
||||||
@ -444,7 +440,7 @@ msgstr "ELEMENTI RECENTI"
|
|||||||
msgid "Log Out %s"
|
msgid "Log Out %s"
|
||||||
msgstr "Termina sessione di %s"
|
msgstr "Termina sessione di %s"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:69
|
#: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:70
|
||||||
msgid "Log Out"
|
msgid "Log Out"
|
||||||
msgstr "Termina sessione"
|
msgstr "Termina sessione"
|
||||||
|
|
||||||
@ -469,50 +465,45 @@ msgstr "La sessione verrà terminata automaticamente tra %d secondi."
|
|||||||
msgid "Logging out of the system."
|
msgid "Logging out of the system."
|
||||||
msgstr "Chiusura della sessione."
|
msgstr "Chiusura della sessione."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:74 ../js/ui/endSessionDialog.js:78
|
#: ../js/ui/endSessionDialog.js:75 ../js/ui/endSessionDialog.js:82
|
||||||
msgid "Shut Down"
|
msgid "Power Off"
|
||||||
msgstr "Arresta"
|
msgstr "Spegni"
|
||||||
|
|
||||||
# usato un termine diverso, magari si capisce meglio (LF)
|
|
||||||
#: ../js/ui/endSessionDialog.js:75
|
|
||||||
msgid "Click Shut Down to quit these applications and shut down the system."
|
|
||||||
msgstr ""
|
|
||||||
"Fare clic su «Arresta» per chiudere queste applicazioni e spegnere il "
|
|
||||||
"sistema."
|
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:76
|
#: ../js/ui/endSessionDialog.js:76
|
||||||
#, c-format
|
msgid "Click Power Off to quit these applications and power off the system."
|
||||||
msgid "The system will shut down automatically in %d seconds."
|
msgstr "Fare clic su «Spegni» per chiudere queste applicazioni e spegnere il sistema."
|
||||||
msgstr "Il sistema verrà arrestato automaticamente tra %d secondi."
|
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:77
|
#: ../js/ui/endSessionDialog.js:77
|
||||||
msgid "Shutting down the system."
|
#, c-format
|
||||||
msgstr "Arresto del sistema."
|
msgid "The system will power off automatically in %d seconds."
|
||||||
|
msgstr "Il sistema verrà spento automaticamente tra %d secondi."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:84 ../js/ui/endSessionDialog.js:88
|
#: ../js/ui/endSessionDialog.js:78
|
||||||
|
msgid "Powering off the system."
|
||||||
|
msgstr "pegnimento del sistema."
|
||||||
|
|
||||||
|
#: ../js/ui/endSessionDialog.js:80 ../js/ui/endSessionDialog.js:88
|
||||||
|
#: ../js/ui/endSessionDialog.js:93
|
||||||
msgid "Restart"
|
msgid "Restart"
|
||||||
msgstr "Riavvia"
|
msgstr "Riavvia"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:85
|
#: ../js/ui/endSessionDialog.js:89
|
||||||
msgid "Click Restart to quit these applications and restart the system."
|
msgid "Click Restart to quit these applications and restart the system."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Fare clic su «Riavvia» per chiudere queste applicazioni e riavviare il "
|
"Fare clic su «Riavvia» per chiudere queste applicazioni e riavviare il "
|
||||||
"sistema."
|
"sistema."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:86
|
#: ../js/ui/endSessionDialog.js:90
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "The system will restart automatically in %d seconds."
|
msgid "The system will restart automatically in %d seconds."
|
||||||
msgstr "Il sistema verrà riavviato automaticamente tra %d secondi."
|
msgstr "Il sistema verrà riavviato automaticamente tra %d secondi."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:87
|
#: ../js/ui/endSessionDialog.js:91
|
||||||
msgid "Restarting the system."
|
msgid "Restarting the system."
|
||||||
msgstr "Riavvio del sistema."
|
msgstr "Riavvio del sistema."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:395
|
#: ../js/ui/endSessionDialog.js:415 ../js/ui/polkitAuthenticationAgent.js:172
|
||||||
msgid "Confirm"
|
#: ../js/ui/status/bluetooth.js:466
|
||||||
msgstr "Conferma"
|
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:400 ../js/ui/status/bluetooth.js:470
|
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Annulla"
|
msgstr "Annulla"
|
||||||
|
|
||||||
@ -528,7 +519,7 @@ msgstr "Abilitato"
|
|||||||
# (ndt) o disabilitata?
|
# (ndt) o disabilitata?
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The device has been disabled
|
#. * The device has been disabled
|
||||||
#: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1087
|
#: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1091
|
||||||
msgid "Disabled"
|
msgid "Disabled"
|
||||||
msgstr "Disabilitato"
|
msgstr "Disabilitato"
|
||||||
|
|
||||||
@ -548,48 +539,48 @@ msgstr "Visualizza sorgente"
|
|||||||
msgid "Web Page"
|
msgid "Web Page"
|
||||||
msgstr "Pagina web"
|
msgstr "Pagina web"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:924
|
#: ../js/ui/messageTray.js:987
|
||||||
msgid "Open"
|
msgid "Open"
|
||||||
msgstr "Apri"
|
msgstr "Apri"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1961
|
#: ../js/ui/messageTray.js:2145
|
||||||
msgid "System Information"
|
msgid "System Information"
|
||||||
msgstr "Informazione di sistema"
|
msgstr "Informazione di sistema"
|
||||||
|
|
||||||
#: ../js/ui/overview.js:88
|
#: ../js/ui/overview.js:91
|
||||||
msgid "Undo"
|
msgid "Undo"
|
||||||
msgstr "Annulla"
|
msgstr "Annulla"
|
||||||
|
|
||||||
#: ../js/ui/overview.js:183
|
#: ../js/ui/overview.js:186
|
||||||
msgid "Windows"
|
msgid "Windows"
|
||||||
msgstr "Finestre"
|
msgstr "Finestre"
|
||||||
|
|
||||||
#: ../js/ui/overview.js:186
|
#: ../js/ui/overview.js:189
|
||||||
msgid "Applications"
|
msgid "Applications"
|
||||||
msgstr "Applicazioni"
|
msgstr "Applicazioni"
|
||||||
|
|
||||||
# cruscotto?!?!?!?!?!?!?
|
# cruscotto?!?!?!?!?!?!?
|
||||||
#. Translators: this is the name of the dock/favorites area on
|
#. Translators: this is the name of the dock/favorites area on
|
||||||
#. the left of the overview
|
#. the left of the overview
|
||||||
#: ../js/ui/overview.js:202
|
#: ../js/ui/overview.js:205
|
||||||
msgid "Dash"
|
msgid "Dash"
|
||||||
msgstr "Dash"
|
msgstr "Dash"
|
||||||
|
|
||||||
#. TODO - _quit() doesn't really work on apps in state STARTING yet
|
#. TODO - _quit() doesn't really work on apps in state STARTING yet
|
||||||
#: ../js/ui/panel.js:560
|
#: ../js/ui/panel.js:515
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Quit %s"
|
msgid "Quit %s"
|
||||||
msgstr "Chiudi %s"
|
msgstr "Chiudi %s"
|
||||||
|
|
||||||
#. Button on the left side of the panel.
|
#. Button on the left side of the panel.
|
||||||
#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
|
#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
|
||||||
#: ../js/ui/panel.js:919
|
#: ../js/ui/panel.js:878
|
||||||
msgid "Activities"
|
msgid "Activities"
|
||||||
msgstr "Attività"
|
msgstr "Attività"
|
||||||
|
|
||||||
#: ../js/ui/panel.js:1020
|
#: ../js/ui/panel.js:979
|
||||||
msgid "Panel"
|
msgid "Top Bar"
|
||||||
msgstr "Pannello"
|
msgstr "Barra superiore"
|
||||||
|
|
||||||
# (ndt) libera, ma unmount non si può proprio vedere...
|
# (ndt) libera, ma unmount non si può proprio vedere...
|
||||||
#: ../js/ui/placeDisplay.js:122
|
#: ../js/ui/placeDisplay.js:122
|
||||||
@ -605,64 +596,85 @@ msgstr "Riprova"
|
|||||||
msgid "Connect to..."
|
msgid "Connect to..."
|
||||||
msgstr "Connetti a..."
|
msgstr "Connetti a..."
|
||||||
|
|
||||||
#: ../js/ui/placeDisplay.js:409
|
#: ../js/ui/placeDisplay.js:380
|
||||||
msgid "PLACES & DEVICES"
|
msgid "PLACES & DEVICES"
|
||||||
msgstr "RISORSE E DISPOSITIVI"
|
msgstr "RISORSE E DISPOSITIVI"
|
||||||
|
|
||||||
|
#: ../js/ui/polkitAuthenticationAgent.js:74
|
||||||
|
msgid "Authentication Required"
|
||||||
|
msgstr "Richiesta autenticazione"
|
||||||
|
|
||||||
|
#: ../js/ui/polkitAuthenticationAgent.js:108
|
||||||
|
msgid "Administrator"
|
||||||
|
msgstr "Amministratore"
|
||||||
|
|
||||||
|
#: ../js/ui/polkitAuthenticationAgent.js:176
|
||||||
|
msgid "Authenticate"
|
||||||
|
msgstr "Autentica"
|
||||||
|
|
||||||
|
#: ../js/ui/polkitAuthenticationAgent.js:260
|
||||||
|
msgid "Sorry, that didn't work. Please try again."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../js/ui/polkitAuthenticationAgent.js:272
|
||||||
|
msgid "Password:"
|
||||||
|
msgstr "Password:"
|
||||||
|
|
||||||
#. Translators: this MUST be either "toggle-switch-us"
|
#. Translators: this MUST be either "toggle-switch-us"
|
||||||
#. (for toggle switches containing the English words
|
#. (for toggle switches containing the English words
|
||||||
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
||||||
#. switches containing "◯" and "|"). Other values will
|
#. switches containing "◯" and "|"). Other values will
|
||||||
#. simply result in invisible toggle switches.
|
#. simply result in invisible toggle switches.
|
||||||
#: ../js/ui/popupMenu.js:618
|
#: ../js/ui/popupMenu.js:679
|
||||||
msgid "toggle-switch-us"
|
msgid "toggle-switch-us"
|
||||||
msgstr "toggle-switch-us"
|
msgstr "toggle-switch-us"
|
||||||
|
|
||||||
#: ../js/ui/runDialog.js:201
|
#: ../js/ui/runDialog.js:205
|
||||||
msgid "Please enter a command:"
|
msgid "Please enter a command:"
|
||||||
msgstr "Inserire un comando:"
|
msgstr "Inserire un comando:"
|
||||||
|
|
||||||
#: ../js/ui/searchDisplay.js:283
|
#: ../js/ui/searchDisplay.js:310
|
||||||
msgid "Searching..."
|
msgid "Searching..."
|
||||||
msgstr "Ricerca..."
|
msgstr "Ricerca..."
|
||||||
|
|
||||||
#: ../js/ui/searchDisplay.js:297
|
#: ../js/ui/searchDisplay.js:324
|
||||||
msgid "No matching results."
|
msgid "No matching results."
|
||||||
msgstr "Nessun risultato corrispondente."
|
msgstr "Nessun risultato corrispondente."
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:113 ../js/ui/statusMenu.js:177
|
#: ../js/ui/statusMenu.js:161 ../js/ui/statusMenu.js:163
|
||||||
|
#: ../js/ui/statusMenu.js:228
|
||||||
msgid "Power Off..."
|
msgid "Power Off..."
|
||||||
msgstr "Spegni..."
|
msgstr "Spegni..."
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:115 ../js/ui/statusMenu.js:176
|
#: ../js/ui/statusMenu.js:163 ../js/ui/statusMenu.js:227
|
||||||
msgid "Suspend"
|
msgid "Suspend"
|
||||||
msgstr "Sospendi"
|
msgstr "Sospendi"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:136
|
#: ../js/ui/statusMenu.js:184
|
||||||
msgid "Available"
|
msgid "Available"
|
||||||
msgstr "Disponibile"
|
msgstr "Disponibile"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:141
|
#: ../js/ui/statusMenu.js:189
|
||||||
msgid "Busy"
|
msgid "Busy"
|
||||||
msgstr "Non disponibile"
|
msgstr "Non disponibile"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:149
|
#: ../js/ui/statusMenu.js:197
|
||||||
msgid "My Account"
|
msgid "My Account"
|
||||||
msgstr "Account personale"
|
msgstr "Account personale"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:153
|
#: ../js/ui/statusMenu.js:201
|
||||||
msgid "System Settings"
|
msgid "System Settings"
|
||||||
msgstr "Impostazioni di sistema"
|
msgstr "Impostazioni di sistema"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:160
|
#: ../js/ui/statusMenu.js:208
|
||||||
msgid "Lock Screen"
|
msgid "Lock Screen"
|
||||||
msgstr "Blocca schermo"
|
msgstr "Blocca schermo"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:164
|
#: ../js/ui/statusMenu.js:213
|
||||||
msgid "Switch User"
|
msgid "Switch User"
|
||||||
msgstr "Cambia utente"
|
msgstr "Cambia utente"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:169
|
#: ../js/ui/statusMenu.js:218
|
||||||
msgid "Log Out..."
|
msgid "Log Out..."
|
||||||
msgstr "Termina sessione..."
|
msgstr "Termina sessione..."
|
||||||
|
|
||||||
@ -670,29 +682,27 @@ msgstr "Termina sessione..."
|
|||||||
msgid "Zoom"
|
msgid "Zoom"
|
||||||
msgstr "Ingrandimento"
|
msgstr "Ingrandimento"
|
||||||
|
|
||||||
#: ../js/ui/status/accessibility.js:69
|
#. let screenReader = this._buildItem(_("Screen Reader"), APPLICATIONS_SCHEMA,
|
||||||
msgid "Screen Reader"
|
#. 'screen-reader-enabled');
|
||||||
msgstr "Lettore schermo"
|
#. this.menu.addMenuItem(screenReader);
|
||||||
|
#. let screenKeyboard = this._buildItem(_("Screen Keyboard"), APPLICATIONS_SCHEMA,
|
||||||
#: ../js/ui/status/accessibility.js:73
|
#. 'screen-keyboard-enabled');
|
||||||
msgid "Screen Keyboard"
|
#. this.menu.addMenuItem(screenKeyboard);
|
||||||
msgstr "Tastiera a schermo"
|
|
||||||
|
|
||||||
#: ../js/ui/status/accessibility.js:77
|
#: ../js/ui/status/accessibility.js:77
|
||||||
msgid "Visual Alerts"
|
msgid "Visual Alerts"
|
||||||
msgstr "Allerte visive"
|
msgstr "Allerte visive"
|
||||||
|
|
||||||
#: ../js/ui/status/accessibility.js:80
|
#: ../js/ui/status/accessibility.js:80
|
||||||
msgid "Sticky Keys"
|
msgid "Sticky Keys"
|
||||||
msgstr "Permanenza tasti"
|
msgstr "Tasti singoli"
|
||||||
|
|
||||||
#: ../js/ui/status/accessibility.js:83
|
#: ../js/ui/status/accessibility.js:83
|
||||||
msgid "Slow Keys"
|
msgid "Slow Keys"
|
||||||
msgstr "Rallentamento tasti"
|
msgstr "Tasti lenti"
|
||||||
|
|
||||||
#: ../js/ui/status/accessibility.js:86
|
#: ../js/ui/status/accessibility.js:86
|
||||||
msgid "Bounce Keys"
|
msgid "Bounce Keys"
|
||||||
msgstr "Pressione ravvicinata tasti"
|
msgstr "Tasti rimbalzati"
|
||||||
|
|
||||||
#: ../js/ui/status/accessibility.js:89
|
#: ../js/ui/status/accessibility.js:89
|
||||||
msgid "Mouse Keys"
|
msgid "Mouse Keys"
|
||||||
@ -702,24 +712,24 @@ msgstr "Mouse da tastiera"
|
|||||||
msgid "Universal Access Settings"
|
msgid "Universal Access Settings"
|
||||||
msgstr "Impostazioni accesso universale"
|
msgstr "Impostazioni accesso universale"
|
||||||
|
|
||||||
#: ../js/ui/status/accessibility.js:145
|
#: ../js/ui/status/accessibility.js:146
|
||||||
msgid "High Contrast"
|
msgid "High Contrast"
|
||||||
msgstr "Contrasto elevato"
|
msgstr "Contrasto elevato"
|
||||||
|
|
||||||
#: ../js/ui/status/accessibility.js:182
|
#: ../js/ui/status/accessibility.js:183
|
||||||
msgid "Large Text"
|
msgid "Large Text"
|
||||||
msgstr "Caratteri grandi"
|
msgstr "Caratteri grandi"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:241
|
#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:237
|
||||||
#: ../js/ui/status/bluetooth.js:337 ../js/ui/status/bluetooth.js:371
|
#: ../js/ui/status/bluetooth.js:333 ../js/ui/status/bluetooth.js:367
|
||||||
#: ../js/ui/status/bluetooth.js:411 ../js/ui/status/bluetooth.js:444
|
#: ../js/ui/status/bluetooth.js:407 ../js/ui/status/bluetooth.js:440
|
||||||
msgid "Bluetooth"
|
msgid "Bluetooth"
|
||||||
msgstr "Bluetooth"
|
msgstr "Bluetooth"
|
||||||
|
|
||||||
# as on Android :P
|
# su Android è Rilevabile :P
|
||||||
#: ../js/ui/status/bluetooth.js:55
|
#: ../js/ui/status/bluetooth.js:55
|
||||||
msgid "Visibility"
|
msgid "Visibility"
|
||||||
msgstr "Rilevabile"
|
msgstr "Visibile"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:69
|
#: ../js/ui/status/bluetooth.js:69
|
||||||
msgid "Send Files to Device..."
|
msgid "Send Files to Device..."
|
||||||
@ -735,94 +745,94 @@ msgstr "Impostazioni Bluetooth"
|
|||||||
|
|
||||||
# indica lo stato del device BT, per esempio gli auricolari
|
# indica lo stato del device BT, per esempio gli auricolari
|
||||||
# credo sia meglio l'aggettivo che il sostantivo
|
# credo sia meglio l'aggettivo che il sostantivo
|
||||||
#: ../js/ui/status/bluetooth.js:192
|
#: ../js/ui/status/bluetooth.js:188
|
||||||
msgid "Connection"
|
msgid "Connection"
|
||||||
msgstr "Collegato"
|
msgstr "Collegato"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:228
|
#: ../js/ui/status/bluetooth.js:224
|
||||||
msgid "Send Files..."
|
msgid "Send Files..."
|
||||||
msgstr "Invia file..."
|
msgstr "Invia file..."
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:233
|
#: ../js/ui/status/bluetooth.js:229
|
||||||
msgid "Browse Files..."
|
msgid "Browse Files..."
|
||||||
msgstr "Esplora file..."
|
msgstr "Esplora file..."
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:242
|
#: ../js/ui/status/bluetooth.js:238
|
||||||
msgid "Error browsing device"
|
msgid "Error browsing device"
|
||||||
msgstr "Errore nell'esplorare il dispositivo"
|
msgstr "Errore nell'esplorare il dispositivo"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:243
|
#: ../js/ui/status/bluetooth.js:239
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "The requested device cannot be browsed, error is '%s'"
|
msgid "The requested device cannot be browsed, error is '%s'"
|
||||||
msgstr "Non è possibile esplorare il dispositivo richiesto, l'errore è «%s»"
|
msgstr "Non è possibile esplorare il dispositivo richiesto, l'errore è «%s»"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:251
|
#: ../js/ui/status/bluetooth.js:247
|
||||||
msgid "Keyboard Settings"
|
msgid "Keyboard Settings"
|
||||||
msgstr "Impostazioni tastiera"
|
msgstr "Impostazioni tastiera"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:256
|
#: ../js/ui/status/bluetooth.js:252
|
||||||
msgid "Mouse Settings"
|
msgid "Mouse Settings"
|
||||||
msgstr "Impostazioni mouse"
|
msgstr "Impostazioni mouse"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:263 ../js/ui/status/volume.js:65
|
#: ../js/ui/status/bluetooth.js:259 ../js/ui/status/volume.js:66
|
||||||
msgid "Sound Settings"
|
msgid "Sound Settings"
|
||||||
msgstr "Impostazioni audio"
|
msgstr "Impostazioni audio"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:372
|
#: ../js/ui/status/bluetooth.js:368
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Authorization request from %s"
|
msgid "Authorization request from %s"
|
||||||
msgstr "Richesta autorizzazione da %s"
|
msgstr "Richesta autorizzazione da %s"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:378
|
#: ../js/ui/status/bluetooth.js:374
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Device %s wants access to the service '%s'"
|
msgid "Device %s wants access to the service '%s'"
|
||||||
msgstr "Il dispositivo %s vuole accedere al servizio «%s»"
|
msgstr "Il dispositivo %s vuole accedere al servizio «%s»"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:380
|
#: ../js/ui/status/bluetooth.js:376
|
||||||
msgid "Always grant access"
|
msgid "Always grant access"
|
||||||
msgstr "Consenti sempre accesso"
|
msgstr "Accorda sempre l'accesso"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:381
|
#: ../js/ui/status/bluetooth.js:377
|
||||||
msgid "Grant this time only"
|
msgid "Grant this time only"
|
||||||
msgstr "Consenti solo stavolta"
|
msgstr "Accorda solo stavolta"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:382
|
#: ../js/ui/status/bluetooth.js:378
|
||||||
msgid "Reject"
|
msgid "Reject"
|
||||||
msgstr "Rifiuta"
|
msgstr "Rifiuta"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:412
|
#: ../js/ui/status/bluetooth.js:408
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Pairing confirmation for %s"
|
msgid "Pairing confirmation for %s"
|
||||||
msgstr "Conferma associazione per %s"
|
msgstr "Conferma associazione per %s"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:418 ../js/ui/status/bluetooth.js:452
|
#: ../js/ui/status/bluetooth.js:414 ../js/ui/status/bluetooth.js:448
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Device %s wants to pair with this computer"
|
msgid "Device %s wants to pair with this computer"
|
||||||
msgstr "Il dispositivo %s vuole associarsi con questo computer"
|
msgstr "Il dispositivo %s vuole associarsi con questo computer"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:419
|
#: ../js/ui/status/bluetooth.js:415
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Please confirm whether the PIN '%s' matches the one on the device."
|
msgid "Please confirm whether the PIN '%s' matches the one on the device."
|
||||||
msgstr "Confermare la corrispondenza del PIN «%s» con quello sul dispositivo."
|
msgstr "Confermare la corrispondenza del PIN «%s» con quello sul dispositivo."
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:421
|
#: ../js/ui/status/bluetooth.js:417
|
||||||
msgid "Matches"
|
msgid "Matches"
|
||||||
msgstr "Corrisponde"
|
msgstr "Corrisponde"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:422
|
#: ../js/ui/status/bluetooth.js:418
|
||||||
msgid "Does not match"
|
msgid "Does not match"
|
||||||
msgstr "Non corrisponde"
|
msgstr "Non corrisponde"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:445
|
#: ../js/ui/status/bluetooth.js:441
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Pairing request for %s"
|
msgid "Pairing request for %s"
|
||||||
msgstr "Richiesta associazione per %s"
|
msgstr "Richiesta di associazione per %s"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:453
|
#: ../js/ui/status/bluetooth.js:449
|
||||||
msgid "Please enter the PIN mentioned on the device."
|
msgid "Please enter the PIN mentioned on the device."
|
||||||
msgstr "Inserire il PIN indicato sul dispositivo."
|
msgstr "Inserire il PIN indicato sul dispositivo."
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:469
|
#: ../js/ui/status/bluetooth.js:465
|
||||||
msgid "OK"
|
msgid "OK"
|
||||||
msgstr "OK"
|
msgstr "OK"
|
||||||
|
|
||||||
@ -834,17 +844,147 @@ msgstr "Mostra disposizione tastiera..."
|
|||||||
msgid "Localization Settings"
|
msgid "Localization Settings"
|
||||||
msgstr "Impostazioni localizzazione"
|
msgstr "Impostazioni localizzazione"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:102 ../js/ui/status/network.js:1393
|
||||||
|
msgid "<unknown>"
|
||||||
|
msgstr "<sconosciuto>"
|
||||||
|
|
||||||
|
#. Translators: this indicates that wireless or wwan is disabled by hardware killswitch
|
||||||
|
#: ../js/ui/status/network.js:295
|
||||||
|
msgid "disabled"
|
||||||
|
msgstr "disabilitata"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:476
|
||||||
|
msgid "connecting..."
|
||||||
|
msgstr "connessione..."
|
||||||
|
|
||||||
|
#. Translators: this is for network connections that require some kind of key or password
|
||||||
|
#: ../js/ui/status/network.js:479
|
||||||
|
msgid "authentication required"
|
||||||
|
msgstr "richiesta autenticazione"
|
||||||
|
|
||||||
|
#. Translators: this is for wired network devices that are physically disconnected
|
||||||
|
#: ../js/ui/status/network.js:485
|
||||||
|
msgid "cable unplugged"
|
||||||
|
msgstr "cavo scollegato"
|
||||||
|
|
||||||
|
#. Translators: this is for a network device that cannot be activated (for example it
|
||||||
|
#. is disabled by rfkill, or it has no coverage
|
||||||
|
#: ../js/ui/status/network.js:489
|
||||||
|
msgid "unavailable"
|
||||||
|
msgstr "non disponibile"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:491
|
||||||
|
msgid "connection failed"
|
||||||
|
msgstr "connessione non riuscita"
|
||||||
|
|
||||||
|
#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
|
||||||
|
#. and we cannot access its settings (including the name)
|
||||||
|
#: ../js/ui/status/network.js:571 ../js/ui/status/network.js:1341
|
||||||
|
msgid "Connected (private)"
|
||||||
|
msgstr "Connessa (privata)"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:636
|
||||||
|
msgid "Auto Ethernet"
|
||||||
|
msgstr "Ethernet automatica"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:697
|
||||||
|
msgid "Auto broadband"
|
||||||
|
msgstr "Banda larga automatica"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:700
|
||||||
|
msgid "Auto dial-up"
|
||||||
|
msgstr "Dial-up automatica"
|
||||||
|
|
||||||
|
#. TRANSLATORS: this the automatic wireless connection name (including the network name)
|
||||||
|
#: ../js/ui/status/network.js:843 ../js/ui/status/network.js:1353
|
||||||
|
#, c-format
|
||||||
|
msgid "Auto %s"
|
||||||
|
msgstr "%s automatica"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:845
|
||||||
|
msgid "Auto bluetooth"
|
||||||
|
msgstr "Bluetooth automatica"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1355
|
||||||
|
msgid "Auto wireless"
|
||||||
|
msgstr "Wireless automatica"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1413
|
||||||
|
msgid "More..."
|
||||||
|
msgstr "Altro..."
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1436
|
||||||
|
msgid "Enable networking"
|
||||||
|
msgstr "Abilita rete"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1448
|
||||||
|
msgid "Wired"
|
||||||
|
msgstr "Via cavo"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1459
|
||||||
|
msgid "Wireless"
|
||||||
|
msgstr "Wireless"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1469
|
||||||
|
msgid "Mobile broadband"
|
||||||
|
msgstr "Banda larga mobile"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1479
|
||||||
|
msgid "VPN Connections"
|
||||||
|
msgstr "Connessioni VPN"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1488
|
||||||
|
msgid "Network Settings"
|
||||||
|
msgstr "Impostazioni rete"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1783
|
||||||
|
#, c-format
|
||||||
|
msgid "You're now connected to mobile broadband connection '%s'"
|
||||||
|
msgstr "Connessi alla rete mobile «%s»"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1787
|
||||||
|
#, c-format
|
||||||
|
msgid "You're now connected to wireless network '%s'"
|
||||||
|
msgstr "Connessi alla rete wireless «%s»"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1791
|
||||||
|
#, c-format
|
||||||
|
msgid "You're now connected to wired network '%s'"
|
||||||
|
msgstr "Connessi alla rete via cavo «%s»"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1795
|
||||||
|
#, c-format
|
||||||
|
msgid "You're now connected to VPN network '%s'"
|
||||||
|
msgstr "Connessi alla rete VPN «%s»"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1800
|
||||||
|
#, c-format
|
||||||
|
msgid "You're now connected to '%s'"
|
||||||
|
msgstr "Connessi a «%s»"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1808
|
||||||
|
msgid "Connection established"
|
||||||
|
msgstr "Connessione stabilita"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1930
|
||||||
|
msgid "Networking is disabled"
|
||||||
|
msgstr "Rete disabilitata"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:2055
|
||||||
|
msgid "Network Manager"
|
||||||
|
msgstr "Gestore reti"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:85
|
#: ../js/ui/status/power.js:85
|
||||||
msgid "Power Settings"
|
msgid "Power Settings"
|
||||||
msgstr "Impostazioni alimentazione"
|
msgstr "Impostazioni alimentazione"
|
||||||
|
|
||||||
#. 0 is reported when UPower does not have enough data
|
#. 0 is reported when UPower does not have enough data
|
||||||
#. to estimate battery life
|
#. to estimate battery life
|
||||||
#: ../js/ui/status/power.js:110
|
#: ../js/ui/status/power.js:111
|
||||||
msgid "Estimating..."
|
msgid "Estimating..."
|
||||||
msgstr "In stima..."
|
msgstr "In stima..."
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:117
|
#: ../js/ui/status/power.js:118
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d hour remaining"
|
msgid "%d hour remaining"
|
||||||
msgid_plural "%d hours remaining"
|
msgid_plural "%d hours remaining"
|
||||||
@ -852,103 +992,103 @@ msgstr[0] "%d ora rimanente"
|
|||||||
msgstr[1] "%d ore rimanenti"
|
msgstr[1] "%d ore rimanenti"
|
||||||
|
|
||||||
#. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining"
|
#. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining"
|
||||||
#: ../js/ui/status/power.js:120
|
#: ../js/ui/status/power.js:121
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d %s %d %s remaining"
|
msgid "%d %s %d %s remaining"
|
||||||
msgstr "%d %s e %d %s rimanenti"
|
msgstr "%d %s e %d %s rimanenti"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:122
|
#: ../js/ui/status/power.js:123
|
||||||
msgid "hour"
|
msgid "hour"
|
||||||
msgid_plural "hours"
|
msgid_plural "hours"
|
||||||
msgstr[0] "ora"
|
msgstr[0] "ora"
|
||||||
msgstr[1] "ore"
|
msgstr[1] "ore"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:122
|
#: ../js/ui/status/power.js:123
|
||||||
msgid "minute"
|
msgid "minute"
|
||||||
msgid_plural "minutes"
|
msgid_plural "minutes"
|
||||||
msgstr[0] "minuto"
|
msgstr[0] "minuto"
|
||||||
msgstr[1] "minuti"
|
msgstr[1] "minuti"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:125
|
#: ../js/ui/status/power.js:126
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d minute remaining"
|
msgid "%d minute remaining"
|
||||||
msgid_plural "%d minutes remaining"
|
msgid_plural "%d minutes remaining"
|
||||||
msgstr[0] "%d minuto rimanente"
|
msgstr[0] "%d minuto rimanente"
|
||||||
msgstr[1] "%d minuti rimanenti"
|
msgstr[1] "%d minuti rimanenti"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:227
|
#: ../js/ui/status/power.js:228
|
||||||
msgid "AC adapter"
|
msgid "AC adapter"
|
||||||
msgstr "Alimentatore di corrente"
|
msgstr "Alimentatore di corrente"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:229
|
#: ../js/ui/status/power.js:230
|
||||||
msgid "Laptop battery"
|
msgid "Laptop battery"
|
||||||
msgstr "Batteria del portatile"
|
msgstr "Batteria del portatile"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:231
|
#: ../js/ui/status/power.js:232
|
||||||
msgid "UPS"
|
msgid "UPS"
|
||||||
msgstr "UPS"
|
msgstr "UPS"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:233
|
#: ../js/ui/status/power.js:234
|
||||||
msgid "Monitor"
|
msgid "Monitor"
|
||||||
msgstr "Monitor"
|
msgstr "Monitor"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:235
|
#: ../js/ui/status/power.js:236
|
||||||
msgid "Mouse"
|
msgid "Mouse"
|
||||||
msgstr "Mouse"
|
msgstr "Mouse"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:237
|
#: ../js/ui/status/power.js:238
|
||||||
msgid "Keyboard"
|
msgid "Keyboard"
|
||||||
msgstr "Tastiera"
|
msgstr "Tastiera"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:239
|
#: ../js/ui/status/power.js:240
|
||||||
msgid "PDA"
|
msgid "PDA"
|
||||||
msgstr "PDS"
|
msgstr "PDS"
|
||||||
|
|
||||||
# c'era una discussione su tp...
|
# c'era una discussione su tp...
|
||||||
#: ../js/ui/status/power.js:241
|
#: ../js/ui/status/power.js:242
|
||||||
msgid "Cell phone"
|
msgid "Cell phone"
|
||||||
msgstr "Cellulare"
|
msgstr "Cellulare"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:243
|
#: ../js/ui/status/power.js:244
|
||||||
msgid "Media player"
|
msgid "Media player"
|
||||||
msgstr "Lettore multimediale"
|
msgstr "Lettore multimediale"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:245
|
#: ../js/ui/status/power.js:246
|
||||||
msgid "Tablet"
|
msgid "Tablet"
|
||||||
msgstr "Tablet"
|
msgstr "Tablet"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:247
|
#: ../js/ui/status/power.js:248
|
||||||
msgid "Computer"
|
msgid "Computer"
|
||||||
msgstr "Computer"
|
msgstr "Computer"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:249 ../src/shell-app-system.c:1013
|
#: ../js/ui/status/power.js:250 ../src/shell-app-system.c:1088
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "Sconosciuto"
|
msgstr "Sconosciuto"
|
||||||
|
|
||||||
#: ../js/ui/status/volume.js:44
|
#: ../js/ui/status/volume.js:45
|
||||||
msgid "Volume"
|
msgid "Volume"
|
||||||
msgstr "Volume"
|
msgstr "Volume"
|
||||||
|
|
||||||
#: ../js/ui/status/volume.js:57
|
#: ../js/ui/status/volume.js:58
|
||||||
msgid "Microphone"
|
msgid "Microphone"
|
||||||
msgstr "Microfono"
|
msgstr "Microfono"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:239
|
#: ../js/ui/telepathyClient.js:332
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is online."
|
msgid "%s is online."
|
||||||
msgstr "%s è disponibile."
|
msgstr "%s è disponibile."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:244
|
#: ../js/ui/telepathyClient.js:337
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is offline."
|
msgid "%s is offline."
|
||||||
msgstr "%s è fuori rete."
|
msgstr "%s è fuori rete."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:247
|
#: ../js/ui/telepathyClient.js:340
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is away."
|
msgid "%s is away."
|
||||||
msgstr "%s è assente."
|
msgstr "%s è assente."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:250
|
#: ../js/ui/telepathyClient.js:343
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is busy."
|
msgid "%s is busy."
|
||||||
msgstr "%s non è disponibile."
|
msgstr "%s non è disponibile."
|
||||||
@ -956,7 +1096,7 @@ msgstr "%s non è disponibile."
|
|||||||
#. Translators: this is a time format string followed by a date.
|
#. Translators: this is a time format string followed by a date.
|
||||||
#. If applicable, replace %X with a strftime format valid for your
|
#. If applicable, replace %X with a strftime format valid for your
|
||||||
#. locale, without seconds.
|
#. locale, without seconds.
|
||||||
#: ../js/ui/telepathyClient.js:357
|
#: ../js/ui/telepathyClient.js:474
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent at %X on %A"
|
msgid "Sent at %X on %A"
|
||||||
msgstr "Inviato alle %-H.%M di %A"
|
msgstr "Inviato alle %-H.%M di %A"
|
||||||
@ -965,11 +1105,11 @@ msgstr "Inviato alle %-H.%M di %A"
|
|||||||
#. in the search entry when no search is
|
#. in the search entry when no search is
|
||||||
#. active; it should not exceed ~30
|
#. active; it should not exceed ~30
|
||||||
#. characters.
|
#. characters.
|
||||||
#: ../js/ui/viewSelector.js:117
|
#: ../js/ui/viewSelector.js:122
|
||||||
msgid "Type to search..."
|
msgid "Type to search..."
|
||||||
msgstr "Digitare per cercare..."
|
msgstr "Digitare per cercare..."
|
||||||
|
|
||||||
#: ../js/ui/viewSelector.js:137 ../src/shell-util.c:250
|
#: ../js/ui/viewSelector.js:142 ../src/shell-util.c:250
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "Cerca"
|
msgstr "Cerca"
|
||||||
|
|
||||||
@ -986,7 +1126,7 @@ msgstr "«%s» è pronto"
|
|||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The number of sound outputs on a particular device
|
#. * The number of sound outputs on a particular device
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1094
|
#: ../src/gvc/gvc-mixer-control.c:1098
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%u Output"
|
msgid "%u Output"
|
||||||
msgid_plural "%u Outputs"
|
msgid_plural "%u Outputs"
|
||||||
@ -995,58 +1135,69 @@ msgstr[1] "%u uscite"
|
|||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The number of sound inputs on a particular device
|
#. * The number of sound inputs on a particular device
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1104
|
#: ../src/gvc/gvc-mixer-control.c:1108
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%u Input"
|
msgid "%u Input"
|
||||||
msgid_plural "%u Inputs"
|
msgid_plural "%u Inputs"
|
||||||
msgstr[0] "%u ingresso"
|
msgstr[0] "%u ingresso"
|
||||||
msgstr[1] "%u ingressi"
|
msgstr[1] "%u ingressi"
|
||||||
|
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1402
|
#: ../src/gvc/gvc-mixer-control.c:1406
|
||||||
msgid "System Sounds"
|
msgid "System Sounds"
|
||||||
msgstr "Audio di sistema"
|
msgstr "Audio di sistema"
|
||||||
|
|
||||||
#: ../src/main.c:395
|
#: ../src/main.c:446
|
||||||
msgid "Print version"
|
msgid "Print version"
|
||||||
msgstr "Stampa la versione"
|
msgstr "Stampa la versione"
|
||||||
|
|
||||||
#: ../src/shell-global.c:1308
|
#: ../src/shell-app.c:454
|
||||||
|
#, c-format
|
||||||
|
msgid "Failed to launch '%s'"
|
||||||
|
msgstr "Avvio di «%s» non riuscito"
|
||||||
|
|
||||||
|
#: ../src/shell-global.c:1395
|
||||||
msgid "Less than a minute ago"
|
msgid "Less than a minute ago"
|
||||||
msgstr "Meno di un minuto fa"
|
msgstr "Meno di un minuto fa"
|
||||||
|
|
||||||
#: ../src/shell-global.c:1312
|
#: ../src/shell-global.c:1399
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d minute ago"
|
msgid "%d minute ago"
|
||||||
msgid_plural "%d minutes ago"
|
msgid_plural "%d minutes ago"
|
||||||
msgstr[0] "%d minuto fa"
|
msgstr[0] "%d minuto fa"
|
||||||
msgstr[1] "%d minuti fa"
|
msgstr[1] "%d minuti fa"
|
||||||
|
|
||||||
#: ../src/shell-global.c:1317
|
#: ../src/shell-global.c:1404
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d hour ago"
|
msgid "%d hour ago"
|
||||||
msgid_plural "%d hours ago"
|
msgid_plural "%d hours ago"
|
||||||
msgstr[0] "%d ora fa"
|
msgstr[0] "%d ora fa"
|
||||||
msgstr[1] "%d ore fa"
|
msgstr[1] "%d ore fa"
|
||||||
|
|
||||||
#: ../src/shell-global.c:1322
|
#: ../src/shell-global.c:1409
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d day ago"
|
msgid "%d day ago"
|
||||||
msgid_plural "%d days ago"
|
msgid_plural "%d days ago"
|
||||||
msgstr[0] "%d giorno fa"
|
msgstr[0] "%d giorno fa"
|
||||||
msgstr[1] "%d giorni fa"
|
msgstr[1] "%d giorni fa"
|
||||||
|
|
||||||
#: ../src/shell-global.c:1327
|
#: ../src/shell-global.c:1414
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d week ago"
|
msgid "%d week ago"
|
||||||
msgid_plural "%d weeks ago"
|
msgid_plural "%d weeks ago"
|
||||||
msgstr[0] "%d settimana fa"
|
msgstr[0] "%d settimana fa"
|
||||||
msgstr[1] "%d settimane fa"
|
msgstr[1] "%d settimane fa"
|
||||||
|
|
||||||
|
#: ../src/shell-mobile-providers.c:80
|
||||||
|
msgid "United Kingdom"
|
||||||
|
msgstr "Regno Unito"
|
||||||
|
|
||||||
|
#: ../src/shell-mobile-providers.c:526
|
||||||
|
msgid "Default"
|
||||||
|
msgstr "Predefinito"
|
||||||
|
|
||||||
#: ../src/shell-polkit-authentication-agent.c:334
|
#: ../src/shell-polkit-authentication-agent.c:334
|
||||||
#, fuzzy
|
|
||||||
msgid "Authentication dialog was dismissed by the user"
|
msgid "Authentication dialog was dismissed by the user"
|
||||||
msgstr ""
|
msgstr "Il dialogo di autenticazione è stato annullato dall'utente"
|
||||||
"Il dialogo di autenticazione è stato scartato|respinto|rimosso dall'utente"
|
|
||||||
|
|
||||||
#: ../src/shell-util.c:89
|
#: ../src/shell-util.c:89
|
||||||
msgid "Home Folder"
|
msgid "Home Folder"
|
||||||
@ -1069,6 +1220,36 @@ msgstr "File system"
|
|||||||
msgid "%1$s: %2$s"
|
msgid "%1$s: %2$s"
|
||||||
msgstr "%1$s: %2$s"
|
msgstr "%1$s: %2$s"
|
||||||
|
|
||||||
|
#~ msgid "Shut Down"
|
||||||
|
#~ msgstr "Arresta"
|
||||||
|
|
||||||
|
# usato un termine diverso, magari si capisce meglio (LF)
|
||||||
|
#~ msgid "Click Shut Down to quit these applications and shut down the system."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Fare clic su «Arresta» per chiudere queste applicazioni e spegnere il "
|
||||||
|
#~ "sistema."
|
||||||
|
|
||||||
|
#~ msgid "The system will shut down automatically in %d seconds."
|
||||||
|
#~ msgstr "Il sistema verrà arrestato automaticamente tra %d secondi."
|
||||||
|
|
||||||
|
#~ msgid "Shutting down the system."
|
||||||
|
#~ msgstr "Arresto del sistema."
|
||||||
|
|
||||||
|
#~ msgid "Confirm"
|
||||||
|
#~ msgstr "Conferma"
|
||||||
|
|
||||||
|
#~ msgid "Panel"
|
||||||
|
#~ msgstr "Pannello"
|
||||||
|
|
||||||
|
#~ msgid "No such application"
|
||||||
|
#~ msgstr "Applicazione inesistente"
|
||||||
|
|
||||||
|
#~ msgid "Screen Reader"
|
||||||
|
#~ msgstr "Lettore schermo"
|
||||||
|
|
||||||
|
#~ msgid "Screen Keyboard"
|
||||||
|
#~ msgstr "Tastiera a schermo"
|
||||||
|
|
||||||
#~ msgid "PREFERENCES"
|
#~ msgid "PREFERENCES"
|
||||||
#~ msgstr "PREFERENZE"
|
#~ msgstr "PREFERENZE"
|
||||||
|
|
||||||
|
454
po/ko.po
454
po/ko.po
@ -6,9 +6,9 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gnome-shell\n"
|
"Project-Id-Version: gnome-shell\n"
|
||||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||||
"shell&component=general\n"
|
"shell&keywords=I18N+L10N&component=general\n"
|
||||||
"POT-Creation-Date: 2011-03-08 05:43+0000\n"
|
"POT-Creation-Date: 2011-03-24 08:03+0000\n"
|
||||||
"PO-Revision-Date: 2011-03-14 10:40+0900\n"
|
"PO-Revision-Date: 2011-03-25 21:56+0900\n"
|
||||||
"Last-Translator: Changwoo Ryu <cwryu@debian.org>\n"
|
"Last-Translator: Changwoo Ryu <cwryu@debian.org>\n"
|
||||||
"Language-Team: GNOME Korea <gnome-kr@googlegroups.com>\n"
|
"Language-Team: GNOME Korea <gnome-kr@googlegroups.com>\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
@ -161,47 +161,43 @@ msgstr "프로그램 사용 통계를 저장할지 여부"
|
|||||||
msgid "disabled OpenSearch providers"
|
msgid "disabled OpenSearch providers"
|
||||||
msgstr "OpenSearch 서비스 사용하지 않음"
|
msgstr "OpenSearch 서비스 사용하지 않음"
|
||||||
|
|
||||||
#: ../js/misc/util.js:86
|
#: ../js/misc/util.js:71
|
||||||
msgid "Command not found"
|
msgid "Command not found"
|
||||||
msgstr "명령이 없습니다"
|
msgstr "명령이 없습니다"
|
||||||
|
|
||||||
#. Replace "Error invoking GLib.shell_parse_argv: " with
|
#. Replace "Error invoking GLib.shell_parse_argv: " with
|
||||||
#. something nicer
|
#. something nicer
|
||||||
#: ../js/misc/util.js:113
|
#: ../js/misc/util.js:98
|
||||||
msgid "Could not parse command:"
|
msgid "Could not parse command:"
|
||||||
msgstr "명령어를 파싱할 수 없습니다:"
|
msgstr "명령어를 파싱할 수 없습니다:"
|
||||||
|
|
||||||
#: ../js/misc/util.js:135
|
#: ../js/misc/util.js:106
|
||||||
msgid "No such application"
|
|
||||||
msgstr "그런 프로그램이 없습니다"
|
|
||||||
|
|
||||||
#: ../js/misc/util.js:148
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Execution of '%s' failed:"
|
msgid "Execution of '%s' failed:"
|
||||||
msgstr "'%s' 실행이 실패했습니다:"
|
msgstr "'%s' 실행이 실패했습니다:"
|
||||||
|
|
||||||
#. Translators: Filter to display all applications
|
#. Translators: Filter to display all applications
|
||||||
#: ../js/ui/appDisplay.js:226
|
#: ../js/ui/appDisplay.js:230
|
||||||
msgid "All"
|
msgid "All"
|
||||||
msgstr "모두"
|
msgstr "모두"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:324
|
#: ../js/ui/appDisplay.js:328
|
||||||
msgid "APPLICATIONS"
|
msgid "APPLICATIONS"
|
||||||
msgstr "프로그램"
|
msgstr "프로그램"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:350
|
#: ../js/ui/appDisplay.js:354
|
||||||
msgid "SETTINGS"
|
msgid "SETTINGS"
|
||||||
msgstr "설정"
|
msgstr "설정"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:612
|
#: ../js/ui/appDisplay.js:625
|
||||||
msgid "New Window"
|
msgid "New Window"
|
||||||
msgstr "새 창"
|
msgstr "새 창"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:615
|
#: ../js/ui/appDisplay.js:628
|
||||||
msgid "Remove from Favorites"
|
msgid "Remove from Favorites"
|
||||||
msgstr "즐겨찾기에서 제거"
|
msgstr "즐겨찾기에서 제거"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:616
|
#: ../js/ui/appDisplay.js:629
|
||||||
msgid "Add to Favorites"
|
msgid "Add to Favorites"
|
||||||
msgstr "즐겨찾기에 추가"
|
msgstr "즐겨찾기에 추가"
|
||||||
|
|
||||||
@ -361,7 +357,7 @@ msgstr "이번주"
|
|||||||
msgid "Next week"
|
msgid "Next week"
|
||||||
msgstr "다음주"
|
msgstr "다음주"
|
||||||
|
|
||||||
#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:933
|
#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:994
|
||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "제거"
|
msgstr "제거"
|
||||||
|
|
||||||
@ -416,7 +412,7 @@ msgstr "(%a) %p %l:%M"
|
|||||||
#. Translators: This is the date format to use when the calendar popup is
|
#. 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").
|
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
|
||||||
#.
|
#.
|
||||||
#: ../js/ui/dateMenu.js:209
|
#: ../js/ui/dateMenu.js:194
|
||||||
msgid "%A %B %e, %Y"
|
msgid "%A %B %e, %Y"
|
||||||
msgstr "%Y년 %B %e일 %A"
|
msgstr "%Y년 %B %e일 %A"
|
||||||
|
|
||||||
@ -429,7 +425,7 @@ msgstr "최근 항목"
|
|||||||
msgid "Log Out %s"
|
msgid "Log Out %s"
|
||||||
msgstr "로그아웃 %s"
|
msgstr "로그아웃 %s"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:69
|
#: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:70
|
||||||
msgid "Log Out"
|
msgid "Log Out"
|
||||||
msgstr "로그아웃"
|
msgstr "로그아웃"
|
||||||
|
|
||||||
@ -451,45 +447,43 @@ msgstr "%d초 뒤에 자동으로 로그아웃합니다."
|
|||||||
msgid "Logging out of the system."
|
msgid "Logging out of the system."
|
||||||
msgstr "시스템에서 로그아웃."
|
msgstr "시스템에서 로그아웃."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:74 ../js/ui/endSessionDialog.js:78
|
#: ../js/ui/endSessionDialog.js:75 ../js/ui/endSessionDialog.js:82
|
||||||
msgid "Shut Down"
|
msgid "Power Off"
|
||||||
msgstr "컴퓨터 끄기"
|
msgstr "컴퓨터 끄기"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:75
|
|
||||||
msgid "Click Shut Down to quit these applications and shut down the system."
|
|
||||||
msgstr "컴퓨터 끄기를 누르면 이 프로그램을 끝내고 시스템을 끕니다."
|
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:76
|
#: ../js/ui/endSessionDialog.js:76
|
||||||
#, c-format
|
msgid "Click Power Off to quit these applications and power off the system."
|
||||||
msgid "The system will shut down automatically in %d seconds."
|
msgstr "컴퓨터 끄기를 누르면 이 프로그램을 끝내고 시스템의 전원을 끕니다."
|
||||||
msgstr "시스템이 %d초 뒤에 자동으로 꺼집니다."
|
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:77
|
#: ../js/ui/endSessionDialog.js:77
|
||||||
msgid "Shutting down the system."
|
#, c-format
|
||||||
msgstr "시스템을 끕니다."
|
msgid "The system will power off automatically in %d seconds."
|
||||||
|
msgstr "시스템이 %d초 뒤에 자동으로 꺼집니다."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:84 ../js/ui/endSessionDialog.js:88
|
#: ../js/ui/endSessionDialog.js:78
|
||||||
|
msgid "Powering off the system."
|
||||||
|
msgstr "시스템 전원 끄기."
|
||||||
|
|
||||||
|
#: ../js/ui/endSessionDialog.js:80 ../js/ui/endSessionDialog.js:88
|
||||||
|
#: ../js/ui/endSessionDialog.js:93
|
||||||
msgid "Restart"
|
msgid "Restart"
|
||||||
msgstr "다시 시작"
|
msgstr "다시 시작"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:85
|
#: ../js/ui/endSessionDialog.js:89
|
||||||
msgid "Click Restart to quit these applications and restart the system."
|
msgid "Click Restart to quit these applications and restart the system."
|
||||||
msgstr "다시 시작을 누르면 이 프로그램을 끝내고 시스템을 다시 시작합니다."
|
msgstr "다시 시작을 누르면 이 프로그램을 끝내고 시스템을 다시 시작합니다."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:86
|
#: ../js/ui/endSessionDialog.js:90
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "The system will restart automatically in %d seconds."
|
msgid "The system will restart automatically in %d seconds."
|
||||||
msgstr "시스템이 %d초 뒤에 자동으로 다시 시작합니다."
|
msgstr "시스템이 %d초 뒤에 자동으로 다시 시작합니다."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:87
|
#: ../js/ui/endSessionDialog.js:91
|
||||||
msgid "Restarting the system."
|
msgid "Restarting the system."
|
||||||
msgstr "시스템을 다시 시작합니다."
|
msgstr "시스템을 다시 시작합니다."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:395
|
#: ../js/ui/endSessionDialog.js:415 ../js/ui/polkitAuthenticationAgent.js:172
|
||||||
msgid "Confirm"
|
#: ../js/ui/status/bluetooth.js:466
|
||||||
msgstr "확인"
|
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:400 ../js/ui/status/bluetooth.js:470
|
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "취소"
|
msgstr "취소"
|
||||||
|
|
||||||
@ -503,7 +497,7 @@ msgstr "사용"
|
|||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The device has been disabled
|
#. * The device has been disabled
|
||||||
#: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1087
|
#: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1091
|
||||||
msgid "Disabled"
|
msgid "Disabled"
|
||||||
msgstr "사용 않음"
|
msgstr "사용 않음"
|
||||||
|
|
||||||
@ -523,47 +517,47 @@ msgstr "소스 보기"
|
|||||||
msgid "Web Page"
|
msgid "Web Page"
|
||||||
msgstr "웹페이지"
|
msgstr "웹페이지"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:926
|
#: ../js/ui/messageTray.js:987
|
||||||
msgid "Open"
|
msgid "Open"
|
||||||
msgstr "열기"
|
msgstr "열기"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1963
|
#: ../js/ui/messageTray.js:2145
|
||||||
msgid "System Information"
|
msgid "System Information"
|
||||||
msgstr "시스템 정보"
|
msgstr "시스템 정보"
|
||||||
|
|
||||||
#: ../js/ui/overview.js:88
|
#: ../js/ui/overview.js:91
|
||||||
msgid "Undo"
|
msgid "Undo"
|
||||||
msgstr "실행 취소"
|
msgstr "실행 취소"
|
||||||
|
|
||||||
#: ../js/ui/overview.js:183
|
#: ../js/ui/overview.js:186
|
||||||
msgid "Windows"
|
msgid "Windows"
|
||||||
msgstr "창"
|
msgstr "창"
|
||||||
|
|
||||||
#: ../js/ui/overview.js:186
|
#: ../js/ui/overview.js:189
|
||||||
msgid "Applications"
|
msgid "Applications"
|
||||||
msgstr "프로그램"
|
msgstr "프로그램"
|
||||||
|
|
||||||
#. Translators: this is the name of the dock/favorites area on
|
#. Translators: this is the name of the dock/favorites area on
|
||||||
#. the left of the overview
|
#. the left of the overview
|
||||||
#: ../js/ui/overview.js:202
|
#: ../js/ui/overview.js:205
|
||||||
msgid "Dash"
|
msgid "Dash"
|
||||||
msgstr "대시보드"
|
msgstr "대시보드"
|
||||||
|
|
||||||
#. TODO - _quit() doesn't really work on apps in state STARTING yet
|
#. TODO - _quit() doesn't really work on apps in state STARTING yet
|
||||||
#: ../js/ui/panel.js:532
|
#: ../js/ui/panel.js:515
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Quit %s"
|
msgid "Quit %s"
|
||||||
msgstr "%s 끝내기"
|
msgstr "%s 끝내기"
|
||||||
|
|
||||||
#. Button on the left side of the panel.
|
#. Button on the left side of the panel.
|
||||||
#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
|
#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
|
||||||
#: ../js/ui/panel.js:893
|
#: ../js/ui/panel.js:878
|
||||||
msgid "Activities"
|
msgid "Activities"
|
||||||
msgstr "현재 활동"
|
msgstr "현재 활동"
|
||||||
|
|
||||||
#: ../js/ui/panel.js:994
|
#: ../js/ui/panel.js:979
|
||||||
msgid "Panel"
|
msgid "Top Bar"
|
||||||
msgstr "패널"
|
msgstr "위 막대"
|
||||||
|
|
||||||
#: ../js/ui/placeDisplay.js:122
|
#: ../js/ui/placeDisplay.js:122
|
||||||
#, c-format
|
#, c-format
|
||||||
@ -578,64 +572,84 @@ msgstr "다시 시도"
|
|||||||
msgid "Connect to..."
|
msgid "Connect to..."
|
||||||
msgstr "연결..."
|
msgstr "연결..."
|
||||||
|
|
||||||
#: ../js/ui/placeDisplay.js:409
|
#: ../js/ui/placeDisplay.js:380
|
||||||
msgid "PLACES & DEVICES"
|
msgid "PLACES & DEVICES"
|
||||||
msgstr "위치 및 장치"
|
msgstr "위치 및 장치"
|
||||||
|
|
||||||
|
#: ../js/ui/polkitAuthenticationAgent.js:74
|
||||||
|
msgid "Authentication Required"
|
||||||
|
msgstr "인증이 필요합니다"
|
||||||
|
|
||||||
|
#: ../js/ui/polkitAuthenticationAgent.js:108
|
||||||
|
msgid "Administrator"
|
||||||
|
msgstr "관리자"
|
||||||
|
|
||||||
|
#: ../js/ui/polkitAuthenticationAgent.js:176
|
||||||
|
msgid "Authenticate"
|
||||||
|
msgstr "인증"
|
||||||
|
|
||||||
|
#: ../js/ui/polkitAuthenticationAgent.js:260
|
||||||
|
msgid "Sorry, that didn't work. Please try again."
|
||||||
|
msgstr "죄송합니다. 동작하지 않았습니다. 다시 시도하십시오."
|
||||||
|
|
||||||
|
#: ../js/ui/polkitAuthenticationAgent.js:272
|
||||||
|
msgid "Password:"
|
||||||
|
msgstr "암호:"
|
||||||
|
|
||||||
#. Translators: this MUST be either "toggle-switch-us"
|
#. Translators: this MUST be either "toggle-switch-us"
|
||||||
#. (for toggle switches containing the English words
|
#. (for toggle switches containing the English words
|
||||||
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
||||||
#. switches containing "◯" and "|"). Other values will
|
#. switches containing "◯" and "|"). Other values will
|
||||||
#. simply result in invisible toggle switches.
|
#. simply result in invisible toggle switches.
|
||||||
#: ../js/ui/popupMenu.js:618
|
#: ../js/ui/popupMenu.js:679
|
||||||
msgid "toggle-switch-us"
|
msgid "toggle-switch-us"
|
||||||
msgstr "toggle-switch-intl"
|
msgstr "toggle-switch-intl"
|
||||||
|
|
||||||
#: ../js/ui/runDialog.js:201
|
#: ../js/ui/runDialog.js:205
|
||||||
msgid "Please enter a command:"
|
msgid "Please enter a command:"
|
||||||
msgstr "명령을 입력하십시오:"
|
msgstr "명령을 입력하십시오:"
|
||||||
|
|
||||||
#: ../js/ui/searchDisplay.js:283
|
#: ../js/ui/searchDisplay.js:310
|
||||||
msgid "Searching..."
|
msgid "Searching..."
|
||||||
msgstr "검색하는 중..."
|
msgstr "검색하는 중..."
|
||||||
|
|
||||||
#: ../js/ui/searchDisplay.js:297
|
#: ../js/ui/searchDisplay.js:324
|
||||||
msgid "No matching results."
|
msgid "No matching results."
|
||||||
msgstr "일치하는 결과가 없습니다."
|
msgstr "일치하는 결과가 없습니다."
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:102 ../js/ui/statusMenu.js:166
|
#: ../js/ui/statusMenu.js:161 ../js/ui/statusMenu.js:228
|
||||||
msgid "Power Off..."
|
msgid "Power Off..."
|
||||||
msgstr "컴퓨터 끄기..."
|
msgstr "컴퓨터 끄기..."
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:104 ../js/ui/statusMenu.js:165
|
#: ../js/ui/statusMenu.js:163 ../js/ui/statusMenu.js:227
|
||||||
msgid "Suspend"
|
msgid "Suspend"
|
||||||
msgstr "절전"
|
msgstr "절전"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:125
|
#: ../js/ui/statusMenu.js:184
|
||||||
msgid "Available"
|
msgid "Available"
|
||||||
msgstr "대화 가능"
|
msgstr "대화 가능"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:130
|
#: ../js/ui/statusMenu.js:189
|
||||||
msgid "Busy"
|
msgid "Busy"
|
||||||
msgstr "다른 용무 중"
|
msgstr "다른 용무 중"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:138
|
#: ../js/ui/statusMenu.js:197
|
||||||
msgid "My Account"
|
msgid "My Account"
|
||||||
msgstr "내 계정"
|
msgstr "내 계정"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:142
|
#: ../js/ui/statusMenu.js:201
|
||||||
msgid "System Settings"
|
msgid "System Settings"
|
||||||
msgstr "시스템 설정"
|
msgstr "시스템 설정"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:149
|
#: ../js/ui/statusMenu.js:208
|
||||||
msgid "Lock Screen"
|
msgid "Lock Screen"
|
||||||
msgstr "화면 잠그기"
|
msgstr "화면 잠그기"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:153
|
#: ../js/ui/statusMenu.js:213
|
||||||
msgid "Switch User"
|
msgid "Switch User"
|
||||||
msgstr "사용자 바꾸기"
|
msgstr "사용자 바꾸기"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:158
|
#: ../js/ui/statusMenu.js:218
|
||||||
msgid "Log Out..."
|
msgid "Log Out..."
|
||||||
msgstr "로그아웃..."
|
msgstr "로그아웃..."
|
||||||
|
|
||||||
@ -643,14 +657,12 @@ msgstr "로그아웃..."
|
|||||||
msgid "Zoom"
|
msgid "Zoom"
|
||||||
msgstr "크기 조정"
|
msgstr "크기 조정"
|
||||||
|
|
||||||
#: ../js/ui/status/accessibility.js:69
|
#. let screenReader = this._buildItem(_("Screen Reader"), APPLICATIONS_SCHEMA,
|
||||||
msgid "Screen Reader"
|
#. 'screen-reader-enabled');
|
||||||
msgstr "화면 읽기"
|
#. this.menu.addMenuItem(screenReader);
|
||||||
|
#. let screenKeyboard = this._buildItem(_("Screen Keyboard"), APPLICATIONS_SCHEMA,
|
||||||
#: ../js/ui/status/accessibility.js:73
|
#. 'screen-keyboard-enabled');
|
||||||
msgid "Screen Keyboard"
|
#. this.menu.addMenuItem(screenKeyboard);
|
||||||
msgstr "화면 키보드"
|
|
||||||
|
|
||||||
#: ../js/ui/status/accessibility.js:77
|
#: ../js/ui/status/accessibility.js:77
|
||||||
msgid "Visual Alerts"
|
msgid "Visual Alerts"
|
||||||
msgstr "화면 알림"
|
msgstr "화면 알림"
|
||||||
@ -673,19 +685,19 @@ msgstr "마우스 키"
|
|||||||
|
|
||||||
#: ../js/ui/status/accessibility.js:93
|
#: ../js/ui/status/accessibility.js:93
|
||||||
msgid "Universal Access Settings"
|
msgid "Universal Access Settings"
|
||||||
msgstr "보편적 접근성 설정"
|
msgstr "접근성 설정"
|
||||||
|
|
||||||
#: ../js/ui/status/accessibility.js:145
|
#: ../js/ui/status/accessibility.js:146
|
||||||
msgid "High Contrast"
|
msgid "High Contrast"
|
||||||
msgstr "고대비"
|
msgstr "고대비"
|
||||||
|
|
||||||
#: ../js/ui/status/accessibility.js:182
|
#: ../js/ui/status/accessibility.js:183
|
||||||
msgid "Large Text"
|
msgid "Large Text"
|
||||||
msgstr "큰 글자"
|
msgstr "큰 글자"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:241
|
#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:237
|
||||||
#: ../js/ui/status/bluetooth.js:337 ../js/ui/status/bluetooth.js:371
|
#: ../js/ui/status/bluetooth.js:333 ../js/ui/status/bluetooth.js:367
|
||||||
#: ../js/ui/status/bluetooth.js:411 ../js/ui/status/bluetooth.js:444
|
#: ../js/ui/status/bluetooth.js:407 ../js/ui/status/bluetooth.js:440
|
||||||
msgid "Bluetooth"
|
msgid "Bluetooth"
|
||||||
msgstr "블루투스"
|
msgstr "블루투스"
|
||||||
|
|
||||||
@ -705,94 +717,94 @@ msgstr "새 장치 준비..."
|
|||||||
msgid "Bluetooth Settings"
|
msgid "Bluetooth Settings"
|
||||||
msgstr "블루투스 설정"
|
msgstr "블루투스 설정"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:192
|
#: ../js/ui/status/bluetooth.js:188
|
||||||
msgid "Connection"
|
msgid "Connection"
|
||||||
msgstr "연결"
|
msgstr "연결"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:228
|
#: ../js/ui/status/bluetooth.js:224
|
||||||
msgid "Send Files..."
|
msgid "Send Files..."
|
||||||
msgstr "파일 보내기..."
|
msgstr "파일 보내기..."
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:233
|
#: ../js/ui/status/bluetooth.js:229
|
||||||
msgid "Browse Files..."
|
msgid "Browse Files..."
|
||||||
msgstr "파일 찾아보기..."
|
msgstr "파일 찾아보기..."
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:242
|
#: ../js/ui/status/bluetooth.js:238
|
||||||
msgid "Error browsing device"
|
msgid "Error browsing device"
|
||||||
msgstr "장치를 찾아보는데 오류"
|
msgstr "장치를 찾아보는데 오류"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:243
|
#: ../js/ui/status/bluetooth.js:239
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "The requested device cannot be browsed, error is '%s'"
|
msgid "The requested device cannot be browsed, error is '%s'"
|
||||||
msgstr "요청한 장치를 찾아볼 수 없습니다. 오류는 '%s'"
|
msgstr "요청한 장치를 찾아볼 수 없습니다. 오류는 '%s'"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:251
|
#: ../js/ui/status/bluetooth.js:247
|
||||||
msgid "Keyboard Settings"
|
msgid "Keyboard Settings"
|
||||||
msgstr "키보드 설정"
|
msgstr "키보드 설정"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:256
|
#: ../js/ui/status/bluetooth.js:252
|
||||||
msgid "Mouse Settings"
|
msgid "Mouse Settings"
|
||||||
msgstr "마우스 설정"
|
msgstr "마우스 설정"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:263 ../js/ui/status/volume.js:65
|
#: ../js/ui/status/bluetooth.js:259 ../js/ui/status/volume.js:66
|
||||||
msgid "Sound Settings"
|
msgid "Sound Settings"
|
||||||
msgstr "소리 설정"
|
msgstr "소리 설정"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:372
|
#: ../js/ui/status/bluetooth.js:368
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Authorization request from %s"
|
msgid "Authorization request from %s"
|
||||||
msgstr "%s 장치에서 권한 확인 요청"
|
msgstr "%s 장치에서 권한 확인 요청"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:378
|
#: ../js/ui/status/bluetooth.js:374
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Device %s wants access to the service '%s'"
|
msgid "Device %s wants access to the service '%s'"
|
||||||
msgstr "%s 장치에서 '%s' 서비스에 접근을 요청합니다"
|
msgstr "%s 장치에서 '%s' 서비스에 접근을 요청합니다"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:380
|
#: ../js/ui/status/bluetooth.js:376
|
||||||
msgid "Always grant access"
|
msgid "Always grant access"
|
||||||
msgstr "항상 접근 허용"
|
msgstr "항상 접근 허용"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:381
|
#: ../js/ui/status/bluetooth.js:377
|
||||||
msgid "Grant this time only"
|
msgid "Grant this time only"
|
||||||
msgstr "이번에만 허용"
|
msgstr "이번에만 허용"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:382
|
#: ../js/ui/status/bluetooth.js:378
|
||||||
msgid "Reject"
|
msgid "Reject"
|
||||||
msgstr "거부"
|
msgstr "거부"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:412
|
#: ../js/ui/status/bluetooth.js:408
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Pairing confirmation for %s"
|
msgid "Pairing confirmation for %s"
|
||||||
msgstr "연결 확인 (%s)"
|
msgstr "연결 확인 (%s)"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:418 ../js/ui/status/bluetooth.js:452
|
#: ../js/ui/status/bluetooth.js:414 ../js/ui/status/bluetooth.js:448
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Device %s wants to pair with this computer"
|
msgid "Device %s wants to pair with this computer"
|
||||||
msgstr "%s 장치가 이 컴퓨터와 연결하려 합니다."
|
msgstr "%s 장치가 이 컴퓨터와 연결하려 합니다."
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:419
|
#: ../js/ui/status/bluetooth.js:415
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Please confirm whether the PIN '%s' matches the one on the device."
|
msgid "Please confirm whether the PIN '%s' matches the one on the device."
|
||||||
msgstr "PIN '%s'이(가) 해당 장치의 PIN과 일치하는지 확인하십시오."
|
msgstr "PIN '%s'이(가) 해당 장치의 PIN과 일치하는지 확인하십시오."
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:421
|
#: ../js/ui/status/bluetooth.js:417
|
||||||
msgid "Matches"
|
msgid "Matches"
|
||||||
msgstr "일치"
|
msgstr "일치"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:422
|
#: ../js/ui/status/bluetooth.js:418
|
||||||
msgid "Does not match"
|
msgid "Does not match"
|
||||||
msgstr "일치하지 않음"
|
msgstr "일치하지 않음"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:445
|
#: ../js/ui/status/bluetooth.js:441
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Pairing request for %s"
|
msgid "Pairing request for %s"
|
||||||
msgstr "연결 요청 (%s)"
|
msgstr "연결 요청 (%s)"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:453
|
#: ../js/ui/status/bluetooth.js:449
|
||||||
msgid "Please enter the PIN mentioned on the device."
|
msgid "Please enter the PIN mentioned on the device."
|
||||||
msgstr "해당 장치에 표시된 PIN을 입력하십시오."
|
msgstr "해당 장치에 표시된 PIN을 입력하십시오."
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:469
|
#: ../js/ui/status/bluetooth.js:465
|
||||||
msgid "OK"
|
msgid "OK"
|
||||||
msgstr "확인"
|
msgstr "확인"
|
||||||
|
|
||||||
@ -804,117 +816,247 @@ msgstr "키보드 배치 보기..."
|
|||||||
msgid "Localization Settings"
|
msgid "Localization Settings"
|
||||||
msgstr "지역화 설정"
|
msgstr "지역화 설정"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:102 ../js/ui/status/network.js:1393
|
||||||
|
msgid "<unknown>"
|
||||||
|
msgstr "<알 수 없음>"
|
||||||
|
|
||||||
|
#. Translators: this indicates that wireless or wwan is disabled by hardware killswitch
|
||||||
|
#: ../js/ui/status/network.js:295
|
||||||
|
msgid "disabled"
|
||||||
|
msgstr "사용 않음"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:476
|
||||||
|
msgid "connecting..."
|
||||||
|
msgstr "연결하는 중..."
|
||||||
|
|
||||||
|
#. Translators: this is for network connections that require some kind of key or password
|
||||||
|
#: ../js/ui/status/network.js:479
|
||||||
|
msgid "authentication required"
|
||||||
|
msgstr "인증이 필요합니다"
|
||||||
|
|
||||||
|
#. Translators: this is for wired network devices that are physically disconnected
|
||||||
|
#: ../js/ui/status/network.js:485
|
||||||
|
msgid "cable unplugged"
|
||||||
|
msgstr "케이블이 분리되었습니다"
|
||||||
|
|
||||||
|
#. Translators: this is for a network device that cannot be activated (for example it
|
||||||
|
#. is disabled by rfkill, or it has no coverage
|
||||||
|
#: ../js/ui/status/network.js:489
|
||||||
|
msgid "unavailable"
|
||||||
|
msgstr "사용 불가"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:491
|
||||||
|
msgid "connection failed"
|
||||||
|
msgstr "연결이 실패했습니다"
|
||||||
|
|
||||||
|
#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
|
||||||
|
#. and we cannot access its settings (including the name)
|
||||||
|
#: ../js/ui/status/network.js:571 ../js/ui/status/network.js:1341
|
||||||
|
msgid "Connected (private)"
|
||||||
|
msgstr "연결됨 (개인)"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:636
|
||||||
|
msgid "Auto Ethernet"
|
||||||
|
msgstr "자동 이더넷"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:697
|
||||||
|
msgid "Auto broadband"
|
||||||
|
msgstr "자동 고속 통신망"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:700
|
||||||
|
msgid "Auto dial-up"
|
||||||
|
msgstr "자동 전화접속"
|
||||||
|
|
||||||
|
#. TRANSLATORS: this the automatic wireless connection name (including the network name)
|
||||||
|
#: ../js/ui/status/network.js:843 ../js/ui/status/network.js:1353
|
||||||
|
#, c-format
|
||||||
|
msgid "Auto %s"
|
||||||
|
msgstr "자동 %s"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:845
|
||||||
|
msgid "Auto bluetooth"
|
||||||
|
msgstr "자동 블루투스"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1355
|
||||||
|
msgid "Auto wireless"
|
||||||
|
msgstr "자동 무선"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1413
|
||||||
|
msgid "More..."
|
||||||
|
msgstr "더 보기..."
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1436
|
||||||
|
msgid "Enable networking"
|
||||||
|
msgstr "네트워크 사용"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1448
|
||||||
|
msgid "Wired"
|
||||||
|
msgstr "유선"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1459
|
||||||
|
msgid "Wireless"
|
||||||
|
msgstr "무선"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1469
|
||||||
|
msgid "Mobile broadband"
|
||||||
|
msgstr "휴대전화 네트워크"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1479
|
||||||
|
msgid "VPN Connections"
|
||||||
|
msgstr "VPN 연결"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1488
|
||||||
|
msgid "Network Settings"
|
||||||
|
msgstr "네트워크 설정"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1783
|
||||||
|
#, c-format
|
||||||
|
msgid "You're now connected to mobile broadband connection '%s'"
|
||||||
|
msgstr "'%s' 휴대전화 네트워크에 연결되었습니다"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1787
|
||||||
|
#, c-format
|
||||||
|
msgid "You're now connected to wireless network '%s'"
|
||||||
|
msgstr "'%s' 무선 네트워크에 연결되었습니다"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1791
|
||||||
|
#, c-format
|
||||||
|
msgid "You're now connected to wired network '%s'"
|
||||||
|
msgstr "'%s' 유선 네트워크에 연결되었습니다"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1795
|
||||||
|
#, c-format
|
||||||
|
msgid "You're now connected to VPN network '%s'"
|
||||||
|
msgstr "'%s' VPN 네트워크에 연결되었습니다"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1800
|
||||||
|
#, c-format
|
||||||
|
msgid "You're now connected to '%s'"
|
||||||
|
msgstr "이제 '%s'에 연결되었습니다"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1808
|
||||||
|
msgid "Connection established"
|
||||||
|
msgstr "연결이 되었습니다"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1930
|
||||||
|
msgid "Networking is disabled"
|
||||||
|
msgstr "네트워크를 사용하지 않습니다"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:2055
|
||||||
|
msgid "Network Manager"
|
||||||
|
msgstr "네트워크 관리"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:85
|
#: ../js/ui/status/power.js:85
|
||||||
msgid "Power Settings"
|
msgid "Power Settings"
|
||||||
msgstr "전원 설정"
|
msgstr "전원 설정"
|
||||||
|
|
||||||
#. 0 is reported when UPower does not have enough data
|
#. 0 is reported when UPower does not have enough data
|
||||||
#. to estimate battery life
|
#. to estimate battery life
|
||||||
#: ../js/ui/status/power.js:110
|
#: ../js/ui/status/power.js:111
|
||||||
msgid "Estimating..."
|
msgid "Estimating..."
|
||||||
msgstr "예상치 계산 중..."
|
msgstr "예상치 계산 중..."
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:117
|
#: ../js/ui/status/power.js:118
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d hour remaining"
|
msgid "%d hour remaining"
|
||||||
msgid_plural "%d hours remaining"
|
msgid_plural "%d hours remaining"
|
||||||
msgstr[0] "%d시간 남음"
|
msgstr[0] "%d시간 남음"
|
||||||
|
|
||||||
#. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining"
|
#. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining"
|
||||||
#: ../js/ui/status/power.js:120
|
#: ../js/ui/status/power.js:121
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d %s %d %s remaining"
|
msgid "%d %s %d %s remaining"
|
||||||
msgstr "%d%s %d%s 남음"
|
msgstr "%d%s %d%s 남음"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:122
|
#: ../js/ui/status/power.js:123
|
||||||
msgid "hour"
|
msgid "hour"
|
||||||
msgid_plural "hours"
|
msgid_plural "hours"
|
||||||
msgstr[0] "시간"
|
msgstr[0] "시간"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:122
|
#: ../js/ui/status/power.js:123
|
||||||
msgid "minute"
|
msgid "minute"
|
||||||
msgid_plural "minutes"
|
msgid_plural "minutes"
|
||||||
msgstr[0] "분"
|
msgstr[0] "분"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:125
|
#: ../js/ui/status/power.js:126
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d minute remaining"
|
msgid "%d minute remaining"
|
||||||
msgid_plural "%d minutes remaining"
|
msgid_plural "%d minutes remaining"
|
||||||
msgstr[0] "%d분 남음"
|
msgstr[0] "%d분 남음"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:227
|
#: ../js/ui/status/power.js:228
|
||||||
msgid "AC adapter"
|
msgid "AC adapter"
|
||||||
msgstr "AC 어댑터"
|
msgstr "AC 어댑터"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:229
|
#: ../js/ui/status/power.js:230
|
||||||
msgid "Laptop battery"
|
msgid "Laptop battery"
|
||||||
msgstr "노트북 배터리"
|
msgstr "노트북 배터리"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:231
|
#: ../js/ui/status/power.js:232
|
||||||
msgid "UPS"
|
msgid "UPS"
|
||||||
msgstr "UPS"
|
msgstr "UPS"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:233
|
#: ../js/ui/status/power.js:234
|
||||||
msgid "Monitor"
|
msgid "Monitor"
|
||||||
msgstr "모니터"
|
msgstr "모니터"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:235
|
#: ../js/ui/status/power.js:236
|
||||||
msgid "Mouse"
|
msgid "Mouse"
|
||||||
msgstr "마우스"
|
msgstr "마우스"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:237
|
#: ../js/ui/status/power.js:238
|
||||||
msgid "Keyboard"
|
msgid "Keyboard"
|
||||||
msgstr "키보드"
|
msgstr "키보드"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:239
|
#: ../js/ui/status/power.js:240
|
||||||
msgid "PDA"
|
msgid "PDA"
|
||||||
msgstr "PDA"
|
msgstr "PDA"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:241
|
#: ../js/ui/status/power.js:242
|
||||||
msgid "Cell phone"
|
msgid "Cell phone"
|
||||||
msgstr "휴대전화"
|
msgstr "휴대전화"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:243
|
#: ../js/ui/status/power.js:244
|
||||||
msgid "Media player"
|
msgid "Media player"
|
||||||
msgstr "미디어 플레이어"
|
msgstr "미디어 플레이어"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:245
|
#: ../js/ui/status/power.js:246
|
||||||
msgid "Tablet"
|
msgid "Tablet"
|
||||||
msgstr "태블릿"
|
msgstr "태블릿"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:247
|
#: ../js/ui/status/power.js:248
|
||||||
msgid "Computer"
|
msgid "Computer"
|
||||||
msgstr "컴퓨터"
|
msgstr "컴퓨터"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:249 ../src/shell-app-system.c:1013
|
#: ../js/ui/status/power.js:250 ../src/shell-app-system.c:1088
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "알 수 없음"
|
msgstr "알 수 없음"
|
||||||
|
|
||||||
# 오디오 볼륨
|
# 오디오 볼륨
|
||||||
#: ../js/ui/status/volume.js:44
|
#: ../js/ui/status/volume.js:45
|
||||||
msgid "Volume"
|
msgid "Volume"
|
||||||
msgstr "볼륨"
|
msgstr "볼륨"
|
||||||
|
|
||||||
#: ../js/ui/status/volume.js:57
|
#: ../js/ui/status/volume.js:58
|
||||||
msgid "Microphone"
|
msgid "Microphone"
|
||||||
msgstr "마이크"
|
msgstr "마이크"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:239
|
#: ../js/ui/telepathyClient.js:332
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is online."
|
msgid "%s is online."
|
||||||
msgstr "%s 연결 중."
|
msgstr "%s 연결 중."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:244
|
#: ../js/ui/telepathyClient.js:337
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is offline."
|
msgid "%s is offline."
|
||||||
msgstr "%s 연결 중지."
|
msgstr "%s 연결 중지."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:247
|
#: ../js/ui/telepathyClient.js:340
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is away."
|
msgid "%s is away."
|
||||||
msgstr "%s 다른 용무 중."
|
msgstr "%s 다른 용무 중."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:250
|
#: ../js/ui/telepathyClient.js:343
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is busy."
|
msgid "%s is busy."
|
||||||
msgstr "%s 부재중."
|
msgstr "%s 부재중."
|
||||||
@ -922,7 +1064,7 @@ msgstr "%s 부재중."
|
|||||||
#. Translators: this is a time format string followed by a date.
|
#. Translators: this is a time format string followed by a date.
|
||||||
#. If applicable, replace %X with a strftime format valid for your
|
#. If applicable, replace %X with a strftime format valid for your
|
||||||
#. locale, without seconds.
|
#. locale, without seconds.
|
||||||
#: ../js/ui/telepathyClient.js:348
|
#: ../js/ui/telepathyClient.js:474
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent at %X on %A"
|
msgid "Sent at %X on %A"
|
||||||
msgstr "보낸 때: %A %H시 %M분"
|
msgstr "보낸 때: %A %H시 %M분"
|
||||||
@ -931,11 +1073,11 @@ msgstr "보낸 때: %A %H시 %M분"
|
|||||||
#. in the search entry when no search is
|
#. in the search entry when no search is
|
||||||
#. active; it should not exceed ~30
|
#. active; it should not exceed ~30
|
||||||
#. characters.
|
#. characters.
|
||||||
#: ../js/ui/viewSelector.js:117
|
#: ../js/ui/viewSelector.js:122
|
||||||
msgid "Type to search..."
|
msgid "Type to search..."
|
||||||
msgstr "검색하려면 입력하십시오..."
|
msgstr "검색하려면 입력하십시오..."
|
||||||
|
|
||||||
#: ../js/ui/viewSelector.js:137 ../src/shell-util.c:250
|
#: ../js/ui/viewSelector.js:142 ../src/shell-util.c:250
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "검색"
|
msgstr "검색"
|
||||||
|
|
||||||
@ -951,7 +1093,7 @@ msgstr "'%s' 프로그램이 준비되었습니다"
|
|||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The number of sound outputs on a particular device
|
#. * The number of sound outputs on a particular device
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1094
|
#: ../src/gvc/gvc-mixer-control.c:1098
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%u Output"
|
msgid "%u Output"
|
||||||
msgid_plural "%u Outputs"
|
msgid_plural "%u Outputs"
|
||||||
@ -959,49 +1101,62 @@ msgstr[0] "%u개 출력"
|
|||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The number of sound inputs on a particular device
|
#. * The number of sound inputs on a particular device
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1104
|
#: ../src/gvc/gvc-mixer-control.c:1108
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%u Input"
|
msgid "%u Input"
|
||||||
msgid_plural "%u Inputs"
|
msgid_plural "%u Inputs"
|
||||||
msgstr[0] "%u개 입력"
|
msgstr[0] "%u개 입력"
|
||||||
|
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1402
|
#: ../src/gvc/gvc-mixer-control.c:1406
|
||||||
msgid "System Sounds"
|
msgid "System Sounds"
|
||||||
msgstr "시스템 소리"
|
msgstr "시스템 소리"
|
||||||
|
|
||||||
# 커맨드라인 옵션 설명
|
# 커맨드라인 옵션 설명
|
||||||
#: ../src/main.c:395
|
#: ../src/main.c:446
|
||||||
msgid "Print version"
|
msgid "Print version"
|
||||||
msgstr "버전을 표시합니다"
|
msgstr "버전을 표시합니다"
|
||||||
|
|
||||||
#: ../src/shell-global.c:1308
|
#: ../src/shell-app.c:454
|
||||||
|
#, c-format
|
||||||
|
msgid "Failed to launch '%s'"
|
||||||
|
msgstr "'%s' 실행에 실패했습니다"
|
||||||
|
|
||||||
|
#: ../src/shell-global.c:1395
|
||||||
msgid "Less than a minute ago"
|
msgid "Less than a minute ago"
|
||||||
msgstr "1분 이내"
|
msgstr "1분 이내"
|
||||||
|
|
||||||
#: ../src/shell-global.c:1312
|
#: ../src/shell-global.c:1399
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d minute ago"
|
msgid "%d minute ago"
|
||||||
msgid_plural "%d minutes ago"
|
msgid_plural "%d minutes ago"
|
||||||
msgstr[0] "%d분 전"
|
msgstr[0] "%d분 전"
|
||||||
|
|
||||||
#: ../src/shell-global.c:1317
|
#: ../src/shell-global.c:1404
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d hour ago"
|
msgid "%d hour ago"
|
||||||
msgid_plural "%d hours ago"
|
msgid_plural "%d hours ago"
|
||||||
msgstr[0] "%d시간 전"
|
msgstr[0] "%d시간 전"
|
||||||
|
|
||||||
#: ../src/shell-global.c:1322
|
#: ../src/shell-global.c:1409
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d day ago"
|
msgid "%d day ago"
|
||||||
msgid_plural "%d days ago"
|
msgid_plural "%d days ago"
|
||||||
msgstr[0] "%d일 전"
|
msgstr[0] "%d일 전"
|
||||||
|
|
||||||
#: ../src/shell-global.c:1327
|
#: ../src/shell-global.c:1414
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d week ago"
|
msgid "%d week ago"
|
||||||
msgid_plural "%d weeks ago"
|
msgid_plural "%d weeks ago"
|
||||||
msgstr[0] "%d주 전"
|
msgstr[0] "%d주 전"
|
||||||
|
|
||||||
|
#: ../src/shell-mobile-providers.c:80
|
||||||
|
msgid "United Kingdom"
|
||||||
|
msgstr "영국"
|
||||||
|
|
||||||
|
#: ../src/shell-mobile-providers.c:526
|
||||||
|
msgid "Default"
|
||||||
|
msgstr "기본값"
|
||||||
|
|
||||||
#: ../src/shell-polkit-authentication-agent.c:334
|
#: ../src/shell-polkit-authentication-agent.c:334
|
||||||
msgid "Authentication dialog was dismissed by the user"
|
msgid "Authentication dialog was dismissed by the user"
|
||||||
msgstr "인증 대화 창을 사용자가 닫았습니다"
|
msgstr "인증 대화 창을 사용자가 닫았습니다"
|
||||||
@ -1026,5 +1181,32 @@ msgstr "파일시스템"
|
|||||||
msgid "%1$s: %2$s"
|
msgid "%1$s: %2$s"
|
||||||
msgstr "%s: %s"
|
msgstr "%s: %s"
|
||||||
|
|
||||||
|
#~ msgid "Shut Down"
|
||||||
|
#~ msgstr "컴퓨터 끄기"
|
||||||
|
|
||||||
|
#~ msgid "Click Shut Down to quit these applications and shut down the system."
|
||||||
|
#~ msgstr "컴퓨터 끄기를 누르면 이 프로그램을 끝내고 시스템을 끕니다."
|
||||||
|
|
||||||
|
#~ msgid "The system will shut down automatically in %d seconds."
|
||||||
|
#~ msgstr "시스템이 %d초 뒤에 자동으로 꺼집니다."
|
||||||
|
|
||||||
|
#~ msgid "Shutting down the system."
|
||||||
|
#~ msgstr "시스템을 끕니다."
|
||||||
|
|
||||||
|
#~ msgid "Confirm"
|
||||||
|
#~ msgstr "확인"
|
||||||
|
|
||||||
|
#~ msgid "Panel"
|
||||||
|
#~ msgstr "패널"
|
||||||
|
|
||||||
|
#~ msgid "No such application"
|
||||||
|
#~ msgstr "그런 프로그램이 없습니다"
|
||||||
|
|
||||||
|
#~ msgid "Screen Reader"
|
||||||
|
#~ msgstr "화면 읽기"
|
||||||
|
|
||||||
|
#~ msgid "Screen Keyboard"
|
||||||
|
#~ msgstr "화면 키보드"
|
||||||
|
|
||||||
#~ msgid "PREFERENCES"
|
#~ msgid "PREFERENCES"
|
||||||
#~ msgstr "기본 설정"
|
#~ msgstr "기본 설정"
|
||||||
|
427
po/nb.po
427
po/nb.po
@ -4,12 +4,13 @@
|
|||||||
#
|
#
|
||||||
# Kjartan Maraas <kmaraas@gnome.org>, 2009-2011.
|
# Kjartan Maraas <kmaraas@gnome.org>, 2009-2011.
|
||||||
# Torstein Adolf Winterseth <kvikende@fsfe.org>, 2010.
|
# Torstein Adolf Winterseth <kvikende@fsfe.org>, 2010.
|
||||||
|
#: ../js/ui/polkitAuthenticationAgent.js:142
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gnome-shell 2.91.x\n"
|
"Project-Id-Version: gnome-shell 2.91.x\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2011-03-08 15:24+0100\n"
|
"POT-Creation-Date: 2011-03-23 21:46+0100\n"
|
||||||
"PO-Revision-Date: 2011-03-08 15:29+0100\n"
|
"PO-Revision-Date: 2011-03-23 21:47+0100\n"
|
||||||
"Last-Translator: Kjartan Maraas <kmaraas@gnome.org>\n"
|
"Last-Translator: Kjartan Maraas <kmaraas@gnome.org>\n"
|
||||||
"Language-Team: Norwegian Bokmål <i18n-nb@lister.ping.uio.no>\n"
|
"Language-Team: Norwegian Bokmål <i18n-nb@lister.ping.uio.no>\n"
|
||||||
"Language: \n"
|
"Language: \n"
|
||||||
@ -145,49 +146,45 @@ msgstr "Om det skal samles statistikk om bruk av programmer"
|
|||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:24
|
#: ../data/org.gnome.shell.gschema.xml.in.h:24
|
||||||
msgid "disabled OpenSearch providers"
|
msgid "disabled OpenSearch providers"
|
||||||
msgstr ""
|
msgstr "OpenSearch tilbydere slått av"
|
||||||
|
|
||||||
#: ../js/misc/util.js:86
|
#: ../js/misc/util.js:71
|
||||||
msgid "Command not found"
|
msgid "Command not found"
|
||||||
msgstr "Kommando ikke funnet"
|
msgstr "Kommando ikke funnet"
|
||||||
|
|
||||||
#. Replace "Error invoking GLib.shell_parse_argv: " with
|
#. Replace "Error invoking GLib.shell_parse_argv: " with
|
||||||
#. something nicer
|
#. something nicer
|
||||||
#: ../js/misc/util.js:113
|
#: ../js/misc/util.js:98
|
||||||
msgid "Could not parse command:"
|
msgid "Could not parse command:"
|
||||||
msgstr "Klarte ikke å lese kommando:"
|
msgstr "Klarte ikke å lese kommando:"
|
||||||
|
|
||||||
#: ../js/misc/util.js:135
|
#: ../js/misc/util.js:106
|
||||||
msgid "No such application"
|
|
||||||
msgstr "Programmet finnes ikke"
|
|
||||||
|
|
||||||
#: ../js/misc/util.js:148
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Execution of '%s' failed:"
|
msgid "Execution of '%s' failed:"
|
||||||
msgstr "Kjøring av «%s» feilet:"
|
msgstr "Kjøring av «%s» feilet:"
|
||||||
|
|
||||||
#. Translators: Filter to display all applications
|
#. Translators: Filter to display all applications
|
||||||
#: ../js/ui/appDisplay.js:226
|
#: ../js/ui/appDisplay.js:230
|
||||||
msgid "All"
|
msgid "All"
|
||||||
msgstr "Alle"
|
msgstr "Alle"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:324
|
#: ../js/ui/appDisplay.js:328
|
||||||
msgid "APPLICATIONS"
|
msgid "APPLICATIONS"
|
||||||
msgstr "PROGRAMMER"
|
msgstr "PROGRAMMER"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:350
|
#: ../js/ui/appDisplay.js:354
|
||||||
msgid "SETTINGS"
|
msgid "SETTINGS"
|
||||||
msgstr "INNSTILLINGER"
|
msgstr "INNSTILLINGER"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:612
|
#: ../js/ui/appDisplay.js:625
|
||||||
msgid "New Window"
|
msgid "New Window"
|
||||||
msgstr "Nytt vindu"
|
msgstr "Nytt vindu"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:615
|
#: ../js/ui/appDisplay.js:628
|
||||||
msgid "Remove from Favorites"
|
msgid "Remove from Favorites"
|
||||||
msgstr "Fjern fra favoritter"
|
msgstr "Fjern fra favoritter"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:616
|
#: ../js/ui/appDisplay.js:629
|
||||||
msgid "Add to Favorites"
|
msgid "Add to Favorites"
|
||||||
msgstr "Legg til i favoritter"
|
msgstr "Legg til i favoritter"
|
||||||
|
|
||||||
@ -347,7 +344,7 @@ msgstr "Denne uken"
|
|||||||
msgid "Next week"
|
msgid "Next week"
|
||||||
msgstr "Neste uke"
|
msgstr "Neste uke"
|
||||||
|
|
||||||
#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:933
|
#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:994
|
||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "Fjern"
|
msgstr "Fjern"
|
||||||
|
|
||||||
@ -402,7 +399,7 @@ msgstr "%a %l.%M %p"
|
|||||||
#. Translators: This is the date format to use when the calendar popup is
|
#. 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").
|
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
|
||||||
#.
|
#.
|
||||||
#: ../js/ui/dateMenu.js:209
|
#: ../js/ui/dateMenu.js:194
|
||||||
msgid "%A %B %e, %Y"
|
msgid "%A %B %e, %Y"
|
||||||
msgstr "%a %e %B, %Y"
|
msgstr "%a %e %B, %Y"
|
||||||
|
|
||||||
@ -415,7 +412,7 @@ msgstr "SISTE OPPFØRINGER"
|
|||||||
msgid "Log Out %s"
|
msgid "Log Out %s"
|
||||||
msgstr "Logg ut %s"
|
msgstr "Logg ut %s"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:69
|
#: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:70
|
||||||
msgid "Log Out"
|
msgid "Log Out"
|
||||||
msgstr "Logg ut"
|
msgstr "Logg ut"
|
||||||
|
|
||||||
@ -438,47 +435,46 @@ msgstr "Du vil bli logget ut automatisk om %d sekunder."
|
|||||||
msgid "Logging out of the system."
|
msgid "Logging out of the system."
|
||||||
msgstr "Logger ut av systemet"
|
msgstr "Logger ut av systemet"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:74 ../js/ui/endSessionDialog.js:78
|
#: ../js/ui/endSessionDialog.js:75 ../js/ui/endSessionDialog.js:82
|
||||||
msgid "Shut Down"
|
msgid "Power Off"
|
||||||
msgstr "Avslutt"
|
msgstr "Slå av"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:75
|
|
||||||
msgid "Click Shut Down to quit these applications and shut down the system."
|
|
||||||
msgstr "Klikk Avslutt for å avslutte disse programmene og stenge ned systemet."
|
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:76
|
#: ../js/ui/endSessionDialog.js:76
|
||||||
#, c-format
|
msgid "Click Power Off to quit these applications and power off the system."
|
||||||
msgid "The system will shut down automatically in %d seconds."
|
msgstr ""
|
||||||
msgstr "Systemet vil slås av automatisk om %d sekunder."
|
"Klikk «Slå av» for å avslutte disse programmene og logge ut av systemet."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:77
|
#: ../js/ui/endSessionDialog.js:77
|
||||||
msgid "Shutting down the system."
|
#, c-format
|
||||||
|
msgid "The system will power off automatically in %d seconds."
|
||||||
|
msgstr "Systemet vil slås av automatisk om %d sekunder."
|
||||||
|
|
||||||
|
#: ../js/ui/endSessionDialog.js:78
|
||||||
|
msgid "Powering off the system."
|
||||||
msgstr "Slår av systemet."
|
msgstr "Slår av systemet."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:84 ../js/ui/endSessionDialog.js:88
|
#: ../js/ui/endSessionDialog.js:80 ../js/ui/endSessionDialog.js:88
|
||||||
|
#: ../js/ui/endSessionDialog.js:93
|
||||||
msgid "Restart"
|
msgid "Restart"
|
||||||
msgstr "Start på nytt"
|
msgstr "Start på nytt"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:85
|
#: ../js/ui/endSessionDialog.js:89
|
||||||
msgid "Click Restart to quit these applications and restart the system."
|
msgid "Click Restart to quit these applications and restart the system."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Klikk Start på nytt for å avslutte disse programmene og starte systemet på "
|
"Klikk Start på nytt for å avslutte disse programmene og starte systemet på "
|
||||||
"nytt."
|
"nytt."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:86
|
#: ../js/ui/endSessionDialog.js:90
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "The system will restart automatically in %d seconds."
|
msgid "The system will restart automatically in %d seconds."
|
||||||
msgstr "Systemet vil starte på nytt automatisk om %d sekunder."
|
msgstr "Systemet vil starte på nytt automatisk om %d sekunder."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:87
|
#: ../js/ui/endSessionDialog.js:91
|
||||||
msgid "Restarting the system."
|
msgid "Restarting the system."
|
||||||
msgstr "Starter systemet på nytt."
|
msgstr "Starter systemet på nytt."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:395
|
#: ../js/ui/endSessionDialog.js:415 ../js/ui/polkitAuthenticationAgent.js:172
|
||||||
msgid "Confirm"
|
#: ../js/ui/status/bluetooth.js:466
|
||||||
msgstr "Bekreft"
|
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:400 ../js/ui/status/bluetooth.js:470
|
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Avbryt"
|
msgstr "Avbryt"
|
||||||
|
|
||||||
@ -492,7 +488,7 @@ msgstr "Aktivert"
|
|||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The device has been disabled
|
#. * The device has been disabled
|
||||||
#: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1087
|
#: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1091
|
||||||
msgid "Disabled"
|
msgid "Disabled"
|
||||||
msgstr "Deaktivert"
|
msgstr "Deaktivert"
|
||||||
|
|
||||||
@ -512,47 +508,47 @@ msgstr "Vis kildekode"
|
|||||||
msgid "Web Page"
|
msgid "Web Page"
|
||||||
msgstr "Nettside"
|
msgstr "Nettside"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:926
|
#: ../js/ui/messageTray.js:987
|
||||||
msgid "Open"
|
msgid "Open"
|
||||||
msgstr "Åpne"
|
msgstr "Åpne"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1963
|
#: ../js/ui/messageTray.js:2145
|
||||||
msgid "System Information"
|
msgid "System Information"
|
||||||
msgstr "Systeminformasjon"
|
msgstr "Systeminformasjon"
|
||||||
|
|
||||||
#: ../js/ui/overview.js:88
|
#: ../js/ui/overview.js:91
|
||||||
msgid "Undo"
|
msgid "Undo"
|
||||||
msgstr "Angre"
|
msgstr "Angre"
|
||||||
|
|
||||||
#: ../js/ui/overview.js:183
|
#: ../js/ui/overview.js:186
|
||||||
msgid "Windows"
|
msgid "Windows"
|
||||||
msgstr "Vinduer"
|
msgstr "Vinduer"
|
||||||
|
|
||||||
#: ../js/ui/overview.js:186
|
#: ../js/ui/overview.js:189
|
||||||
msgid "Applications"
|
msgid "Applications"
|
||||||
msgstr "Programmer"
|
msgstr "Programmer"
|
||||||
|
|
||||||
#. Translators: this is the name of the dock/favorites area on
|
#. Translators: this is the name of the dock/favorites area on
|
||||||
#. the left of the overview
|
#. the left of the overview
|
||||||
#: ../js/ui/overview.js:202
|
#: ../js/ui/overview.js:205
|
||||||
msgid "Dash"
|
msgid "Dash"
|
||||||
msgstr "Favoritter"
|
msgstr "Favoritter"
|
||||||
|
|
||||||
#. TODO - _quit() doesn't really work on apps in state STARTING yet
|
#. TODO - _quit() doesn't really work on apps in state STARTING yet
|
||||||
#: ../js/ui/panel.js:532
|
#: ../js/ui/panel.js:515
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Quit %s"
|
msgid "Quit %s"
|
||||||
msgstr "Avslutt %s"
|
msgstr "Avslutt %s"
|
||||||
|
|
||||||
#. Button on the left side of the panel.
|
#. Button on the left side of the panel.
|
||||||
#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
|
#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
|
||||||
#: ../js/ui/panel.js:893
|
#: ../js/ui/panel.js:878
|
||||||
msgid "Activities"
|
msgid "Activities"
|
||||||
msgstr "Aktiviteter"
|
msgstr "Aktiviteter"
|
||||||
|
|
||||||
#: ../js/ui/panel.js:994
|
#: ../js/ui/panel.js:979
|
||||||
msgid "Panel"
|
msgid "Top Bar"
|
||||||
msgstr "Panel"
|
msgstr "Topp-panel"
|
||||||
|
|
||||||
#: ../js/ui/placeDisplay.js:122
|
#: ../js/ui/placeDisplay.js:122
|
||||||
#, c-format
|
#, c-format
|
||||||
@ -567,64 +563,84 @@ msgstr "Prøv igjen"
|
|||||||
msgid "Connect to..."
|
msgid "Connect to..."
|
||||||
msgstr "Koble til …"
|
msgstr "Koble til …"
|
||||||
|
|
||||||
#: ../js/ui/placeDisplay.js:409
|
#: ../js/ui/placeDisplay.js:380
|
||||||
msgid "PLACES & DEVICES"
|
msgid "PLACES & DEVICES"
|
||||||
msgstr "STEDER & ENHETER"
|
msgstr "STEDER & ENHETER"
|
||||||
|
|
||||||
|
#: ../js/ui/polkitAuthenticationAgent.js:74
|
||||||
|
msgid "Authentication Required"
|
||||||
|
msgstr "Autentisering kreves"
|
||||||
|
|
||||||
|
#: ../js/ui/polkitAuthenticationAgent.js:108
|
||||||
|
msgid "Administrator"
|
||||||
|
msgstr "Administrator"
|
||||||
|
|
||||||
|
#: ../js/ui/polkitAuthenticationAgent.js:176
|
||||||
|
msgid "Authenticate"
|
||||||
|
msgstr "Autentiser"
|
||||||
|
|
||||||
|
#: ../js/ui/polkitAuthenticationAgent.js:260
|
||||||
|
msgid "Sorry, that didn't work. Please try again."
|
||||||
|
msgstr "Beklager, det virket ikke. Vennligst prøv igjen."
|
||||||
|
|
||||||
|
#: ../js/ui/polkitAuthenticationAgent.js:272
|
||||||
|
msgid "Password:"
|
||||||
|
msgstr "Passord:"
|
||||||
|
|
||||||
#. Translators: this MUST be either "toggle-switch-us"
|
#. Translators: this MUST be either "toggle-switch-us"
|
||||||
#. (for toggle switches containing the English words
|
#. (for toggle switches containing the English words
|
||||||
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
||||||
#. switches containing "◯" and "|"). Other values will
|
#. switches containing "◯" and "|"). Other values will
|
||||||
#. simply result in invisible toggle switches.
|
#. simply result in invisible toggle switches.
|
||||||
#: ../js/ui/popupMenu.js:618
|
#: ../js/ui/popupMenu.js:679
|
||||||
msgid "toggle-switch-us"
|
msgid "toggle-switch-us"
|
||||||
msgstr "toggle-switch-intl"
|
msgstr "toggle-switch-intl"
|
||||||
|
|
||||||
#: ../js/ui/runDialog.js:201
|
#: ../js/ui/runDialog.js:205
|
||||||
msgid "Please enter a command:"
|
msgid "Please enter a command:"
|
||||||
msgstr "Oppgi en kommando:"
|
msgstr "Oppgi en kommando:"
|
||||||
|
|
||||||
#: ../js/ui/searchDisplay.js:283
|
#: ../js/ui/searchDisplay.js:310
|
||||||
msgid "Searching..."
|
msgid "Searching..."
|
||||||
msgstr "Søker …"
|
msgstr "Søker …"
|
||||||
|
|
||||||
#: ../js/ui/searchDisplay.js:297
|
#: ../js/ui/searchDisplay.js:324
|
||||||
msgid "No matching results."
|
msgid "No matching results."
|
||||||
msgstr "Ingen treff."
|
msgstr "Ingen treff."
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:102 ../js/ui/statusMenu.js:166
|
#: ../js/ui/statusMenu.js:161 ../js/ui/statusMenu.js:228
|
||||||
msgid "Power Off..."
|
msgid "Power Off..."
|
||||||
msgstr "Slå av …"
|
msgstr "Slå av …"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:104 ../js/ui/statusMenu.js:165
|
#: ../js/ui/statusMenu.js:163 ../js/ui/statusMenu.js:227
|
||||||
msgid "Suspend"
|
msgid "Suspend"
|
||||||
msgstr "Hvilemodus"
|
msgstr "Hvilemodus"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:125
|
#: ../js/ui/statusMenu.js:184
|
||||||
msgid "Available"
|
msgid "Available"
|
||||||
msgstr "Tilgjengelig"
|
msgstr "Tilgjengelig"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:130
|
#: ../js/ui/statusMenu.js:189
|
||||||
msgid "Busy"
|
msgid "Busy"
|
||||||
msgstr "Opptatt"
|
msgstr "Opptatt"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:138
|
#: ../js/ui/statusMenu.js:197
|
||||||
msgid "My Account"
|
msgid "My Account"
|
||||||
msgstr "Min konto"
|
msgstr "Min konto"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:142
|
#: ../js/ui/statusMenu.js:201
|
||||||
msgid "System Settings"
|
msgid "System Settings"
|
||||||
msgstr "Systeminnstillinger"
|
msgstr "Systeminnstillinger"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:149
|
#: ../js/ui/statusMenu.js:208
|
||||||
msgid "Lock Screen"
|
msgid "Lock Screen"
|
||||||
msgstr "Lås skjerm"
|
msgstr "Lås skjerm"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:153
|
#: ../js/ui/statusMenu.js:213
|
||||||
msgid "Switch User"
|
msgid "Switch User"
|
||||||
msgstr "Bytt bruker"
|
msgstr "Bytt bruker"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:158
|
#: ../js/ui/statusMenu.js:218
|
||||||
msgid "Log Out..."
|
msgid "Log Out..."
|
||||||
msgstr "Logg ut …"
|
msgstr "Logg ut …"
|
||||||
|
|
||||||
@ -632,14 +648,12 @@ msgstr "Logg ut …"
|
|||||||
msgid "Zoom"
|
msgid "Zoom"
|
||||||
msgstr "Zoom"
|
msgstr "Zoom"
|
||||||
|
|
||||||
#: ../js/ui/status/accessibility.js:69
|
#. let screenReader = this._buildItem(_("Screen Reader"), APPLICATIONS_SCHEMA,
|
||||||
msgid "Screen Reader"
|
#. 'screen-reader-enabled');
|
||||||
msgstr "Skjermleser"
|
#. this.menu.addMenuItem(screenReader);
|
||||||
|
#. let screenKeyboard = this._buildItem(_("Screen Keyboard"), APPLICATIONS_SCHEMA,
|
||||||
#: ../js/ui/status/accessibility.js:73
|
#. 'screen-keyboard-enabled');
|
||||||
msgid "Screen Keyboard"
|
#. this.menu.addMenuItem(screenKeyboard);
|
||||||
msgstr "Tastatur på skjermen"
|
|
||||||
|
|
||||||
#: ../js/ui/status/accessibility.js:77
|
#: ../js/ui/status/accessibility.js:77
|
||||||
msgid "Visual Alerts"
|
msgid "Visual Alerts"
|
||||||
msgstr "Synlig varsling"
|
msgstr "Synlig varsling"
|
||||||
@ -664,17 +678,17 @@ msgstr "Mustaster"
|
|||||||
msgid "Universal Access Settings"
|
msgid "Universal Access Settings"
|
||||||
msgstr "Innstillinger for tilgjengelighet"
|
msgstr "Innstillinger for tilgjengelighet"
|
||||||
|
|
||||||
#: ../js/ui/status/accessibility.js:145
|
#: ../js/ui/status/accessibility.js:146
|
||||||
msgid "High Contrast"
|
msgid "High Contrast"
|
||||||
msgstr "Høy kontrast"
|
msgstr "Høy kontrast"
|
||||||
|
|
||||||
#: ../js/ui/status/accessibility.js:182
|
#: ../js/ui/status/accessibility.js:183
|
||||||
msgid "Large Text"
|
msgid "Large Text"
|
||||||
msgstr "Stor tekst"
|
msgstr "Stor tekst"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:241
|
#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:237
|
||||||
#: ../js/ui/status/bluetooth.js:337 ../js/ui/status/bluetooth.js:371
|
#: ../js/ui/status/bluetooth.js:333 ../js/ui/status/bluetooth.js:367
|
||||||
#: ../js/ui/status/bluetooth.js:411 ../js/ui/status/bluetooth.js:444
|
#: ../js/ui/status/bluetooth.js:407 ../js/ui/status/bluetooth.js:440
|
||||||
msgid "Bluetooth"
|
msgid "Bluetooth"
|
||||||
msgstr "Bluetooth"
|
msgstr "Bluetooth"
|
||||||
|
|
||||||
@ -694,94 +708,94 @@ msgstr "Sett opp en ny enhet …"
|
|||||||
msgid "Bluetooth Settings"
|
msgid "Bluetooth Settings"
|
||||||
msgstr "Innstillinger for Bluetooth"
|
msgstr "Innstillinger for Bluetooth"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:192
|
#: ../js/ui/status/bluetooth.js:188
|
||||||
msgid "Connection"
|
msgid "Connection"
|
||||||
msgstr "Tilkobling"
|
msgstr "Tilkobling"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:228
|
#: ../js/ui/status/bluetooth.js:224
|
||||||
msgid "Send Files..."
|
msgid "Send Files..."
|
||||||
msgstr "Send filer …"
|
msgstr "Send filer …"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:233
|
#: ../js/ui/status/bluetooth.js:229
|
||||||
msgid "Browse Files..."
|
msgid "Browse Files..."
|
||||||
msgstr "Bla gjennom filer …"
|
msgstr "Bla gjennom filer …"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:242
|
#: ../js/ui/status/bluetooth.js:238
|
||||||
msgid "Error browsing device"
|
msgid "Error browsing device"
|
||||||
msgstr "Feil under lesing av enhet"
|
msgstr "Feil under lesing av enhet"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:243
|
#: ../js/ui/status/bluetooth.js:239
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "The requested device cannot be browsed, error is '%s'"
|
msgid "The requested device cannot be browsed, error is '%s'"
|
||||||
msgstr "Kan ikke bla gjennom forespurt enhet. Feilen er «%s»"
|
msgstr "Kan ikke bla gjennom forespurt enhet. Feilen er «%s»"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:251
|
#: ../js/ui/status/bluetooth.js:247
|
||||||
msgid "Keyboard Settings"
|
msgid "Keyboard Settings"
|
||||||
msgstr "Innstillinger for tastatur"
|
msgstr "Innstillinger for tastatur"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:256
|
#: ../js/ui/status/bluetooth.js:252
|
||||||
msgid "Mouse Settings"
|
msgid "Mouse Settings"
|
||||||
msgstr "Innstillinger for mus"
|
msgstr "Innstillinger for mus"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:263 ../js/ui/status/volume.js:65
|
#: ../js/ui/status/bluetooth.js:259 ../js/ui/status/volume.js:66
|
||||||
msgid "Sound Settings"
|
msgid "Sound Settings"
|
||||||
msgstr "Innstillinger for lyd"
|
msgstr "Innstillinger for lyd"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:372
|
#: ../js/ui/status/bluetooth.js:368
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Authorization request from %s"
|
msgid "Authorization request from %s"
|
||||||
msgstr "Forespørsel om autorisering fra %s"
|
msgstr "Forespørsel om autorisering fra %s"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:378
|
#: ../js/ui/status/bluetooth.js:374
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Device %s wants access to the service '%s'"
|
msgid "Device %s wants access to the service '%s'"
|
||||||
msgstr "Enhet %s vil ha tilgang til tjenesten «%s»"
|
msgstr "Enhet %s vil ha tilgang til tjenesten «%s»"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:380
|
#: ../js/ui/status/bluetooth.js:376
|
||||||
msgid "Always grant access"
|
msgid "Always grant access"
|
||||||
msgstr "Alltid gi tilgang"
|
msgstr "Alltid gi tilgang"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:381
|
#: ../js/ui/status/bluetooth.js:377
|
||||||
msgid "Grant this time only"
|
msgid "Grant this time only"
|
||||||
msgstr "Gi tilgang kun denne ene gangen"
|
msgstr "Gi tilgang kun denne ene gangen"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:382
|
#: ../js/ui/status/bluetooth.js:378
|
||||||
msgid "Reject"
|
msgid "Reject"
|
||||||
msgstr "Avvis"
|
msgstr "Avvis"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:412
|
#: ../js/ui/status/bluetooth.js:408
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Pairing confirmation for %s"
|
msgid "Pairing confirmation for %s"
|
||||||
msgstr "Bekreftelse for tilkobling for %s"
|
msgstr "Bekreftelse for tilkobling for %s"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:418 ../js/ui/status/bluetooth.js:452
|
#: ../js/ui/status/bluetooth.js:414 ../js/ui/status/bluetooth.js:448
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Device %s wants to pair with this computer"
|
msgid "Device %s wants to pair with this computer"
|
||||||
msgstr "Enhet %s vil koble seg sammen med denne datamaskinen"
|
msgstr "Enhet %s vil koble seg sammen med denne datamaskinen"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:419
|
#: ../js/ui/status/bluetooth.js:415
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Please confirm whether the PIN '%s' matches the one on the device."
|
msgid "Please confirm whether the PIN '%s' matches the one on the device."
|
||||||
msgstr "Vennligst bekreft om PIN «%s» er lik den som brukes på enheten."
|
msgstr "Vennligst bekreft om PIN «%s» er lik den som brukes på enheten."
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:421
|
#: ../js/ui/status/bluetooth.js:417
|
||||||
msgid "Matches"
|
msgid "Matches"
|
||||||
msgstr "Stemmer overens"
|
msgstr "Stemmer overens"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:422
|
#: ../js/ui/status/bluetooth.js:418
|
||||||
msgid "Does not match"
|
msgid "Does not match"
|
||||||
msgstr "Stemmer ikke overens"
|
msgstr "Stemmer ikke overens"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:445
|
#: ../js/ui/status/bluetooth.js:441
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Pairing request for %s"
|
msgid "Pairing request for %s"
|
||||||
msgstr "Forespørsel om tilkobling for %s"
|
msgstr "Forespørsel om tilkobling for %s"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:453
|
#: ../js/ui/status/bluetooth.js:449
|
||||||
msgid "Please enter the PIN mentioned on the device."
|
msgid "Please enter the PIN mentioned on the device."
|
||||||
msgstr "Vennligst oppgi PIN som oppgitt på enheten."
|
msgstr "Vennligst oppgi PIN som oppgitt på enheten."
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:469
|
#: ../js/ui/status/bluetooth.js:465
|
||||||
msgid "OK"
|
msgid "OK"
|
||||||
msgstr "OK"
|
msgstr "OK"
|
||||||
|
|
||||||
@ -793,17 +807,147 @@ msgstr "Vis tastaturutforming …"
|
|||||||
msgid "Localization Settings"
|
msgid "Localization Settings"
|
||||||
msgstr "Innstillinger for lokalisering"
|
msgstr "Innstillinger for lokalisering"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:102 ../js/ui/status/network.js:1393
|
||||||
|
msgid "<unknown>"
|
||||||
|
msgstr "<ukjent>"
|
||||||
|
|
||||||
|
#. Translators: this indicates that wireless or wwan is disabled by hardware killswitch
|
||||||
|
#: ../js/ui/status/network.js:295
|
||||||
|
msgid "disabled"
|
||||||
|
msgstr "slått av"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:476
|
||||||
|
msgid "connecting..."
|
||||||
|
msgstr "kobler til …"
|
||||||
|
|
||||||
|
#. Translators: this is for network connections that require some kind of key or password
|
||||||
|
#: ../js/ui/status/network.js:479
|
||||||
|
msgid "authentication required"
|
||||||
|
msgstr "autentisering kreves"
|
||||||
|
|
||||||
|
#. Translators: this is for wired network devices that are physically disconnected
|
||||||
|
#: ../js/ui/status/network.js:485
|
||||||
|
msgid "cable unplugged"
|
||||||
|
msgstr "kabel koblet fra"
|
||||||
|
|
||||||
|
#. Translators: this is for a network device that cannot be activated (for example it
|
||||||
|
#. is disabled by rfkill, or it has no coverage
|
||||||
|
#: ../js/ui/status/network.js:489
|
||||||
|
msgid "unavailable"
|
||||||
|
msgstr "ikke tilgjengelig"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:491
|
||||||
|
msgid "connection failed"
|
||||||
|
msgstr "tilkobling feilet"
|
||||||
|
|
||||||
|
#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
|
||||||
|
#. and we cannot access its settings (including the name)
|
||||||
|
#: ../js/ui/status/network.js:571 ../js/ui/status/network.js:1341
|
||||||
|
msgid "Connected (private)"
|
||||||
|
msgstr "Tilkoblet (privat)"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:636
|
||||||
|
msgid "Auto Ethernet"
|
||||||
|
msgstr "Automatisk Ethernet"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:697
|
||||||
|
msgid "Auto broadband"
|
||||||
|
msgstr "Automatisk bredbånd"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:700
|
||||||
|
msgid "Auto dial-up"
|
||||||
|
msgstr "Automatisk oppringt"
|
||||||
|
|
||||||
|
#. TRANSLATORS: this the automatic wireless connection name (including the network name)
|
||||||
|
#: ../js/ui/status/network.js:843 ../js/ui/status/network.js:1353
|
||||||
|
#, c-format
|
||||||
|
msgid "Auto %s"
|
||||||
|
msgstr "Automatisk %s"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:845
|
||||||
|
msgid "Auto bluetooth"
|
||||||
|
msgstr "Automatisk Bluetooth"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1355
|
||||||
|
msgid "Auto wireless"
|
||||||
|
msgstr "Automatisk trådløst"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1413
|
||||||
|
msgid "More..."
|
||||||
|
msgstr "Mer …"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1436
|
||||||
|
msgid "Enable networking"
|
||||||
|
msgstr "Slå på nettverk"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1448
|
||||||
|
msgid "Wired"
|
||||||
|
msgstr "Kablet"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1459
|
||||||
|
msgid "Wireless"
|
||||||
|
msgstr "Trådløst"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1469
|
||||||
|
msgid "Mobile broadband"
|
||||||
|
msgstr "Mobilt bredbånd"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1479
|
||||||
|
msgid "VPN Connections"
|
||||||
|
msgstr "VPN-tilkoblinger"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1488
|
||||||
|
msgid "Network Settings"
|
||||||
|
msgstr "Innstillinger for nettverk"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1783
|
||||||
|
#, c-format
|
||||||
|
msgid "You're now connected to mobile broadband connection '%s'"
|
||||||
|
msgstr "Du er nå koblet til mobil bredbåndstilkobling «%s»"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1787
|
||||||
|
#, c-format
|
||||||
|
msgid "You're now connected to wireless network '%s'"
|
||||||
|
msgstr "Du er nå koblet til trådløst nettverk «%s»"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1791
|
||||||
|
#, c-format
|
||||||
|
msgid "You're now connected to wired network '%s'"
|
||||||
|
msgstr "Du er nå koblet til kablet nettverk «%s»"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1795
|
||||||
|
#, c-format
|
||||||
|
msgid "You're now connected to VPN network '%s'"
|
||||||
|
msgstr "Du er nå koblet til virtuelt privat nettverk «%s»"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1800
|
||||||
|
#, c-format
|
||||||
|
msgid "You're now connected to '%s'"
|
||||||
|
msgstr "Du er nå koblet til «%s»"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1808
|
||||||
|
msgid "Connection established"
|
||||||
|
msgstr "Tilkobling etablert"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1930
|
||||||
|
msgid "Networking is disabled"
|
||||||
|
msgstr "Nettverk er slått av"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:2055
|
||||||
|
msgid "Network Manager"
|
||||||
|
msgstr "Nettverkshåndtering"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:85
|
#: ../js/ui/status/power.js:85
|
||||||
msgid "Power Settings"
|
msgid "Power Settings"
|
||||||
msgstr "Innstillinger for strøm"
|
msgstr "Innstillinger for strøm"
|
||||||
|
|
||||||
#. 0 is reported when UPower does not have enough data
|
#. 0 is reported when UPower does not have enough data
|
||||||
#. to estimate battery life
|
#. to estimate battery life
|
||||||
#: ../js/ui/status/power.js:110
|
#: ../js/ui/status/power.js:111
|
||||||
msgid "Estimating..."
|
msgid "Estimating..."
|
||||||
msgstr "Estimerer …"
|
msgstr "Estimerer …"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:117
|
#: ../js/ui/status/power.js:118
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d hour remaining"
|
msgid "%d hour remaining"
|
||||||
msgid_plural "%d hours remaining"
|
msgid_plural "%d hours remaining"
|
||||||
@ -811,102 +955,102 @@ msgstr[0] "%d time gjenstår"
|
|||||||
msgstr[1] "%d timer gjenstår"
|
msgstr[1] "%d timer gjenstår"
|
||||||
|
|
||||||
#. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining"
|
#. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining"
|
||||||
#: ../js/ui/status/power.js:120
|
#: ../js/ui/status/power.js:121
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d %s %d %s remaining"
|
msgid "%d %s %d %s remaining"
|
||||||
msgstr "%d %s %d %s gjenstår"
|
msgstr "%d %s %d %s gjenstår"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:122
|
#: ../js/ui/status/power.js:123
|
||||||
msgid "hour"
|
msgid "hour"
|
||||||
msgid_plural "hours"
|
msgid_plural "hours"
|
||||||
msgstr[0] "time"
|
msgstr[0] "time"
|
||||||
msgstr[1] "timer"
|
msgstr[1] "timer"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:122
|
#: ../js/ui/status/power.js:123
|
||||||
msgid "minute"
|
msgid "minute"
|
||||||
msgid_plural "minutes"
|
msgid_plural "minutes"
|
||||||
msgstr[0] "minutt"
|
msgstr[0] "minutt"
|
||||||
msgstr[1] "minutter"
|
msgstr[1] "minutter"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:125
|
#: ../js/ui/status/power.js:126
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d minute remaining"
|
msgid "%d minute remaining"
|
||||||
msgid_plural "%d minutes remaining"
|
msgid_plural "%d minutes remaining"
|
||||||
msgstr[0] "%d minutt gjenstår"
|
msgstr[0] "%d minutt gjenstår"
|
||||||
msgstr[1] "%d minutter gjenstår"
|
msgstr[1] "%d minutter gjenstår"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:227
|
#: ../js/ui/status/power.js:228
|
||||||
msgid "AC adapter"
|
msgid "AC adapter"
|
||||||
msgstr "Strømadapter"
|
msgstr "Strømadapter"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:229
|
#: ../js/ui/status/power.js:230
|
||||||
msgid "Laptop battery"
|
msgid "Laptop battery"
|
||||||
msgstr "Batteri på bærbar"
|
msgstr "Batteri på bærbar"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:231
|
#: ../js/ui/status/power.js:232
|
||||||
msgid "UPS"
|
msgid "UPS"
|
||||||
msgstr "UPS"
|
msgstr "UPS"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:233
|
#: ../js/ui/status/power.js:234
|
||||||
msgid "Monitor"
|
msgid "Monitor"
|
||||||
msgstr "Skjerm"
|
msgstr "Skjerm"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:235
|
#: ../js/ui/status/power.js:236
|
||||||
msgid "Mouse"
|
msgid "Mouse"
|
||||||
msgstr "Mus"
|
msgstr "Mus"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:237
|
#: ../js/ui/status/power.js:238
|
||||||
msgid "Keyboard"
|
msgid "Keyboard"
|
||||||
msgstr "Tastatur"
|
msgstr "Tastatur"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:239
|
#: ../js/ui/status/power.js:240
|
||||||
msgid "PDA"
|
msgid "PDA"
|
||||||
msgstr "PDA"
|
msgstr "PDA"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:241
|
#: ../js/ui/status/power.js:242
|
||||||
msgid "Cell phone"
|
msgid "Cell phone"
|
||||||
msgstr "Mobiltelefon"
|
msgstr "Mobiltelefon"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:243
|
#: ../js/ui/status/power.js:244
|
||||||
msgid "Media player"
|
msgid "Media player"
|
||||||
msgstr "Medieavspiller"
|
msgstr "Medieavspiller"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:245
|
#: ../js/ui/status/power.js:246
|
||||||
msgid "Tablet"
|
msgid "Tablet"
|
||||||
msgstr "Nettbrett"
|
msgstr "Nettbrett"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:247
|
#: ../js/ui/status/power.js:248
|
||||||
msgid "Computer"
|
msgid "Computer"
|
||||||
msgstr "Datamaskin"
|
msgstr "Datamaskin"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:249 ../src/shell-app-system.c:1013
|
#: ../js/ui/status/power.js:250 ../src/shell-app-system.c:1088
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "Ukjent"
|
msgstr "Ukjent"
|
||||||
|
|
||||||
#: ../js/ui/status/volume.js:44
|
#: ../js/ui/status/volume.js:45
|
||||||
msgid "Volume"
|
msgid "Volume"
|
||||||
msgstr "Volum"
|
msgstr "Volum"
|
||||||
|
|
||||||
#: ../js/ui/status/volume.js:57
|
#: ../js/ui/status/volume.js:58
|
||||||
msgid "Microphone"
|
msgid "Microphone"
|
||||||
msgstr "Mikrofon"
|
msgstr "Mikrofon"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:239
|
#: ../js/ui/telepathyClient.js:332
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is online."
|
msgid "%s is online."
|
||||||
msgstr "%s er tilkoblet."
|
msgstr "%s er tilkoblet."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:244
|
#: ../js/ui/telepathyClient.js:337
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is offline."
|
msgid "%s is offline."
|
||||||
msgstr "%s er frakoblet."
|
msgstr "%s er frakoblet."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:247
|
#: ../js/ui/telepathyClient.js:340
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is away."
|
msgid "%s is away."
|
||||||
msgstr "«%s» er borte."
|
msgstr "«%s» er borte."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:250
|
#: ../js/ui/telepathyClient.js:343
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is busy."
|
msgid "%s is busy."
|
||||||
msgstr "%s er opptatt."
|
msgstr "%s er opptatt."
|
||||||
@ -914,7 +1058,7 @@ msgstr "%s er opptatt."
|
|||||||
#. Translators: this is a time format string followed by a date.
|
#. Translators: this is a time format string followed by a date.
|
||||||
#. If applicable, replace %X with a strftime format valid for your
|
#. If applicable, replace %X with a strftime format valid for your
|
||||||
#. locale, without seconds.
|
#. locale, without seconds.
|
||||||
#: ../js/ui/telepathyClient.js:348
|
#: ../js/ui/telepathyClient.js:474
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent at %X on %A"
|
msgid "Sent at %X on %A"
|
||||||
msgstr "Sendt %X på %A"
|
msgstr "Sendt %X på %A"
|
||||||
@ -923,11 +1067,11 @@ msgstr "Sendt %X på %A"
|
|||||||
#. in the search entry when no search is
|
#. in the search entry when no search is
|
||||||
#. active; it should not exceed ~30
|
#. active; it should not exceed ~30
|
||||||
#. characters.
|
#. characters.
|
||||||
#: ../js/ui/viewSelector.js:117
|
#: ../js/ui/viewSelector.js:122
|
||||||
msgid "Type to search..."
|
msgid "Type to search..."
|
||||||
msgstr "Skriv for å søke …"
|
msgstr "Skriv for å søke …"
|
||||||
|
|
||||||
#: ../js/ui/viewSelector.js:137 ../src/shell-util.c:250
|
#: ../js/ui/viewSelector.js:142 ../src/shell-util.c:250
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "Søk"
|
msgstr "Søk"
|
||||||
|
|
||||||
@ -943,7 +1087,7 @@ msgstr "«%s» er klar"
|
|||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The number of sound outputs on a particular device
|
#. * The number of sound outputs on a particular device
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1094
|
#: ../src/gvc/gvc-mixer-control.c:1098
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%u Output"
|
msgid "%u Output"
|
||||||
msgid_plural "%u Outputs"
|
msgid_plural "%u Outputs"
|
||||||
@ -952,53 +1096,66 @@ msgstr[1] "%u utganger"
|
|||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The number of sound inputs on a particular device
|
#. * The number of sound inputs on a particular device
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1104
|
#: ../src/gvc/gvc-mixer-control.c:1108
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%u Input"
|
msgid "%u Input"
|
||||||
msgid_plural "%u Inputs"
|
msgid_plural "%u Inputs"
|
||||||
msgstr[0] "%u inngang"
|
msgstr[0] "%u inngang"
|
||||||
msgstr[1] "%u innganger"
|
msgstr[1] "%u innganger"
|
||||||
|
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1402
|
#: ../src/gvc/gvc-mixer-control.c:1406
|
||||||
msgid "System Sounds"
|
msgid "System Sounds"
|
||||||
msgstr "Systemlyder"
|
msgstr "Systemlyder"
|
||||||
|
|
||||||
#: ../src/main.c:395
|
#: ../src/main.c:438
|
||||||
msgid "Print version"
|
msgid "Print version"
|
||||||
msgstr "Skriv ut versjon"
|
msgstr "Skriv ut versjon"
|
||||||
|
|
||||||
#: ../src/shell-global.c:1308
|
#: ../src/shell-app.c:454
|
||||||
|
#, c-format
|
||||||
|
msgid "Failed to launch '%s'"
|
||||||
|
msgstr "Klarte ikke å starte «%s»"
|
||||||
|
|
||||||
|
#: ../src/shell-global.c:1395
|
||||||
msgid "Less than a minute ago"
|
msgid "Less than a minute ago"
|
||||||
msgstr "Mindre enn ett minutt siden"
|
msgstr "Mindre enn ett minutt siden"
|
||||||
|
|
||||||
#: ../src/shell-global.c:1312
|
#: ../src/shell-global.c:1399
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d minute ago"
|
msgid "%d minute ago"
|
||||||
msgid_plural "%d minutes ago"
|
msgid_plural "%d minutes ago"
|
||||||
msgstr[0] "%d minutt siden"
|
msgstr[0] "%d minutt siden"
|
||||||
msgstr[1] "%d minutter siden"
|
msgstr[1] "%d minutter siden"
|
||||||
|
|
||||||
#: ../src/shell-global.c:1317
|
#: ../src/shell-global.c:1404
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d hour ago"
|
msgid "%d hour ago"
|
||||||
msgid_plural "%d hours ago"
|
msgid_plural "%d hours ago"
|
||||||
msgstr[0] "%d time siden"
|
msgstr[0] "%d time siden"
|
||||||
msgstr[1] "%d timer siden"
|
msgstr[1] "%d timer siden"
|
||||||
|
|
||||||
#: ../src/shell-global.c:1322
|
#: ../src/shell-global.c:1409
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d day ago"
|
msgid "%d day ago"
|
||||||
msgid_plural "%d days ago"
|
msgid_plural "%d days ago"
|
||||||
msgstr[0] "%d dag siden"
|
msgstr[0] "%d dag siden"
|
||||||
msgstr[1] "%d dager siden"
|
msgstr[1] "%d dager siden"
|
||||||
|
|
||||||
#: ../src/shell-global.c:1327
|
#: ../src/shell-global.c:1414
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d week ago"
|
msgid "%d week ago"
|
||||||
msgid_plural "%d weeks ago"
|
msgid_plural "%d weeks ago"
|
||||||
msgstr[0] "%d uke siden"
|
msgstr[0] "%d uke siden"
|
||||||
msgstr[1] "%d uker siden"
|
msgstr[1] "%d uker siden"
|
||||||
|
|
||||||
|
#: ../src/shell-mobile-providers.c:80
|
||||||
|
msgid "United Kingdom"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../src/shell-mobile-providers.c:526
|
||||||
|
msgid "Default"
|
||||||
|
msgstr "Forvalg"
|
||||||
|
|
||||||
#: ../src/shell-polkit-authentication-agent.c:334
|
#: ../src/shell-polkit-authentication-agent.c:334
|
||||||
msgid "Authentication dialog was dismissed by the user"
|
msgid "Authentication dialog was dismissed by the user"
|
||||||
msgstr "Autentiseringsdialogen ble lukket av brukeren"
|
msgstr "Autentiseringsdialogen ble lukket av brukeren"
|
||||||
|
344
po/nl.po
344
po/nl.po
@ -6,12 +6,15 @@
|
|||||||
# Reinout van Schouwen <reinouts@gnome.org>, 2010
|
# Reinout van Schouwen <reinouts@gnome.org>, 2010
|
||||||
# Wouter Bolsterlee <wbolster@gnome.org>, 2011
|
# Wouter Bolsterlee <wbolster@gnome.org>, 2011
|
||||||
#
|
#
|
||||||
|
# Aangezien dit een erg zichtbare module is graag eerst contact opnemen met
|
||||||
|
# Wouter Bolsterlee alvorens zaken te wijzigen!
|
||||||
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gnome-shell\n"
|
"Project-Id-Version: gnome-shell\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2011-03-12 23:52+0100\n"
|
"POT-Creation-Date: 2011-03-19 01:15+0100\n"
|
||||||
"PO-Revision-Date: 2011-03-12 23:52+0100\n"
|
"PO-Revision-Date: 2011-03-19 01:14+0100\n"
|
||||||
"Last-Translator: Wouter Bolsterlee <wbolster@gnome.org>\n"
|
"Last-Translator: Wouter Bolsterlee <wbolster@gnome.org>\n"
|
||||||
"Language-Team: Dutch <vertaling@vrijschrift.org>\n"
|
"Language-Team: Dutch <vertaling@vrijschrift.org>\n"
|
||||||
"Language: nl\n"
|
"Language: nl\n"
|
||||||
@ -44,11 +47,11 @@ msgstr ""
|
|||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:3
|
#: ../data/org.gnome.shell.gschema.xml.in.h:3
|
||||||
msgid "File extension used for storing the screencast"
|
msgid "File extension used for storing the screencast"
|
||||||
msgstr "Bestandsextensie voor het opslaan van de screencast"
|
msgstr "Bestandsextensie voor het opslaan van de schermopname"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:4
|
#: ../data/org.gnome.shell.gschema.xml.in.h:4
|
||||||
msgid "Framerate used for recording screencasts."
|
msgid "Framerate used for recording screencasts."
|
||||||
msgstr "Framerate voor het opnemen van de screencasts."
|
msgstr "Framerate voor het opnemen van de schermopnamen."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:5
|
#: ../data/org.gnome.shell.gschema.xml.in.h:5
|
||||||
msgid ""
|
msgid ""
|
||||||
@ -149,7 +152,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:20
|
#: ../data/org.gnome.shell.gschema.xml.in.h:20
|
||||||
msgid "The gstreamer pipeline used to encode the screencast"
|
msgid "The gstreamer pipeline used to encode the screencast"
|
||||||
msgstr "De gstreamer-pijplijn voor het coderen van de screencast"
|
msgstr "De gstreamer-pijplijn voor het coderen van de schermopname"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:21
|
#: ../data/org.gnome.shell.gschema.xml.in.h:21
|
||||||
msgid ""
|
msgid ""
|
||||||
@ -175,21 +178,17 @@ msgstr "Of statistieken worden bijgehouden over gebruik van toepassingen"
|
|||||||
msgid "disabled OpenSearch providers"
|
msgid "disabled OpenSearch providers"
|
||||||
msgstr "uitgeschakelde OpenSearch-providers"
|
msgstr "uitgeschakelde OpenSearch-providers"
|
||||||
|
|
||||||
#: ../js/misc/util.js:86
|
#: ../js/misc/util.js:71
|
||||||
msgid "Command not found"
|
msgid "Command not found"
|
||||||
msgstr "Opdracht niet gevonden"
|
msgstr "Opdracht niet gevonden"
|
||||||
|
|
||||||
#. Replace "Error invoking GLib.shell_parse_argv: " with
|
#. Replace "Error invoking GLib.shell_parse_argv: " with
|
||||||
#. something nicer
|
#. something nicer
|
||||||
#: ../js/misc/util.js:113
|
#: ../js/misc/util.js:98
|
||||||
msgid "Could not parse command:"
|
msgid "Could not parse command:"
|
||||||
msgstr "Kon opdracht niet parsen:"
|
msgstr "Kon opdracht niet parsen:"
|
||||||
|
|
||||||
#: ../js/misc/util.js:135
|
#: ../js/misc/util.js:106
|
||||||
msgid "No such application"
|
|
||||||
msgstr "Toepassing niet gevonden"
|
|
||||||
|
|
||||||
#: ../js/misc/util.js:148
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Execution of '%s' failed:"
|
msgid "Execution of '%s' failed:"
|
||||||
msgstr "Uitvoeren van ‘%s’ mislukt:"
|
msgstr "Uitvoeren van ‘%s’ mislukt:"
|
||||||
@ -375,13 +374,13 @@ msgstr "Deze week"
|
|||||||
msgid "Next week"
|
msgid "Next week"
|
||||||
msgstr "Volgende week"
|
msgstr "Volgende week"
|
||||||
|
|
||||||
#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:931
|
#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:933
|
||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "Verwijderen"
|
msgstr "Verwijderen"
|
||||||
|
|
||||||
#: ../js/ui/dateMenu.js:91
|
#: ../js/ui/dateMenu.js:91
|
||||||
msgid "Date and Time Settings"
|
msgid "Date and Time Settings"
|
||||||
msgstr "Datum- en tijdinstellingen"
|
msgstr "Instellingen voor datum en tijd"
|
||||||
|
|
||||||
#: ../js/ui/dateMenu.js:111
|
#: ../js/ui/dateMenu.js:111
|
||||||
msgid "Open Calendar"
|
msgid "Open Calendar"
|
||||||
@ -427,13 +426,12 @@ msgstr "%a %l:%M:%S %p"
|
|||||||
msgid "%a %l:%M %p"
|
msgid "%a %l:%M %p"
|
||||||
msgstr "%a %l:%M %p"
|
msgstr "%a %l:%M %p"
|
||||||
|
|
||||||
# Dagnaam bewust afgekort (Wouter Bolsterlee)
|
|
||||||
#. Translators: This is the date format to use when the calendar popup is
|
#. 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").
|
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
|
||||||
#.
|
#.
|
||||||
#: ../js/ui/dateMenu.js:209
|
#: ../js/ui/dateMenu.js:194
|
||||||
msgid "%A %B %e, %Y"
|
msgid "%A %B %e, %Y"
|
||||||
msgstr "%a %e %B %Y"
|
msgstr "%A %e %B %Y"
|
||||||
|
|
||||||
#: ../js/ui/docDisplay.js:19
|
#: ../js/ui/docDisplay.js:19
|
||||||
msgid "RECENT ITEMS"
|
msgid "RECENT ITEMS"
|
||||||
@ -509,7 +507,7 @@ msgstr "Computer opnieuw opstarten"
|
|||||||
msgid "Confirm"
|
msgid "Confirm"
|
||||||
msgstr "Bevestigen"
|
msgstr "Bevestigen"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:400 ../js/ui/status/bluetooth.js:470
|
#: ../js/ui/endSessionDialog.js:400 ../js/ui/status/bluetooth.js:466
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Annuleren"
|
msgstr "Annuleren"
|
||||||
|
|
||||||
@ -543,11 +541,11 @@ msgstr "Broncode weergeven"
|
|||||||
msgid "Web Page"
|
msgid "Web Page"
|
||||||
msgstr "Webpagina"
|
msgstr "Webpagina"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:924
|
#: ../js/ui/messageTray.js:926
|
||||||
msgid "Open"
|
msgid "Open"
|
||||||
msgstr "Openen"
|
msgstr "Openen"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1961
|
#: ../js/ui/messageTray.js:1986
|
||||||
msgid "System Information"
|
msgid "System Information"
|
||||||
msgstr "Systeeminformatie"
|
msgstr "Systeeminformatie"
|
||||||
|
|
||||||
@ -571,18 +569,18 @@ msgid "Dash"
|
|||||||
msgstr "Zijbalk"
|
msgstr "Zijbalk"
|
||||||
|
|
||||||
#. TODO - _quit() doesn't really work on apps in state STARTING yet
|
#. TODO - _quit() doesn't really work on apps in state STARTING yet
|
||||||
#: ../js/ui/panel.js:560
|
#: ../js/ui/panel.js:515
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Quit %s"
|
msgid "Quit %s"
|
||||||
msgstr "%s afsluiten"
|
msgstr "%s afsluiten"
|
||||||
|
|
||||||
#. Button on the left side of the panel.
|
#. Button on the left side of the panel.
|
||||||
#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
|
#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
|
||||||
#: ../js/ui/panel.js:919
|
#: ../js/ui/panel.js:874
|
||||||
msgid "Activities"
|
msgid "Activities"
|
||||||
msgstr "Activiteiten"
|
msgstr "Activiteiten"
|
||||||
|
|
||||||
#: ../js/ui/panel.js:1020
|
#: ../js/ui/panel.js:975
|
||||||
msgid "Panel"
|
msgid "Panel"
|
||||||
msgstr "Paneel"
|
msgstr "Paneel"
|
||||||
|
|
||||||
@ -599,7 +597,7 @@ msgstr "Opnieuw"
|
|||||||
msgid "Connect to..."
|
msgid "Connect to..."
|
||||||
msgstr "Verbinding maken met…"
|
msgstr "Verbinding maken met…"
|
||||||
|
|
||||||
#: ../js/ui/placeDisplay.js:409
|
#: ../js/ui/placeDisplay.js:380
|
||||||
msgid "PLACES & DEVICES"
|
msgid "PLACES & DEVICES"
|
||||||
msgstr "LOCATIES & APPARATEN"
|
msgstr "LOCATIES & APPARATEN"
|
||||||
|
|
||||||
@ -608,7 +606,7 @@ msgstr "LOCATIES & APPARATEN"
|
|||||||
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
||||||
#. switches containing "◯" and "|"). Other values will
|
#. switches containing "◯" and "|"). Other values will
|
||||||
#. simply result in invisible toggle switches.
|
#. simply result in invisible toggle switches.
|
||||||
#: ../js/ui/popupMenu.js:618
|
#: ../js/ui/popupMenu.js:636
|
||||||
msgid "toggle-switch-us"
|
msgid "toggle-switch-us"
|
||||||
msgstr "toggle-switch-intl"
|
msgstr "toggle-switch-intl"
|
||||||
|
|
||||||
@ -624,39 +622,39 @@ msgstr "Zoeken…"
|
|||||||
msgid "No matching results."
|
msgid "No matching results."
|
||||||
msgstr "Geen overeenkomende resultaten."
|
msgstr "Geen overeenkomende resultaten."
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:113 ../js/ui/statusMenu.js:177
|
#: ../js/ui/statusMenu.js:114 ../js/ui/statusMenu.js:178
|
||||||
msgid "Power Off..."
|
msgid "Power Off..."
|
||||||
msgstr "Uitschakelen…"
|
msgstr "Uitschakelen…"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:115 ../js/ui/statusMenu.js:176
|
#: ../js/ui/statusMenu.js:116 ../js/ui/statusMenu.js:177
|
||||||
msgid "Suspend"
|
msgid "Suspend"
|
||||||
msgstr "Slaapstand"
|
msgstr "Slaapstand"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:136
|
#: ../js/ui/statusMenu.js:137
|
||||||
msgid "Available"
|
msgid "Available"
|
||||||
msgstr "Beschikbaar"
|
msgstr "Beschikbaar"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:141
|
#: ../js/ui/statusMenu.js:142
|
||||||
msgid "Busy"
|
msgid "Busy"
|
||||||
msgstr "Bezig"
|
msgstr "Bezig"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:149
|
#: ../js/ui/statusMenu.js:150
|
||||||
msgid "My Account"
|
msgid "My Account"
|
||||||
msgstr "Mijn account"
|
msgstr "Mijn account"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:153
|
#: ../js/ui/statusMenu.js:154
|
||||||
msgid "System Settings"
|
msgid "System Settings"
|
||||||
msgstr "Systeeminstellingen"
|
msgstr "Systeeminstellingen"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:160
|
#: ../js/ui/statusMenu.js:161
|
||||||
msgid "Lock Screen"
|
msgid "Lock Screen"
|
||||||
msgstr "Scherm vergrendelen"
|
msgstr "Scherm vergrendelen"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:164
|
#: ../js/ui/statusMenu.js:165
|
||||||
msgid "Switch User"
|
msgid "Switch User"
|
||||||
msgstr "Gebruiker wisselen"
|
msgstr "Gebruiker wisselen"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:169
|
#: ../js/ui/statusMenu.js:170
|
||||||
msgid "Log Out..."
|
msgid "Log Out..."
|
||||||
msgstr "Afmelden…"
|
msgstr "Afmelden…"
|
||||||
|
|
||||||
@ -664,14 +662,12 @@ msgstr "Afmelden…"
|
|||||||
msgid "Zoom"
|
msgid "Zoom"
|
||||||
msgstr "Zoomen"
|
msgstr "Zoomen"
|
||||||
|
|
||||||
#: ../js/ui/status/accessibility.js:69
|
#. let screenReader = this._buildItem(_("Screen Reader"), APPLICATIONS_SCHEMA,
|
||||||
msgid "Screen Reader"
|
#. 'screen-reader-enabled');
|
||||||
msgstr "Schermlezer"
|
#. this.menu.addMenuItem(screenReader);
|
||||||
|
#. let screenKeyboard = this._buildItem(_("Screen Keyboard"), APPLICATIONS_SCHEMA,
|
||||||
#: ../js/ui/status/accessibility.js:73
|
#. 'screen-keyboard-enabled');
|
||||||
msgid "Screen Keyboard"
|
#. this.menu.addMenuItem(screenKeyboard);
|
||||||
msgstr "Schermtoetsenbord"
|
|
||||||
|
|
||||||
#: ../js/ui/status/accessibility.js:77
|
#: ../js/ui/status/accessibility.js:77
|
||||||
msgid "Visual Alerts"
|
msgid "Visual Alerts"
|
||||||
msgstr "Visuele alerteringen"
|
msgstr "Visuele alerteringen"
|
||||||
@ -696,17 +692,17 @@ msgstr "Muistoetsen"
|
|||||||
msgid "Universal Access Settings"
|
msgid "Universal Access Settings"
|
||||||
msgstr "Instellingen voor toegankelijkheid"
|
msgstr "Instellingen voor toegankelijkheid"
|
||||||
|
|
||||||
#: ../js/ui/status/accessibility.js:145
|
#: ../js/ui/status/accessibility.js:146
|
||||||
msgid "High Contrast"
|
msgid "High Contrast"
|
||||||
msgstr "Hoog contrast"
|
msgstr "Hoog contrast"
|
||||||
|
|
||||||
#: ../js/ui/status/accessibility.js:182
|
#: ../js/ui/status/accessibility.js:183
|
||||||
msgid "Large Text"
|
msgid "Large Text"
|
||||||
msgstr "Grote tekst"
|
msgstr "Grote tekst"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:241
|
#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:237
|
||||||
#: ../js/ui/status/bluetooth.js:337 ../js/ui/status/bluetooth.js:371
|
#: ../js/ui/status/bluetooth.js:333 ../js/ui/status/bluetooth.js:367
|
||||||
#: ../js/ui/status/bluetooth.js:411 ../js/ui/status/bluetooth.js:444
|
#: ../js/ui/status/bluetooth.js:407 ../js/ui/status/bluetooth.js:440
|
||||||
msgid "Bluetooth"
|
msgid "Bluetooth"
|
||||||
msgstr "Bluetooth"
|
msgstr "Bluetooth"
|
||||||
|
|
||||||
@ -726,94 +722,94 @@ msgstr "Nieuw apparaat instellen…"
|
|||||||
msgid "Bluetooth Settings"
|
msgid "Bluetooth Settings"
|
||||||
msgstr "Bluetooth-instellingen"
|
msgstr "Bluetooth-instellingen"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:192
|
#: ../js/ui/status/bluetooth.js:188
|
||||||
msgid "Connection"
|
msgid "Connection"
|
||||||
msgstr "Verbinding"
|
msgstr "Verbinding"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:228
|
#: ../js/ui/status/bluetooth.js:224
|
||||||
msgid "Send Files..."
|
msgid "Send Files..."
|
||||||
msgstr "Bestanden sturen…"
|
msgstr "Bestanden sturen…"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:233
|
#: ../js/ui/status/bluetooth.js:229
|
||||||
msgid "Browse Files..."
|
msgid "Browse Files..."
|
||||||
msgstr "Bestanden doorbladeren…"
|
msgstr "Bestanden doorbladeren…"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:242
|
#: ../js/ui/status/bluetooth.js:238
|
||||||
msgid "Error browsing device"
|
msgid "Error browsing device"
|
||||||
msgstr "Fout bij doorbladeren van apparaat"
|
msgstr "Fout bij doorbladeren van apparaat"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:243
|
#: ../js/ui/status/bluetooth.js:239
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "The requested device cannot be browsed, error is '%s'"
|
msgid "The requested device cannot be browsed, error is '%s'"
|
||||||
msgstr "Het gekozen apparaat kon niet doorgebladerd worden. De fout is ‘%s’"
|
msgstr "Het gekozen apparaat kon niet doorgebladerd worden. De fout is ‘%s’"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:251
|
#: ../js/ui/status/bluetooth.js:247
|
||||||
msgid "Keyboard Settings"
|
msgid "Keyboard Settings"
|
||||||
msgstr "Toetsenbordvoorkeuren"
|
msgstr "Toetsenbordvoorkeuren"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:256
|
#: ../js/ui/status/bluetooth.js:252
|
||||||
msgid "Mouse Settings"
|
msgid "Mouse Settings"
|
||||||
msgstr "Muisvoorkeuren"
|
msgstr "Muisvoorkeuren"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:263 ../js/ui/status/volume.js:66
|
#: ../js/ui/status/bluetooth.js:259 ../js/ui/status/volume.js:66
|
||||||
msgid "Sound Settings"
|
msgid "Sound Settings"
|
||||||
msgstr "Geluidsvoorkeuren"
|
msgstr "Geluidsvoorkeuren"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:372
|
#: ../js/ui/status/bluetooth.js:368
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Authorization request from %s"
|
msgid "Authorization request from %s"
|
||||||
msgstr "Autorisatie-aanvraag van %s"
|
msgstr "Autorisatie-aanvraag van %s"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:378
|
#: ../js/ui/status/bluetooth.js:374
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Device %s wants access to the service '%s'"
|
msgid "Device %s wants access to the service '%s'"
|
||||||
msgstr "Het apparaat ‘%s’ wil toegang tot de dienst ‘%s’"
|
msgstr "Het apparaat ‘%s’ wil toegang tot de dienst ‘%s’"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:380
|
#: ../js/ui/status/bluetooth.js:376
|
||||||
msgid "Always grant access"
|
msgid "Always grant access"
|
||||||
msgstr "Altijd toestaan"
|
msgstr "Altijd toestaan"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:381
|
#: ../js/ui/status/bluetooth.js:377
|
||||||
msgid "Grant this time only"
|
msgid "Grant this time only"
|
||||||
msgstr "Eenmalig toestaan"
|
msgstr "Eenmalig toestaan"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:382
|
#: ../js/ui/status/bluetooth.js:378
|
||||||
msgid "Reject"
|
msgid "Reject"
|
||||||
msgstr "Afwijzen"
|
msgstr "Afwijzen"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:412
|
#: ../js/ui/status/bluetooth.js:408
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Pairing confirmation for %s"
|
msgid "Pairing confirmation for %s"
|
||||||
msgstr "Koppelbevestiging voor %s"
|
msgstr "Koppelbevestiging voor %s"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:418 ../js/ui/status/bluetooth.js:452
|
#: ../js/ui/status/bluetooth.js:414 ../js/ui/status/bluetooth.js:448
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Device %s wants to pair with this computer"
|
msgid "Device %s wants to pair with this computer"
|
||||||
msgstr "Het apparaat ‘%s’ wil aankoppelen met deze computer"
|
msgstr "Het apparaat ‘%s’ wil aankoppelen met deze computer"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:419
|
#: ../js/ui/status/bluetooth.js:415
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Please confirm whether the PIN '%s' matches the one on the device."
|
msgid "Please confirm whether the PIN '%s' matches the one on the device."
|
||||||
msgstr "Bevestig dat de PIN-code ‘%s’ hetzelfde is als die van het apparaat."
|
msgstr "Bevestig dat de PIN-code ‘%s’ hetzelfde is als die van het apparaat."
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:421
|
#: ../js/ui/status/bluetooth.js:417
|
||||||
msgid "Matches"
|
msgid "Matches"
|
||||||
msgstr "Komt overeen"
|
msgstr "Komt overeen"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:422
|
#: ../js/ui/status/bluetooth.js:418
|
||||||
msgid "Does not match"
|
msgid "Does not match"
|
||||||
msgstr "Komt niet overeen"
|
msgstr "Komt niet overeen"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:445
|
#: ../js/ui/status/bluetooth.js:441
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Pairing request for %s"
|
msgid "Pairing request for %s"
|
||||||
msgstr "Verzoek tot koppelen met %s"
|
msgstr "Verzoek tot koppelen met %s"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:453
|
#: ../js/ui/status/bluetooth.js:449
|
||||||
msgid "Please enter the PIN mentioned on the device."
|
msgid "Please enter the PIN mentioned on the device."
|
||||||
msgstr "Geef de op het apparaat aangegeven PIN-code."
|
msgstr "Geef de op het apparaat aangegeven PIN-code."
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:469
|
#: ../js/ui/status/bluetooth.js:465
|
||||||
msgid "OK"
|
msgid "OK"
|
||||||
msgstr "OK"
|
msgstr "OK"
|
||||||
|
|
||||||
@ -825,17 +821,149 @@ msgstr "Toetsenbordindeling tonen…"
|
|||||||
msgid "Localization Settings"
|
msgid "Localization Settings"
|
||||||
msgstr "Regionale instellingen"
|
msgstr "Regionale instellingen"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:102 ../js/ui/status/network.js:1393
|
||||||
|
msgid "<unknown>"
|
||||||
|
msgstr "<onbekend>"
|
||||||
|
|
||||||
|
#. Translators: this indicates that wireless or wwan is disabled by hardware killswitch
|
||||||
|
#: ../js/ui/status/network.js:295
|
||||||
|
msgid "disabled"
|
||||||
|
msgstr "uitgeschakeld"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:476
|
||||||
|
msgid "connecting..."
|
||||||
|
msgstr "verbinden…"
|
||||||
|
|
||||||
|
#. Translators: this is for network connections that require some kind of key or password
|
||||||
|
#: ../js/ui/status/network.js:479
|
||||||
|
msgid "authentication required"
|
||||||
|
msgstr "authenticatie nodig"
|
||||||
|
|
||||||
|
#. Translators: this is for wired network devices that are physically disconnected
|
||||||
|
#: ../js/ui/status/network.js:485
|
||||||
|
msgid "cable unplugged"
|
||||||
|
msgstr "kabel niet verbonden"
|
||||||
|
|
||||||
|
#. Translators: this is for a network device that cannot be activated (for example it
|
||||||
|
#. is disabled by rfkill, or it has no coverage
|
||||||
|
#: ../js/ui/status/network.js:489
|
||||||
|
msgid "unavailable"
|
||||||
|
msgstr "niet beschikbaar"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:491
|
||||||
|
msgid "connection failed"
|
||||||
|
msgstr "verbinding mislukt"
|
||||||
|
|
||||||
|
#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
|
||||||
|
#. and we cannot access its settings (including the name)
|
||||||
|
#: ../js/ui/status/network.js:571 ../js/ui/status/network.js:1341
|
||||||
|
msgid "Connected (private)"
|
||||||
|
msgstr "Verbonden (persoonlijke verbinding)"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:636
|
||||||
|
msgid "Auto Ethernet"
|
||||||
|
msgstr "Automatisch ethernetverbinding"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:697
|
||||||
|
msgid "Auto broadband"
|
||||||
|
msgstr "Automatische breedbandverbinding"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:700
|
||||||
|
msgid "Auto dial-up"
|
||||||
|
msgstr "Automatisch inbellen"
|
||||||
|
|
||||||
|
#. TRANSLATORS: this the automatic wireless connection name (including the network name)
|
||||||
|
#: ../js/ui/status/network.js:843 ../js/ui/status/network.js:1353
|
||||||
|
#, c-format
|
||||||
|
msgid "Auto %s"
|
||||||
|
msgstr "%s (automatisch)"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:845
|
||||||
|
msgid "Auto bluetooth"
|
||||||
|
msgstr "Automatische Bluetooth"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1355
|
||||||
|
msgid "Auto wireless"
|
||||||
|
msgstr "Automatisch draadloos netwerk"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1413
|
||||||
|
msgid "More..."
|
||||||
|
msgstr "Meer…"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1436
|
||||||
|
msgid "Enable networking"
|
||||||
|
msgstr "Netwerk inschakelen"
|
||||||
|
|
||||||
|
# Expliciet "netwerk" toegevoegd (Wouter Bolsterlee)
|
||||||
|
#: ../js/ui/status/network.js:1448
|
||||||
|
msgid "Wired"
|
||||||
|
msgstr "Bekabeld netwerk"
|
||||||
|
|
||||||
|
# Expliciet "netwerk" toegevoegd (Wouter Bolsterlee)
|
||||||
|
#: ../js/ui/status/network.js:1459
|
||||||
|
msgid "Wireless"
|
||||||
|
msgstr "Draadloos netwerk"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1469
|
||||||
|
msgid "Mobile broadband"
|
||||||
|
msgstr "Mobiel breedband"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1479
|
||||||
|
msgid "VPN Connections"
|
||||||
|
msgstr "VPN-verbindingen"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1488
|
||||||
|
msgid "Network Settings"
|
||||||
|
msgstr "Netwerkinstellingen"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1783
|
||||||
|
#, c-format
|
||||||
|
msgid "You're now connected to mobile broadband connection '%s'"
|
||||||
|
msgstr "U bent nu verbonden met de mobiele breedbandverbinding ‘%s’"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1787
|
||||||
|
#, c-format
|
||||||
|
msgid "You're now connected to wireless network '%s'"
|
||||||
|
msgstr "U bent nu verbonden met het draadloze netwerk ‘%s’"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1791
|
||||||
|
#, c-format
|
||||||
|
msgid "You're now connected to wired network '%s'"
|
||||||
|
msgstr "U bent nu verbonden met het bekabelde netwerk ‘%s’"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1795
|
||||||
|
#, c-format
|
||||||
|
msgid "You're now connected to VPN network '%s'"
|
||||||
|
msgstr "U bent nu verbonden met het VPN-netwerk ‘%s’"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1800
|
||||||
|
#, c-format
|
||||||
|
msgid "You're now connected to '%s'"
|
||||||
|
msgstr "U bent nu verbonden met ‘%s’"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1808
|
||||||
|
msgid "Connection established"
|
||||||
|
msgstr "Verbinding gemaakt"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1930
|
||||||
|
msgid "Networking is disabled"
|
||||||
|
msgstr "Netwerk is uitgeschakeld"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:2055
|
||||||
|
msgid "Network Manager"
|
||||||
|
msgstr "Netwerk-manager"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:85
|
#: ../js/ui/status/power.js:85
|
||||||
msgid "Power Settings"
|
msgid "Power Settings"
|
||||||
msgstr "Energievoorkeuren"
|
msgstr "Energievoorkeuren"
|
||||||
|
|
||||||
#. 0 is reported when UPower does not have enough data
|
#. 0 is reported when UPower does not have enough data
|
||||||
#. to estimate battery life
|
#. to estimate battery life
|
||||||
#: ../js/ui/status/power.js:110
|
#: ../js/ui/status/power.js:111
|
||||||
msgid "Estimating..."
|
msgid "Estimating..."
|
||||||
msgstr "Schatten…"
|
msgstr "Schatten…"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:117
|
#: ../js/ui/status/power.js:118
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d hour remaining"
|
msgid "%d hour remaining"
|
||||||
msgid_plural "%d hours remaining"
|
msgid_plural "%d hours remaining"
|
||||||
@ -843,75 +971,75 @@ msgstr[0] "%d uur resterend"
|
|||||||
msgstr[1] "%d uur resterend"
|
msgstr[1] "%d uur resterend"
|
||||||
|
|
||||||
#. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining"
|
#. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining"
|
||||||
#: ../js/ui/status/power.js:120
|
#: ../js/ui/status/power.js:121
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d %s %d %s remaining"
|
msgid "%d %s %d %s remaining"
|
||||||
msgstr "%d %s %d %s resterend"
|
msgstr "%d %s %d %s resterend"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:122
|
#: ../js/ui/status/power.js:123
|
||||||
msgid "hour"
|
msgid "hour"
|
||||||
msgid_plural "hours"
|
msgid_plural "hours"
|
||||||
msgstr[0] "uur"
|
msgstr[0] "uur"
|
||||||
msgstr[1] "uur"
|
msgstr[1] "uur"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:122
|
#: ../js/ui/status/power.js:123
|
||||||
msgid "minute"
|
msgid "minute"
|
||||||
msgid_plural "minutes"
|
msgid_plural "minutes"
|
||||||
msgstr[0] "minuut"
|
msgstr[0] "minuut"
|
||||||
msgstr[1] "minuten"
|
msgstr[1] "minuten"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:125
|
#: ../js/ui/status/power.js:126
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d minute remaining"
|
msgid "%d minute remaining"
|
||||||
msgid_plural "%d minutes remaining"
|
msgid_plural "%d minutes remaining"
|
||||||
msgstr[0] "%d minuut resterend"
|
msgstr[0] "%d minuut resterend"
|
||||||
msgstr[1] "%d minuten resterend"
|
msgstr[1] "%d minuten resterend"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:227
|
#: ../js/ui/status/power.js:228
|
||||||
msgid "AC adapter"
|
msgid "AC adapter"
|
||||||
msgstr "Netstroom"
|
msgstr "Netstroom"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:229
|
#: ../js/ui/status/power.js:230
|
||||||
msgid "Laptop battery"
|
msgid "Laptop battery"
|
||||||
msgstr "Laptop-accu"
|
msgstr "Laptop-accu"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:231
|
#: ../js/ui/status/power.js:232
|
||||||
msgid "UPS"
|
msgid "UPS"
|
||||||
msgstr "UPS"
|
msgstr "UPS"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:233
|
#: ../js/ui/status/power.js:234
|
||||||
msgid "Monitor"
|
msgid "Monitor"
|
||||||
msgstr "Monitor"
|
msgstr "Monitor"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:235
|
#: ../js/ui/status/power.js:236
|
||||||
msgid "Mouse"
|
msgid "Mouse"
|
||||||
msgstr "Muis"
|
msgstr "Muis"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:237
|
#: ../js/ui/status/power.js:238
|
||||||
msgid "Keyboard"
|
msgid "Keyboard"
|
||||||
msgstr "Toetsenbord"
|
msgstr "Toetsenbord"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:239
|
#: ../js/ui/status/power.js:240
|
||||||
msgid "PDA"
|
msgid "PDA"
|
||||||
msgstr "PDA"
|
msgstr "PDA"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:241
|
#: ../js/ui/status/power.js:242
|
||||||
msgid "Cell phone"
|
msgid "Cell phone"
|
||||||
msgstr "Mobiele telefoon"
|
msgstr "Mobiele telefoon"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:243
|
#: ../js/ui/status/power.js:244
|
||||||
msgid "Media player"
|
msgid "Media player"
|
||||||
msgstr "Mediaspeler"
|
msgstr "Mediaspeler"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:245
|
#: ../js/ui/status/power.js:246
|
||||||
msgid "Tablet"
|
msgid "Tablet"
|
||||||
msgstr "Tablet"
|
msgstr "Tablet"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:247
|
#: ../js/ui/status/power.js:248
|
||||||
msgid "Computer"
|
msgid "Computer"
|
||||||
msgstr "Computer"
|
msgstr "Computer"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:249 ../src/shell-app-system.c:1013
|
#: ../js/ui/status/power.js:250 ../src/shell-app-system.c:961
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "Onbekend"
|
msgstr "Onbekend"
|
||||||
|
|
||||||
@ -923,22 +1051,22 @@ msgstr "Volume"
|
|||||||
msgid "Microphone"
|
msgid "Microphone"
|
||||||
msgstr "Microfoon"
|
msgstr "Microfoon"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:239
|
#: ../js/ui/telepathyClient.js:332
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is online."
|
msgid "%s is online."
|
||||||
msgstr "%s is online."
|
msgstr "%s is online."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:244
|
#: ../js/ui/telepathyClient.js:337
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is offline."
|
msgid "%s is offline."
|
||||||
msgstr "%s is offline."
|
msgstr "%s is offline."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:247
|
#: ../js/ui/telepathyClient.js:340
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is away."
|
msgid "%s is away."
|
||||||
msgstr "%s is afwezig."
|
msgstr "%s is afwezig."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:250
|
#: ../js/ui/telepathyClient.js:343
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is busy."
|
msgid "%s is busy."
|
||||||
msgstr "%s is bezig."
|
msgstr "%s is bezig."
|
||||||
@ -946,7 +1074,7 @@ msgstr "%s is bezig."
|
|||||||
#. Translators: this is a time format string followed by a date.
|
#. Translators: this is a time format string followed by a date.
|
||||||
#. If applicable, replace %X with a strftime format valid for your
|
#. If applicable, replace %X with a strftime format valid for your
|
||||||
#. locale, without seconds.
|
#. locale, without seconds.
|
||||||
#: ../js/ui/telepathyClient.js:357
|
#: ../js/ui/telepathyClient.js:474
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent at %X on %A"
|
msgid "Sent at %X on %A"
|
||||||
msgstr "Verzonden om %H:%M op %A %e %B %Y"
|
msgstr "Verzonden om %H:%M op %A %e %B %Y"
|
||||||
@ -995,42 +1123,55 @@ msgstr[1] "%u invoerkanalen"
|
|||||||
msgid "System Sounds"
|
msgid "System Sounds"
|
||||||
msgstr "Systeemgeluiden"
|
msgstr "Systeemgeluiden"
|
||||||
|
|
||||||
#: ../src/main.c:395
|
#: ../src/main.c:397
|
||||||
msgid "Print version"
|
msgid "Print version"
|
||||||
msgstr "Versie weergeven"
|
msgstr "Versie weergeven"
|
||||||
|
|
||||||
#: ../src/shell-global.c:1308
|
#: ../src/shell-app.c:454
|
||||||
|
#, c-format
|
||||||
|
msgid "Failed to launch '%s'"
|
||||||
|
msgstr "Kon ‘%s’ niet starten"
|
||||||
|
|
||||||
|
#: ../src/shell-global.c:1340
|
||||||
msgid "Less than a minute ago"
|
msgid "Less than a minute ago"
|
||||||
msgstr "Minder dan een minuut geleden"
|
msgstr "Minder dan een minuut geleden"
|
||||||
|
|
||||||
#: ../src/shell-global.c:1312
|
#: ../src/shell-global.c:1344
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d minute ago"
|
msgid "%d minute ago"
|
||||||
msgid_plural "%d minutes ago"
|
msgid_plural "%d minutes ago"
|
||||||
msgstr[0] "%d minuut geleden"
|
msgstr[0] "%d minuut geleden"
|
||||||
msgstr[1] "%d minuten geleden"
|
msgstr[1] "%d minuten geleden"
|
||||||
|
|
||||||
#: ../src/shell-global.c:1317
|
#: ../src/shell-global.c:1349
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d hour ago"
|
msgid "%d hour ago"
|
||||||
msgid_plural "%d hours ago"
|
msgid_plural "%d hours ago"
|
||||||
msgstr[0] "%d uur geleden"
|
msgstr[0] "%d uur geleden"
|
||||||
msgstr[1] "%d uur geleden"
|
msgstr[1] "%d uur geleden"
|
||||||
|
|
||||||
#: ../src/shell-global.c:1322
|
#: ../src/shell-global.c:1354
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d day ago"
|
msgid "%d day ago"
|
||||||
msgid_plural "%d days ago"
|
msgid_plural "%d days ago"
|
||||||
msgstr[0] "%d dag geleden"
|
msgstr[0] "%d dag geleden"
|
||||||
msgstr[1] "%d dagen geleden"
|
msgstr[1] "%d dagen geleden"
|
||||||
|
|
||||||
#: ../src/shell-global.c:1327
|
#: ../src/shell-global.c:1359
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d week ago"
|
msgid "%d week ago"
|
||||||
msgid_plural "%d weeks ago"
|
msgid_plural "%d weeks ago"
|
||||||
msgstr[0] "%d week geleden"
|
msgstr[0] "%d week geleden"
|
||||||
msgstr[1] "%d weken geleden"
|
msgstr[1] "%d weken geleden"
|
||||||
|
|
||||||
|
#: ../src/shell-mobile-providers.c:80
|
||||||
|
msgid "United Kingdom"
|
||||||
|
msgstr "Verenigd Koninkrijk"
|
||||||
|
|
||||||
|
#: ../src/shell-mobile-providers.c:526
|
||||||
|
msgid "Default"
|
||||||
|
msgstr "Standaard"
|
||||||
|
|
||||||
#: ../src/shell-polkit-authentication-agent.c:334
|
#: ../src/shell-polkit-authentication-agent.c:334
|
||||||
msgid "Authentication dialog was dismissed by the user"
|
msgid "Authentication dialog was dismissed by the user"
|
||||||
msgstr "Authenticatievenster is door de gebruiker afgesloten"
|
msgstr "Authenticatievenster is door de gebruiker afgesloten"
|
||||||
@ -1055,6 +1196,15 @@ msgstr "Bestandssysteem"
|
|||||||
msgid "%1$s: %2$s"
|
msgid "%1$s: %2$s"
|
||||||
msgstr "%1$s: %2$s"
|
msgstr "%1$s: %2$s"
|
||||||
|
|
||||||
|
#~ msgid "No such application"
|
||||||
|
#~ msgstr "Toepassing niet gevonden"
|
||||||
|
|
||||||
|
#~ msgid "Screen Reader"
|
||||||
|
#~ msgstr "Schermlezer"
|
||||||
|
|
||||||
|
#~ msgid "Screen Keyboard"
|
||||||
|
#~ msgstr "Schermtoetsenbord"
|
||||||
|
|
||||||
#~ msgid "PREFERENCES"
|
#~ msgid "PREFERENCES"
|
||||||
#~ msgstr "VOORKEUREN"
|
#~ msgstr "VOORKEUREN"
|
||||||
|
|
||||||
|
474
po/pa.po
474
po/pa.po
@ -6,9 +6,9 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gnome-shell master\n"
|
"Project-Id-Version: gnome-shell master\n"
|
||||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug."
|
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug."
|
||||||
"cgi?product=gnome-shell&component=general\n"
|
"cgi?product=gnome-shell&keywords=I18N+L10N&component=general\n"
|
||||||
"POT-Creation-Date: 2011-03-07 16:15+0000\n"
|
"POT-Creation-Date: 2011-03-24 08:03+0000\n"
|
||||||
"PO-Revision-Date: 2011-03-08 08:27+0530\n"
|
"PO-Revision-Date: 2011-03-25 08:16+0530\n"
|
||||||
"Last-Translator: A S Alam <aalam@users.sf.net>\n"
|
"Last-Translator: A S Alam <aalam@users.sf.net>\n"
|
||||||
"Language-Team: Punjabi/Panjabi <punjabi-users@lists.sf.net>\n"
|
"Language-Team: Punjabi/Panjabi <punjabi-users@lists.sf.net>\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
@ -164,47 +164,43 @@ msgstr "ਐਪਲੀਕੇਸ਼ਨ ਵਰਤੋਂ ਬਾਰੇ ਅੰਕੜੇ
|
|||||||
msgid "disabled OpenSearch providers"
|
msgid "disabled OpenSearch providers"
|
||||||
msgstr "ਓਪਨਸਰਚ ਉਪਲੱਬਧ ਕਰਵਾਉਣ ਵਾਲੇ ਬੰਦ ਹਨ"
|
msgstr "ਓਪਨਸਰਚ ਉਪਲੱਬਧ ਕਰਵਾਉਣ ਵਾਲੇ ਬੰਦ ਹਨ"
|
||||||
|
|
||||||
#: ../js/misc/util.js:86
|
#: ../js/misc/util.js:71
|
||||||
msgid "Command not found"
|
msgid "Command not found"
|
||||||
msgstr "ਕਮਾਂਡ ਨਹੀਂ ਲੱਭੀ"
|
msgstr "ਕਮਾਂਡ ਨਹੀਂ ਲੱਭੀ"
|
||||||
|
|
||||||
#. Replace "Error invoking GLib.shell_parse_argv: " with
|
#. Replace "Error invoking GLib.shell_parse_argv: " with
|
||||||
#. something nicer
|
#. something nicer
|
||||||
#: ../js/misc/util.js:113
|
#: ../js/misc/util.js:98
|
||||||
msgid "Could not parse command:"
|
msgid "Could not parse command:"
|
||||||
msgstr "ਕਮਾਂਡ ਪਾਰਸ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕੀ:"
|
msgstr "ਕਮਾਂਡ ਪਾਰਸ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕੀ:"
|
||||||
|
|
||||||
#: ../js/misc/util.js:135
|
#: ../js/misc/util.js:106
|
||||||
msgid "No such application"
|
|
||||||
msgstr "ਇੰਞ ਦੀ ਕੋਈ ਐਪਲੀਕੇਸ਼ਨ ਨਹੀਂ ਹੈ"
|
|
||||||
|
|
||||||
#: ../js/misc/util.js:148
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Execution of '%s' failed:"
|
msgid "Execution of '%s' failed:"
|
||||||
msgstr "'%s' ਚਲਾਉਣ ਲਈ ਫੇਲ੍ਹ:"
|
msgstr "'%s' ਚਲਾਉਣ ਲਈ ਫੇਲ੍ਹ:"
|
||||||
|
|
||||||
#. Translators: Filter to display all applications
|
#. Translators: Filter to display all applications
|
||||||
#: ../js/ui/appDisplay.js:226
|
#: ../js/ui/appDisplay.js:230
|
||||||
msgid "All"
|
msgid "All"
|
||||||
msgstr "ਸਭ"
|
msgstr "ਸਭ"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:324
|
#: ../js/ui/appDisplay.js:328
|
||||||
msgid "APPLICATIONS"
|
msgid "APPLICATIONS"
|
||||||
msgstr "ਐਪਲੀਕੇਸ਼ਨ"
|
msgstr "ਐਪਲੀਕੇਸ਼ਨ"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:350
|
#: ../js/ui/appDisplay.js:354
|
||||||
msgid "SETTINGS"
|
msgid "SETTINGS"
|
||||||
msgstr "ਸੈਟਿੰਗ"
|
msgstr "ਸੈਟਿੰਗ"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:612
|
#: ../js/ui/appDisplay.js:625
|
||||||
msgid "New Window"
|
msgid "New Window"
|
||||||
msgstr "ਨਵੀਂ ਵਿੰਡੋ"
|
msgstr "ਨਵੀਂ ਵਿੰਡੋ"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:615
|
#: ../js/ui/appDisplay.js:628
|
||||||
msgid "Remove from Favorites"
|
msgid "Remove from Favorites"
|
||||||
msgstr "ਪਸੰਦ ਵਿੱਚੋਂ ਹਟਾਓ"
|
msgstr "ਪਸੰਦ ਵਿੱਚੋਂ ਹਟਾਓ"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:616
|
#: ../js/ui/appDisplay.js:629
|
||||||
msgid "Add to Favorites"
|
msgid "Add to Favorites"
|
||||||
msgstr "ਪਸੰਦ 'ਚ ਸ਼ਾਮਲ ਕਰੋ"
|
msgstr "ਪਸੰਦ 'ਚ ਸ਼ਾਮਲ ਕਰੋ"
|
||||||
|
|
||||||
@ -364,7 +360,7 @@ msgstr "ਇਹ ਹਫ਼ਤਾ"
|
|||||||
msgid "Next week"
|
msgid "Next week"
|
||||||
msgstr "ਹਫ਼ਤਾ ਅੱਗੇ"
|
msgstr "ਹਫ਼ਤਾ ਅੱਗੇ"
|
||||||
|
|
||||||
#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:933
|
#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:994
|
||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "ਹਟਾਓ"
|
msgstr "ਹਟਾਓ"
|
||||||
|
|
||||||
@ -419,7 +415,7 @@ msgstr "%a %l:%M %p"
|
|||||||
#. Translators: This is the date format to use when the calendar popup is
|
#. 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").
|
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
|
||||||
#.
|
#.
|
||||||
#: ../js/ui/dateMenu.js:209
|
#: ../js/ui/dateMenu.js:194
|
||||||
msgid "%A %B %e, %Y"
|
msgid "%A %B %e, %Y"
|
||||||
msgstr "%A, %e %B %Y"
|
msgstr "%A, %e %B %Y"
|
||||||
|
|
||||||
@ -432,7 +428,7 @@ msgstr "ਤਾਜ਼ਾ ਆਈਟਮਾਂ"
|
|||||||
msgid "Log Out %s"
|
msgid "Log Out %s"
|
||||||
msgstr "%s ਲਾਗਆਉਟ"
|
msgstr "%s ਲਾਗਆਉਟ"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:69
|
#: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:70
|
||||||
msgid "Log Out"
|
msgid "Log Out"
|
||||||
msgstr "ਲਾਗਆਉਟ"
|
msgstr "ਲਾਗਆਉਟ"
|
||||||
|
|
||||||
@ -455,46 +451,48 @@ msgstr "ਤੁਹਾਨੂੰ %d ਸਕਿੰਟਾਂ ਵਿੱਚ ਆਟੋਮ
|
|||||||
msgid "Logging out of the system."
|
msgid "Logging out of the system."
|
||||||
msgstr "ਸਿਸਟਮ ਲਾਗ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ।"
|
msgstr "ਸਿਸਟਮ ਲਾਗ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ।"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:74 ../js/ui/endSessionDialog.js:78
|
#: ../js/ui/endSessionDialog.js:75 ../js/ui/endSessionDialog.js:82
|
||||||
msgid "Shut Down"
|
#| msgid "Power Off..."
|
||||||
|
msgid "Power Off"
|
||||||
msgstr "ਬੰਦ ਕਰੋ"
|
msgstr "ਬੰਦ ਕਰੋ"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:75
|
|
||||||
msgid "Click Shut Down to quit these applications and shut down the system."
|
|
||||||
msgstr "ਇਹ ਐਪਲੀਕੇਸ਼ਨ ਬੰਦ ਕਰਕੇ ਸਿਸਟਮ ਨੂੰ ਬੰਦ ਕਰਨ ਲਈ ਬੰਦ ਕਰੋ ਨੂੰ ਕਲਿੱਕ ਕਰੋ।"
|
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:76
|
#: ../js/ui/endSessionDialog.js:76
|
||||||
#, c-format
|
#| msgid "Click Log Out to quit these applications and log out of the system."
|
||||||
msgid "The system will shut down automatically in %d seconds."
|
msgid "Click Power Off to quit these applications and power off the system."
|
||||||
msgstr "ਸਿਸਟਮ ਨੂੰ ਆਟੋਮੈਟਿਕ ਹੀ %d ਸਕਿੰਟਾਂ ਵਿੱਚ ਬੰਦ ਕੀਤਾ ਜਾਵੇਗਾ।"
|
msgstr "ਇਹ ਐਪਲੀਕੇਸ਼ਨਾਂ ਬੰਦ ਕਰਨ ਅਤੇ ਸਿਸਟਮ ਨੂੰ ਬੰਦ ਕਰਨ ਲਈ ਬੰਦ ਕਰੋ ਨੂੰ ਕਲਿੱਕ ਕਰੋ।"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:77
|
#: ../js/ui/endSessionDialog.js:77
|
||||||
msgid "Shutting down the system."
|
#, c-format
|
||||||
|
#| msgid "The system will restart automatically in %d seconds."
|
||||||
|
msgid "The system will power off automatically in %d seconds."
|
||||||
|
msgstr "ਸਿਸਟਮ ਨੂੰ ਆਟੋਮੈਟਿਕ ਹੀ %d ਸਕਿੰਟਾਂ ਵਿੱਚ ਬੰਦ ਹੋ ਜਾਵੇਗਾ।"
|
||||||
|
|
||||||
|
#: ../js/ui/endSessionDialog.js:78
|
||||||
|
#| msgid "Logging out of the system."
|
||||||
|
msgid "Powering off the system."
|
||||||
msgstr "ਸਿਸਟਮ ਬੰਦ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ।"
|
msgstr "ਸਿਸਟਮ ਬੰਦ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ।"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:84 ../js/ui/endSessionDialog.js:88
|
#: ../js/ui/endSessionDialog.js:80 ../js/ui/endSessionDialog.js:88
|
||||||
|
#: ../js/ui/endSessionDialog.js:93
|
||||||
msgid "Restart"
|
msgid "Restart"
|
||||||
msgstr "ਮੁੜ-ਚਾਲੂ ਕਰੋ"
|
msgstr "ਮੁੜ-ਚਾਲੂ ਕਰੋ"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:85
|
#: ../js/ui/endSessionDialog.js:89
|
||||||
msgid "Click Restart to quit these applications and restart the system."
|
msgid "Click Restart to quit these applications and restart the system."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"ਇਹ ਐਪਲੀਕੇਸ਼ਨ ਬੰਦ ਕਰਨ ਤੇ ਸਿਸਟਮ ਨੂੰ ਮੁੜ-ਚਾਲੂ ਕਰਨ ਲਈ ਮੁੜ-ਚਾਲੂ ਕਰੋ ਨੂੰ ਕਲਿੱਕ ਕਰੋ।"
|
"ਇਹ ਐਪਲੀਕੇਸ਼ਨ ਬੰਦ ਕਰਨ ਤੇ ਸਿਸਟਮ ਨੂੰ ਮੁੜ-ਚਾਲੂ ਕਰਨ ਲਈ ਮੁੜ-ਚਾਲੂ ਕਰੋ ਨੂੰ ਕਲਿੱਕ ਕਰੋ।"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:86
|
#: ../js/ui/endSessionDialog.js:90
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "The system will restart automatically in %d seconds."
|
msgid "The system will restart automatically in %d seconds."
|
||||||
msgstr "ਸਿਸਟਮ ਨੂੰ ਆਟੋਮੈਟਿਕ ਹੀ %d ਸਕਿੰਟਾਂ ਵਿੱਚ ਮੁੜ-ਚਾਲੂ ਕੀਤਾ ਜਾ ਜਾਵੇਗਾ।"
|
msgstr "ਸਿਸਟਮ ਨੂੰ ਆਟੋਮੈਟਿਕ ਹੀ %d ਸਕਿੰਟਾਂ ਵਿੱਚ ਮੁੜ-ਚਾਲੂ ਕੀਤਾ ਜਾ ਜਾਵੇਗਾ।"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:87
|
#: ../js/ui/endSessionDialog.js:91
|
||||||
msgid "Restarting the system."
|
msgid "Restarting the system."
|
||||||
msgstr "ਸਿਸਟਮ ਮੁੜ-ਚਾਲੂ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ।"
|
msgstr "ਸਿਸਟਮ ਮੁੜ-ਚਾਲੂ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ।"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:395
|
#: ../js/ui/endSessionDialog.js:415 ../js/ui/polkitAuthenticationAgent.js:172
|
||||||
msgid "Confirm"
|
#: ../js/ui/status/bluetooth.js:466
|
||||||
msgstr "ਪੁਸ਼ਟੀ"
|
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:400 ../js/ui/status/bluetooth.js:470
|
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "ਰੱਦ ਕਰੋ"
|
msgstr "ਰੱਦ ਕਰੋ"
|
||||||
|
|
||||||
@ -508,7 +506,7 @@ msgstr "ਚਾਲੂ ਹੈ"
|
|||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The device has been disabled
|
#. * The device has been disabled
|
||||||
#: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1087
|
#: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1091
|
||||||
msgid "Disabled"
|
msgid "Disabled"
|
||||||
msgstr "ਬੰਦ ਹੈ"
|
msgstr "ਬੰਦ ਹੈ"
|
||||||
|
|
||||||
@ -528,48 +526,47 @@ msgstr "ਸਰੋਤ ਵੇਖੋ"
|
|||||||
msgid "Web Page"
|
msgid "Web Page"
|
||||||
msgstr "ਵੈੱਬ ਪੇਜ਼"
|
msgstr "ਵੈੱਬ ਪੇਜ਼"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:926
|
#: ../js/ui/messageTray.js:987
|
||||||
msgid "Open"
|
msgid "Open"
|
||||||
msgstr "ਖੋਲ੍ਹੋ"
|
msgstr "ਖੋਲ੍ਹੋ"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1963
|
#: ../js/ui/messageTray.js:2145
|
||||||
msgid "System Information"
|
msgid "System Information"
|
||||||
msgstr "ਸਿਸਟਮ ਜਾਣਕਾਰੀ"
|
msgstr "ਸਿਸਟਮ ਜਾਣਕਾਰੀ"
|
||||||
|
|
||||||
#: ../js/ui/overview.js:88
|
#: ../js/ui/overview.js:91
|
||||||
msgid "Undo"
|
msgid "Undo"
|
||||||
msgstr "ਵਾਪਸ"
|
msgstr "ਵਾਪਸ"
|
||||||
|
|
||||||
#: ../js/ui/overview.js:183
|
#: ../js/ui/overview.js:186
|
||||||
msgid "Windows"
|
msgid "Windows"
|
||||||
msgstr "ਵਿੰਡੋ"
|
msgstr "ਵਿੰਡੋ"
|
||||||
|
|
||||||
#: ../js/ui/overview.js:186
|
#: ../js/ui/overview.js:189
|
||||||
msgid "Applications"
|
msgid "Applications"
|
||||||
msgstr "ਐਪਲੀਕੇਸ਼ਨ"
|
msgstr "ਐਪਲੀਕੇਸ਼ਨ"
|
||||||
|
|
||||||
#. Translators: this is the name of the dock/favorites area on
|
#. Translators: this is the name of the dock/favorites area on
|
||||||
#. the left of the overview
|
#. the left of the overview
|
||||||
#: ../js/ui/overview.js:202
|
#: ../js/ui/overview.js:205
|
||||||
msgid "Dash"
|
msgid "Dash"
|
||||||
msgstr "ਡੈਸ਼"
|
msgstr "ਡੈਸ਼"
|
||||||
|
|
||||||
#. TODO - _quit() doesn't really work on apps in state STARTING yet
|
#. TODO - _quit() doesn't really work on apps in state STARTING yet
|
||||||
#: ../js/ui/panel.js:532
|
#: ../js/ui/panel.js:515
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Quit %s"
|
msgid "Quit %s"
|
||||||
msgstr "%s ਬੰਦ ਕਰੋ"
|
msgstr "%s ਬੰਦ ਕਰੋ"
|
||||||
|
|
||||||
#. Button on the left side of the panel.
|
#. Button on the left side of the panel.
|
||||||
#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
|
#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
|
||||||
#: ../js/ui/panel.js:893
|
#: ../js/ui/panel.js:878
|
||||||
msgid "Activities"
|
msgid "Activities"
|
||||||
msgstr "ਸਰਗਰਮੀਆਂ"
|
msgstr "ਸਰਗਰਮੀਆਂ"
|
||||||
|
|
||||||
#: ../js/ui/panel.js:994
|
#: ../js/ui/panel.js:979
|
||||||
#| msgid "Cancel"
|
msgid "Top Bar"
|
||||||
msgid "Panel"
|
msgstr "ਉੱਤਲੀ ਪੱਟੀ"
|
||||||
msgstr "ਪੈਨਲ"
|
|
||||||
|
|
||||||
#: ../js/ui/placeDisplay.js:122
|
#: ../js/ui/placeDisplay.js:122
|
||||||
#, c-format
|
#, c-format
|
||||||
@ -584,64 +581,84 @@ msgstr "ਮੁੜ-ਕੋਸ਼ਿਸ਼"
|
|||||||
msgid "Connect to..."
|
msgid "Connect to..."
|
||||||
msgstr "...ਨਾਲ ਕੁਨੈਕਟ ਕਰੋ"
|
msgstr "...ਨਾਲ ਕੁਨੈਕਟ ਕਰੋ"
|
||||||
|
|
||||||
#: ../js/ui/placeDisplay.js:409
|
#: ../js/ui/placeDisplay.js:380
|
||||||
msgid "PLACES & DEVICES"
|
msgid "PLACES & DEVICES"
|
||||||
msgstr "ਥਾਵਾਂ ਤੇ ਜੰਤਰ"
|
msgstr "ਥਾਵਾਂ ਤੇ ਜੰਤਰ"
|
||||||
|
|
||||||
|
#: ../js/ui/polkitAuthenticationAgent.js:74
|
||||||
|
msgid "Authentication Required"
|
||||||
|
msgstr "ਪਰਮਾਣਕਿਤਾ ਚਾਹੀਦੀ ਹੈ"
|
||||||
|
|
||||||
|
#: ../js/ui/polkitAuthenticationAgent.js:108
|
||||||
|
msgid "Administrator"
|
||||||
|
msgstr "ਪਰਸ਼ਾਸ਼ਕ"
|
||||||
|
|
||||||
|
#: ../js/ui/polkitAuthenticationAgent.js:176
|
||||||
|
msgid "Authenticate"
|
||||||
|
msgstr "ਪਰਮਾਣਕਿਤਾ"
|
||||||
|
|
||||||
|
#: ../js/ui/polkitAuthenticationAgent.js:260
|
||||||
|
msgid "Sorry, that didn't work. Please try again."
|
||||||
|
msgstr "ਅਫਸੋਸ, ਉਹ ਕੰਮ ਨਹੀਂ ਕਰਦਾ। ਫੇਰ ਕੋਸ਼ਿਸ਼ ਕਰੋ ਜੀ।"
|
||||||
|
|
||||||
|
#: ../js/ui/polkitAuthenticationAgent.js:272
|
||||||
|
msgid "Password:"
|
||||||
|
msgstr "ਪਾਸਵਰਡ:"
|
||||||
|
|
||||||
#. Translators: this MUST be either "toggle-switch-us"
|
#. Translators: this MUST be either "toggle-switch-us"
|
||||||
#. (for toggle switches containing the English words
|
#. (for toggle switches containing the English words
|
||||||
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
||||||
#. switches containing "◯" and "|"). Other values will
|
#. switches containing "◯" and "|"). Other values will
|
||||||
#. simply result in invisible toggle switches.
|
#. simply result in invisible toggle switches.
|
||||||
#: ../js/ui/popupMenu.js:618
|
#: ../js/ui/popupMenu.js:679
|
||||||
msgid "toggle-switch-us"
|
msgid "toggle-switch-us"
|
||||||
msgstr "toggle-switch-us"
|
msgstr "toggle-switch-us"
|
||||||
|
|
||||||
#: ../js/ui/runDialog.js:201
|
#: ../js/ui/runDialog.js:205
|
||||||
msgid "Please enter a command:"
|
msgid "Please enter a command:"
|
||||||
msgstr "ਕਮਾਂਡ ਦਿਓ ਜੀ:"
|
msgstr "ਕਮਾਂਡ ਦਿਓ ਜੀ:"
|
||||||
|
|
||||||
#: ../js/ui/searchDisplay.js:283
|
#: ../js/ui/searchDisplay.js:310
|
||||||
msgid "Searching..."
|
msgid "Searching..."
|
||||||
msgstr "ਖੋਜ ਜਾਰੀ ਹੈ..."
|
msgstr "ਖੋਜ ਜਾਰੀ ਹੈ..."
|
||||||
|
|
||||||
#: ../js/ui/searchDisplay.js:297
|
#: ../js/ui/searchDisplay.js:324
|
||||||
msgid "No matching results."
|
msgid "No matching results."
|
||||||
msgstr "ਕੋਈ ਨਤੀਜਾ ਨਹੀਂ ਲੱਭਿਆ।"
|
msgstr "ਕੋਈ ਨਤੀਜਾ ਨਹੀਂ ਲੱਭਿਆ।"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:102 ../js/ui/statusMenu.js:166
|
#: ../js/ui/statusMenu.js:161 ../js/ui/statusMenu.js:228
|
||||||
msgid "Power Off..."
|
msgid "Power Off..."
|
||||||
msgstr "...ਬੰਦ ਕਰੋ"
|
msgstr "...ਬੰਦ ਕਰੋ"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:104 ../js/ui/statusMenu.js:165
|
#: ../js/ui/statusMenu.js:163 ../js/ui/statusMenu.js:227
|
||||||
msgid "Suspend"
|
msgid "Suspend"
|
||||||
msgstr "ਸਸਪੈਂਡ"
|
msgstr "ਸਸਪੈਂਡ"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:125
|
#: ../js/ui/statusMenu.js:184
|
||||||
msgid "Available"
|
msgid "Available"
|
||||||
msgstr "ਉਪਲੱਬਧ"
|
msgstr "ਉਪਲੱਬਧ"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:130
|
#: ../js/ui/statusMenu.js:189
|
||||||
msgid "Busy"
|
msgid "Busy"
|
||||||
msgstr "ਰੁਝਿਆ"
|
msgstr "ਰੁਝਿਆ"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:138
|
#: ../js/ui/statusMenu.js:197
|
||||||
msgid "My Account"
|
msgid "My Account"
|
||||||
msgstr "ਮੇਰਾ ਅਕਾਊਂਟ"
|
msgstr "ਮੇਰਾ ਅਕਾਊਂਟ"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:142
|
#: ../js/ui/statusMenu.js:201
|
||||||
msgid "System Settings"
|
msgid "System Settings"
|
||||||
msgstr "ਸਿਸਟਮ ਸੈਟਿੰਗ"
|
msgstr "ਸਿਸਟਮ ਸੈਟਿੰਗ"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:149
|
#: ../js/ui/statusMenu.js:208
|
||||||
msgid "Lock Screen"
|
msgid "Lock Screen"
|
||||||
msgstr "ਸਕਰੀਨ ਲਾਕ ਕਰੋ"
|
msgstr "ਸਕਰੀਨ ਲਾਕ ਕਰੋ"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:153
|
#: ../js/ui/statusMenu.js:213
|
||||||
msgid "Switch User"
|
msgid "Switch User"
|
||||||
msgstr "ਯੂਜ਼ਰ ਬਦਲੋ"
|
msgstr "ਯੂਜ਼ਰ ਬਦਲੋ"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:158
|
#: ../js/ui/statusMenu.js:218
|
||||||
msgid "Log Out..."
|
msgid "Log Out..."
|
||||||
msgstr "...ਲਾਗਆਉਟ"
|
msgstr "...ਲਾਗਆਉਟ"
|
||||||
|
|
||||||
@ -649,14 +666,12 @@ msgstr "...ਲਾਗਆਉਟ"
|
|||||||
msgid "Zoom"
|
msgid "Zoom"
|
||||||
msgstr "ਜ਼ੂਮ"
|
msgstr "ਜ਼ੂਮ"
|
||||||
|
|
||||||
#: ../js/ui/status/accessibility.js:69
|
#. let screenReader = this._buildItem(_("Screen Reader"), APPLICATIONS_SCHEMA,
|
||||||
msgid "Screen Reader"
|
#. 'screen-reader-enabled');
|
||||||
msgstr "ਸਕਰੀਨ ਰੀਡਰ"
|
#. this.menu.addMenuItem(screenReader);
|
||||||
|
#. let screenKeyboard = this._buildItem(_("Screen Keyboard"), APPLICATIONS_SCHEMA,
|
||||||
#: ../js/ui/status/accessibility.js:73
|
#. 'screen-keyboard-enabled');
|
||||||
msgid "Screen Keyboard"
|
#. this.menu.addMenuItem(screenKeyboard);
|
||||||
msgstr "ਸਕਰੀਨ ਕੀਬੋਰਡ"
|
|
||||||
|
|
||||||
#: ../js/ui/status/accessibility.js:77
|
#: ../js/ui/status/accessibility.js:77
|
||||||
msgid "Visual Alerts"
|
msgid "Visual Alerts"
|
||||||
msgstr "ਦਿੱਖ ਚੇਤਾਵਨੀ"
|
msgstr "ਦਿੱਖ ਚੇਤਾਵਨੀ"
|
||||||
@ -681,17 +696,17 @@ msgstr "ਮਾਊਸ ਸਵਿੱਚਾਂ"
|
|||||||
msgid "Universal Access Settings"
|
msgid "Universal Access Settings"
|
||||||
msgstr "ਯੂਨੀਵਰਸਲ ਅਸੈੱਸ ਸੈਟਿੰਗ"
|
msgstr "ਯੂਨੀਵਰਸਲ ਅਸੈੱਸ ਸੈਟਿੰਗ"
|
||||||
|
|
||||||
#: ../js/ui/status/accessibility.js:145
|
#: ../js/ui/status/accessibility.js:146
|
||||||
msgid "High Contrast"
|
msgid "High Contrast"
|
||||||
msgstr "ਵੱਧ ਕਨਟਰਾਸਟ"
|
msgstr "ਵੱਧ ਕਨਟਰਾਸਟ"
|
||||||
|
|
||||||
#: ../js/ui/status/accessibility.js:182
|
#: ../js/ui/status/accessibility.js:183
|
||||||
msgid "Large Text"
|
msgid "Large Text"
|
||||||
msgstr "ਵੱਡੇ ਅੱਖਰ"
|
msgstr "ਵੱਡੇ ਅੱਖਰ"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:241
|
#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:237
|
||||||
#: ../js/ui/status/bluetooth.js:337 ../js/ui/status/bluetooth.js:371
|
#: ../js/ui/status/bluetooth.js:333 ../js/ui/status/bluetooth.js:367
|
||||||
#: ../js/ui/status/bluetooth.js:411 ../js/ui/status/bluetooth.js:444
|
#: ../js/ui/status/bluetooth.js:407 ../js/ui/status/bluetooth.js:440
|
||||||
msgid "Bluetooth"
|
msgid "Bluetooth"
|
||||||
msgstr "ਬਲਿਊਟੁੱਥ"
|
msgstr "ਬਲਿਊਟੁੱਥ"
|
||||||
|
|
||||||
@ -711,94 +726,94 @@ msgstr "...ਨਵਾਂ ਜੰਤਰ ਸੈਟਅੱਪ"
|
|||||||
msgid "Bluetooth Settings"
|
msgid "Bluetooth Settings"
|
||||||
msgstr "ਬਲਿਊਟੁੱਥ ਸੈਟਿੰਗ"
|
msgstr "ਬਲਿਊਟੁੱਥ ਸੈਟਿੰਗ"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:192
|
#: ../js/ui/status/bluetooth.js:188
|
||||||
msgid "Connection"
|
msgid "Connection"
|
||||||
msgstr "ਕੁਨੈਕਸ਼ਨ"
|
msgstr "ਕੁਨੈਕਸ਼ਨ"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:228
|
#: ../js/ui/status/bluetooth.js:224
|
||||||
msgid "Send Files..."
|
msgid "Send Files..."
|
||||||
msgstr "...ਫਾਇਲਾਂ ਭੇਜੋ"
|
msgstr "...ਫਾਇਲਾਂ ਭੇਜੋ"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:233
|
#: ../js/ui/status/bluetooth.js:229
|
||||||
msgid "Browse Files..."
|
msgid "Browse Files..."
|
||||||
msgstr "...ਫਾਇਲਾਂ ਦੀ ਝਲਕ"
|
msgstr "...ਫਾਇਲਾਂ ਦੀ ਝਲਕ"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:242
|
#: ../js/ui/status/bluetooth.js:238
|
||||||
msgid "Error browsing device"
|
msgid "Error browsing device"
|
||||||
msgstr "ਜੰਤਰ ਬਰਾਊਜ਼ ਕਰਨ ਲਈ ਗਲਤੀ"
|
msgstr "ਜੰਤਰ ਬਰਾਊਜ਼ ਕਰਨ ਲਈ ਗਲਤੀ"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:243
|
#: ../js/ui/status/bluetooth.js:239
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "The requested device cannot be browsed, error is '%s'"
|
msgid "The requested device cannot be browsed, error is '%s'"
|
||||||
msgstr "ਮੰਗ ਕੀਤੇ ਗਏ ਜੰਤਰ ਨੂੰ ਬਰਾਊਜ਼ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ, ਗਲਤੀ ਸੀ '%s'"
|
msgstr "ਮੰਗ ਕੀਤੇ ਗਏ ਜੰਤਰ ਨੂੰ ਬਰਾਊਜ਼ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ, ਗਲਤੀ ਸੀ '%s'"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:251
|
#: ../js/ui/status/bluetooth.js:247
|
||||||
msgid "Keyboard Settings"
|
msgid "Keyboard Settings"
|
||||||
msgstr "ਕੀਬੋਰਡ ਸੈਟਿੰਗ"
|
msgstr "ਕੀਬੋਰਡ ਸੈਟਿੰਗ"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:256
|
#: ../js/ui/status/bluetooth.js:252
|
||||||
msgid "Mouse Settings"
|
msgid "Mouse Settings"
|
||||||
msgstr "ਮਾਊਸ ਸੈਟਿੰਗ"
|
msgstr "ਮਾਊਸ ਸੈਟਿੰਗ"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:263 ../js/ui/status/volume.js:65
|
#: ../js/ui/status/bluetooth.js:259 ../js/ui/status/volume.js:66
|
||||||
msgid "Sound Settings"
|
msgid "Sound Settings"
|
||||||
msgstr "ਸਾਊਂਡ ਸੈਟਿੰਗ"
|
msgstr "ਸਾਊਂਡ ਸੈਟਿੰਗ"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:372
|
#: ../js/ui/status/bluetooth.js:368
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Authorization request from %s"
|
msgid "Authorization request from %s"
|
||||||
msgstr "'%s' ਤੋਂ ਪਰਮਾਣਕਿਤਾ ਮੰਗ"
|
msgstr "'%s' ਤੋਂ ਪਰਮਾਣਕਿਤਾ ਮੰਗ"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:378
|
#: ../js/ui/status/bluetooth.js:374
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Device %s wants access to the service '%s'"
|
msgid "Device %s wants access to the service '%s'"
|
||||||
msgstr "ਜੰਤਰ %s ਸਰਵਿਸ '%s' ਨੂੰ ਵਰਤਣੀ ਚਾਹੁੰਦਾ ਹੈ।"
|
msgstr "ਜੰਤਰ %s ਸਰਵਿਸ '%s' ਨੂੰ ਵਰਤਣੀ ਚਾਹੁੰਦਾ ਹੈ।"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:380
|
#: ../js/ui/status/bluetooth.js:376
|
||||||
msgid "Always grant access"
|
msgid "Always grant access"
|
||||||
msgstr "ਹਮੇਸ਼ਾ ਪਹੁੰਚ ਮਨਜ਼ੂਰ"
|
msgstr "ਹਮੇਸ਼ਾ ਪਹੁੰਚ ਮਨਜ਼ੂਰ"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:381
|
#: ../js/ui/status/bluetooth.js:377
|
||||||
msgid "Grant this time only"
|
msgid "Grant this time only"
|
||||||
msgstr "ਕੇਵਲ ਇਸ ਸਮੇਂ ਹੀ ਮਨਜ਼ੂਰ"
|
msgstr "ਕੇਵਲ ਇਸ ਸਮੇਂ ਹੀ ਮਨਜ਼ੂਰ"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:382
|
#: ../js/ui/status/bluetooth.js:378
|
||||||
msgid "Reject"
|
msgid "Reject"
|
||||||
msgstr "ਨਾ-ਮਨਜ਼ੂਰ"
|
msgstr "ਨਾ-ਮਨਜ਼ੂਰ"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:412
|
#: ../js/ui/status/bluetooth.js:408
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Pairing confirmation for %s"
|
msgid "Pairing confirmation for %s"
|
||||||
msgstr "%s ਲਈ ਪੇਅਰ ਕਰਨ ਦੀ ਪੁਸ਼ਟੀ"
|
msgstr "%s ਲਈ ਪੇਅਰ ਕਰਨ ਦੀ ਪੁਸ਼ਟੀ"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:418 ../js/ui/status/bluetooth.js:452
|
#: ../js/ui/status/bluetooth.js:414 ../js/ui/status/bluetooth.js:448
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Device %s wants to pair with this computer"
|
msgid "Device %s wants to pair with this computer"
|
||||||
msgstr "ਜੰਤਰ %s ਇਸ ਕੰਪਿਊਟਰ ਨਾਲ ਪੇਅਰ ਹੋਣਾ ਚਾਹੁੰਦਾ ਹੈ"
|
msgstr "ਜੰਤਰ %s ਇਸ ਕੰਪਿਊਟਰ ਨਾਲ ਪੇਅਰ ਹੋਣਾ ਚਾਹੁੰਦਾ ਹੈ"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:419
|
#: ../js/ui/status/bluetooth.js:415
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Please confirm whether the PIN '%s' matches the one on the device."
|
msgid "Please confirm whether the PIN '%s' matches the one on the device."
|
||||||
msgstr "ਪੁਸ਼ਟੀ ਕਰੋ ਜੀ ਕਿ ਪਿੰਨ '%s' ਜੰਤਰ ਉੱਤੇ ਮੌਜੂਦ ਪਿੰਨ ਨਾਲ ਮਿਲਦਾ ਹੈ।"
|
msgstr "ਪੁਸ਼ਟੀ ਕਰੋ ਜੀ ਕਿ ਪਿੰਨ '%s' ਜੰਤਰ ਉੱਤੇ ਮੌਜੂਦ ਪਿੰਨ ਨਾਲ ਮਿਲਦਾ ਹੈ।"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:421
|
#: ../js/ui/status/bluetooth.js:417
|
||||||
msgid "Matches"
|
msgid "Matches"
|
||||||
msgstr "ਮਿਲਦਾ ਹੈ"
|
msgstr "ਮਿਲਦਾ ਹੈ"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:422
|
#: ../js/ui/status/bluetooth.js:418
|
||||||
msgid "Does not match"
|
msgid "Does not match"
|
||||||
msgstr "ਮਿਲਦਾ ਨਹੀਂ ਹੈ"
|
msgstr "ਮਿਲਦਾ ਨਹੀਂ ਹੈ"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:445
|
#: ../js/ui/status/bluetooth.js:441
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Pairing request for %s"
|
msgid "Pairing request for %s"
|
||||||
msgstr "%s ਲਈ ਪੇਅਰ ਕਰਨ ਦੀ ਮੰਗ"
|
msgstr "%s ਲਈ ਪੇਅਰ ਕਰਨ ਦੀ ਮੰਗ"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:453
|
#: ../js/ui/status/bluetooth.js:449
|
||||||
msgid "Please enter the PIN mentioned on the device."
|
msgid "Please enter the PIN mentioned on the device."
|
||||||
msgstr "ਜੰਤਰ ਉੱਤੇ ਦਿੱਤਾ ਗਿਆ ਪਿੰਨ ਦਿਉ ਜੀ।"
|
msgstr "ਜੰਤਰ ਉੱਤੇ ਦਿੱਤਾ ਗਿਆ ਪਿੰਨ ਦਿਉ ਜੀ।"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:469
|
#: ../js/ui/status/bluetooth.js:465
|
||||||
msgid "OK"
|
msgid "OK"
|
||||||
msgstr "ਠੀਕ ਹੈ"
|
msgstr "ਠੀਕ ਹੈ"
|
||||||
|
|
||||||
@ -810,17 +825,158 @@ msgstr "...ਕੀਬੋਰਡ ਲੇਆਉਟ ਵੇਖੋ"
|
|||||||
msgid "Localization Settings"
|
msgid "Localization Settings"
|
||||||
msgstr "ਲੋਕਲਾਈਜ਼ੇਸ਼ਨ ਸੈਟਿੰਗ"
|
msgstr "ਲੋਕਲਾਈਜ਼ੇਸ਼ਨ ਸੈਟਿੰਗ"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:102 ../js/ui/status/network.js:1393
|
||||||
|
#| msgid "Unknown"
|
||||||
|
msgid "<unknown>"
|
||||||
|
msgstr "<ਅਣਜਾਣ>"
|
||||||
|
|
||||||
|
#. Translators: this indicates that wireless or wwan is disabled by hardware killswitch
|
||||||
|
#: ../js/ui/status/network.js:295
|
||||||
|
#| msgid "Disabled"
|
||||||
|
msgid "disabled"
|
||||||
|
msgstr "ਬੰਦ ਹੈ"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:476
|
||||||
|
#| msgid "Connection"
|
||||||
|
msgid "connecting..."
|
||||||
|
msgstr "ਕੁਨੈਕਟ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ..."
|
||||||
|
|
||||||
|
#. Translators: this is for network connections that require some kind of key or password
|
||||||
|
#: ../js/ui/status/network.js:479
|
||||||
|
msgid "authentication required"
|
||||||
|
msgstr "ਪਰਮਾਣਕਿਤਾ ਚਾਹੀਦੀ ਹੈ"
|
||||||
|
|
||||||
|
#. Translators: this is for wired network devices that are physically disconnected
|
||||||
|
#: ../js/ui/status/network.js:485
|
||||||
|
msgid "cable unplugged"
|
||||||
|
msgstr "ਕੇਬਲ ਕੱਢੀ ਹੋਈ ਹੈ"
|
||||||
|
|
||||||
|
#. Translators: this is for a network device that cannot be activated (for example it
|
||||||
|
#. is disabled by rfkill, or it has no coverage
|
||||||
|
#: ../js/ui/status/network.js:489
|
||||||
|
#| msgid "Available"
|
||||||
|
msgid "unavailable"
|
||||||
|
msgstr "ਨਾ-ਉਪਲੱਬਧ"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:491
|
||||||
|
#| msgid "Connection"
|
||||||
|
msgid "connection failed"
|
||||||
|
msgstr "ਕੁਨੈਕਸ਼ਨ ਫੇਲ੍ਹ ਹੈ"
|
||||||
|
|
||||||
|
#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
|
||||||
|
#. and we cannot access its settings (including the name)
|
||||||
|
#: ../js/ui/status/network.js:571 ../js/ui/status/network.js:1341
|
||||||
|
msgid "Connected (private)"
|
||||||
|
msgstr "ਕੁਨੈਕਟ ਹੈ (ਪ੍ਰਾਈਵੇਟ)"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:636
|
||||||
|
msgid "Auto Ethernet"
|
||||||
|
msgstr "ਆਟੋ ਈਥਰਨੈੱਟ"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:697
|
||||||
|
msgid "Auto broadband"
|
||||||
|
msgstr "ਆਟੋ ਬਰਾਡਬੈਂਡ"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:700
|
||||||
|
msgid "Auto dial-up"
|
||||||
|
msgstr "ਆਟੋ ਡਾਇਲ-ਅੱਪ"
|
||||||
|
|
||||||
|
#. TRANSLATORS: this the automatic wireless connection name (including the network name)
|
||||||
|
#: ../js/ui/status/network.js:843 ../js/ui/status/network.js:1353
|
||||||
|
#, c-format
|
||||||
|
#| msgid "Quit %s"
|
||||||
|
msgid "Auto %s"
|
||||||
|
msgstr "ਆਟੋ %s"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:845
|
||||||
|
#| msgid "Bluetooth"
|
||||||
|
msgid "Auto bluetooth"
|
||||||
|
msgstr "ਆਟੋ ਬਲਿਊਟੁੱਥ"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1355
|
||||||
|
msgid "Auto wireless"
|
||||||
|
msgstr "ਆਟੋ ਬੇਤਾਰ"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1413
|
||||||
|
#| msgid "More"
|
||||||
|
msgid "More..."
|
||||||
|
msgstr "ਹੋਰ..."
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1436
|
||||||
|
msgid "Enable networking"
|
||||||
|
msgstr "ਨੈੱਟਵਰਕਿੰਗ ਚਾਲੂ ਹੈ"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1448
|
||||||
|
msgid "Wired"
|
||||||
|
msgstr "ਤਾਰ"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1459
|
||||||
|
msgid "Wireless"
|
||||||
|
msgstr "ਬੇਤਾਰ"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1469
|
||||||
|
msgid "Mobile broadband"
|
||||||
|
msgstr "ਮੋਬਾਇਲ ਬਰਾਡਬੈਂਡ"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1479
|
||||||
|
#| msgid "Connection"
|
||||||
|
msgid "VPN Connections"
|
||||||
|
msgstr "VPN ਕੁਨੈਕਸ਼ਨ"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1488
|
||||||
|
#| msgid "Power Settings"
|
||||||
|
msgid "Network Settings"
|
||||||
|
msgstr "ਨੈੱਟਵਰਕ ਸੈਟਿੰਗ"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1783
|
||||||
|
#, c-format
|
||||||
|
msgid "You're now connected to mobile broadband connection '%s'"
|
||||||
|
msgstr "ਹੁਣ ਤੁਸੀਂ ਮੋਬਾਇਲ ਬਰਾਡਬੈਂਡ ਨੈੱਟਵਰਕ '%s' ਨਾਲ ਕੁਨੈਕਟ ਹੋ ਗਏ ਹੋ"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1787
|
||||||
|
#, c-format
|
||||||
|
msgid "You're now connected to wireless network '%s'"
|
||||||
|
msgstr "ਹੁਣ ਤੁਸੀਂ ਬੇਤਾਰ ਨੈੱਟਵਰਕ '%s' ਨਾਲ ਕੁਨੈਕਟ ਹੋ ਗਏ ਹੋ"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1791
|
||||||
|
#, c-format
|
||||||
|
msgid "You're now connected to wired network '%s'"
|
||||||
|
msgstr "ਹੁਣ ਤੁਸੀਂ ਤਾਰ ਵਾਲੇ ਨੈੱਟਵਰਕ '%s' ਨਾਲ ਕੁਨੈਕਟ ਹੋ ਗਏ ਹੋ"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1795
|
||||||
|
#, c-format
|
||||||
|
msgid "You're now connected to VPN network '%s'"
|
||||||
|
msgstr "ਤੁਸੀਂ ਹੁਣ VPN ਨੈੱਟਵਰਕ '%s' ਨਾਲ ਕੁਨੈਕਟ ਹੋ ਚੁੱਕੇ ਹੋ"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1800
|
||||||
|
#, c-format
|
||||||
|
msgid "You're now connected to '%s'"
|
||||||
|
msgstr "ਤੁਸੀਂ ਹੁਣ '%s' ਨਾਲ ਕੁਨੈਕਟ ਹੋ"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1808
|
||||||
|
#| msgid "Connection"
|
||||||
|
msgid "Connection established"
|
||||||
|
msgstr "ਕੁਨੈਕਸ਼ਨ ਬਣਾਇਆ ਗਿਆ"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1930
|
||||||
|
msgid "Networking is disabled"
|
||||||
|
msgstr "ਨੈੱਟਵਰਕਿੰਗ ਬੰਦ ਹੈ"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:2055
|
||||||
|
msgid "Network Manager"
|
||||||
|
msgstr "ਨੈੱਟਵਰਕ ਮੈਨੇਜਰ"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:85
|
#: ../js/ui/status/power.js:85
|
||||||
msgid "Power Settings"
|
msgid "Power Settings"
|
||||||
msgstr "ਪਾਵਰ ਸੈਟਿੰਗ"
|
msgstr "ਪਾਵਰ ਸੈਟਿੰਗ"
|
||||||
|
|
||||||
#. 0 is reported when UPower does not have enough data
|
#. 0 is reported when UPower does not have enough data
|
||||||
#. to estimate battery life
|
#. to estimate battery life
|
||||||
#: ../js/ui/status/power.js:110
|
#: ../js/ui/status/power.js:111
|
||||||
msgid "Estimating..."
|
msgid "Estimating..."
|
||||||
msgstr "...ਅਨੁਮਾਨ ਲਾਇਆ ਜਾ ਰਿਹਾ ਹੈ"
|
msgstr "...ਅਨੁਮਾਨ ਲਾਇਆ ਜਾ ਰਿਹਾ ਹੈ"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:117
|
#: ../js/ui/status/power.js:118
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d hour remaining"
|
msgid "%d hour remaining"
|
||||||
msgid_plural "%d hours remaining"
|
msgid_plural "%d hours remaining"
|
||||||
@ -828,102 +984,102 @@ msgstr[0] "%d ਘੰਟਾ ਬਾਕੀ"
|
|||||||
msgstr[1] "%d ਘੰਟੇ ਬਾਕੀ"
|
msgstr[1] "%d ਘੰਟੇ ਬਾਕੀ"
|
||||||
|
|
||||||
#. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining"
|
#. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining"
|
||||||
#: ../js/ui/status/power.js:120
|
#: ../js/ui/status/power.js:121
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d %s %d %s remaining"
|
msgid "%d %s %d %s remaining"
|
||||||
msgstr "%d %s %d %s ਬਾਕੀ"
|
msgstr "%d %s %d %s ਬਾਕੀ"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:122
|
#: ../js/ui/status/power.js:123
|
||||||
msgid "hour"
|
msgid "hour"
|
||||||
msgid_plural "hours"
|
msgid_plural "hours"
|
||||||
msgstr[0] "ਘੰਟਾ"
|
msgstr[0] "ਘੰਟਾ"
|
||||||
msgstr[1] "ਘੰਟੇ"
|
msgstr[1] "ਘੰਟੇ"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:122
|
#: ../js/ui/status/power.js:123
|
||||||
msgid "minute"
|
msgid "minute"
|
||||||
msgid_plural "minutes"
|
msgid_plural "minutes"
|
||||||
msgstr[0] "ਮਿੰਟ"
|
msgstr[0] "ਮਿੰਟ"
|
||||||
msgstr[1] "ਮਿੰਟ"
|
msgstr[1] "ਮਿੰਟ"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:125
|
#: ../js/ui/status/power.js:126
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d minute remaining"
|
msgid "%d minute remaining"
|
||||||
msgid_plural "%d minutes remaining"
|
msgid_plural "%d minutes remaining"
|
||||||
msgstr[0] "%d ਮਿੰਟ ਬਾਕੀ"
|
msgstr[0] "%d ਮਿੰਟ ਬਾਕੀ"
|
||||||
msgstr[1] "%d ਮਿੰਟ ਬਾਕੀ"
|
msgstr[1] "%d ਮਿੰਟ ਬਾਕੀ"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:227
|
#: ../js/ui/status/power.js:228
|
||||||
msgid "AC adapter"
|
msgid "AC adapter"
|
||||||
msgstr "AC ਐਡਪਟਰ"
|
msgstr "AC ਐਡਪਟਰ"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:229
|
#: ../js/ui/status/power.js:230
|
||||||
msgid "Laptop battery"
|
msgid "Laptop battery"
|
||||||
msgstr "ਲੈਪਟਾਪ ਬੈਟਰੀ"
|
msgstr "ਲੈਪਟਾਪ ਬੈਟਰੀ"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:231
|
#: ../js/ui/status/power.js:232
|
||||||
msgid "UPS"
|
msgid "UPS"
|
||||||
msgstr "UPS"
|
msgstr "UPS"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:233
|
#: ../js/ui/status/power.js:234
|
||||||
msgid "Monitor"
|
msgid "Monitor"
|
||||||
msgstr "ਮਾਨੀਟਰ"
|
msgstr "ਮਾਨੀਟਰ"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:235
|
#: ../js/ui/status/power.js:236
|
||||||
msgid "Mouse"
|
msgid "Mouse"
|
||||||
msgstr "ਮਾਊਸ"
|
msgstr "ਮਾਊਸ"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:237
|
#: ../js/ui/status/power.js:238
|
||||||
msgid "Keyboard"
|
msgid "Keyboard"
|
||||||
msgstr "ਕੀਬੋਰਡ"
|
msgstr "ਕੀਬੋਰਡ"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:239
|
#: ../js/ui/status/power.js:240
|
||||||
msgid "PDA"
|
msgid "PDA"
|
||||||
msgstr "PDA"
|
msgstr "PDA"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:241
|
#: ../js/ui/status/power.js:242
|
||||||
msgid "Cell phone"
|
msgid "Cell phone"
|
||||||
msgstr "ਸੈੱਲ ਫੋਨ"
|
msgstr "ਸੈੱਲ ਫੋਨ"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:243
|
#: ../js/ui/status/power.js:244
|
||||||
msgid "Media player"
|
msgid "Media player"
|
||||||
msgstr "ਮੀਡਿਆ ਪਲੇਅਰ"
|
msgstr "ਮੀਡਿਆ ਪਲੇਅਰ"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:245
|
#: ../js/ui/status/power.js:246
|
||||||
msgid "Tablet"
|
msgid "Tablet"
|
||||||
msgstr "ਟੇਬਲੇਟ"
|
msgstr "ਟੇਬਲੇਟ"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:247
|
#: ../js/ui/status/power.js:248
|
||||||
msgid "Computer"
|
msgid "Computer"
|
||||||
msgstr "ਕੰਪਿਊਟਰ"
|
msgstr "ਕੰਪਿਊਟਰ"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:249 ../src/shell-app-system.c:1013
|
#: ../js/ui/status/power.js:250 ../src/shell-app-system.c:1088
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "ਅਣਜਾਣ"
|
msgstr "ਅਣਜਾਣ"
|
||||||
|
|
||||||
#: ../js/ui/status/volume.js:44
|
#: ../js/ui/status/volume.js:45
|
||||||
msgid "Volume"
|
msgid "Volume"
|
||||||
msgstr "ਆਵਾਜ਼"
|
msgstr "ਆਵਾਜ਼"
|
||||||
|
|
||||||
#: ../js/ui/status/volume.js:57
|
#: ../js/ui/status/volume.js:58
|
||||||
msgid "Microphone"
|
msgid "Microphone"
|
||||||
msgstr "ਮਾਈਕਰੋਫੋਨ"
|
msgstr "ਮਾਈਕਰੋਫੋਨ"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:239
|
#: ../js/ui/telepathyClient.js:332
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is online."
|
msgid "%s is online."
|
||||||
msgstr "%s ਆਨਲਾਈਨ ਹੈ।"
|
msgstr "%s ਆਨਲਾਈਨ ਹੈ।"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:244
|
#: ../js/ui/telepathyClient.js:337
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is offline."
|
msgid "%s is offline."
|
||||||
msgstr "%s ਆਫਲਾਈਨ ਹੈ।"
|
msgstr "%s ਆਫਲਾਈਨ ਹੈ।"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:247
|
#: ../js/ui/telepathyClient.js:340
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is away."
|
msgid "%s is away."
|
||||||
msgstr "%s ਦੂਰ ਹੈ।"
|
msgstr "%s ਦੂਰ ਹੈ।"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:250
|
#: ../js/ui/telepathyClient.js:343
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is busy."
|
msgid "%s is busy."
|
||||||
msgstr "%s ਰੁੱਝਿਆ/ਰੁੱਝੀ ਹੈ।"
|
msgstr "%s ਰੁੱਝਿਆ/ਰੁੱਝੀ ਹੈ।"
|
||||||
@ -931,7 +1087,7 @@ msgstr "%s ਰੁੱਝਿਆ/ਰੁੱਝੀ ਹੈ।"
|
|||||||
#. Translators: this is a time format string followed by a date.
|
#. Translators: this is a time format string followed by a date.
|
||||||
#. If applicable, replace %X with a strftime format valid for your
|
#. If applicable, replace %X with a strftime format valid for your
|
||||||
#. locale, without seconds.
|
#. locale, without seconds.
|
||||||
#: ../js/ui/telepathyClient.js:348
|
#: ../js/ui/telepathyClient.js:474
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent at %X on %A"
|
msgid "Sent at %X on %A"
|
||||||
msgstr "%2$A ਨੂੰ %1$X ਵਜੇ ਭੇਜਿਆ"
|
msgstr "%2$A ਨੂੰ %1$X ਵਜੇ ਭੇਜਿਆ"
|
||||||
@ -940,11 +1096,11 @@ msgstr "%2$A ਨੂੰ %1$X ਵਜੇ ਭੇਜਿਆ"
|
|||||||
#. in the search entry when no search is
|
#. in the search entry when no search is
|
||||||
#. active; it should not exceed ~30
|
#. active; it should not exceed ~30
|
||||||
#. characters.
|
#. characters.
|
||||||
#: ../js/ui/viewSelector.js:117
|
#: ../js/ui/viewSelector.js:122
|
||||||
msgid "Type to search..."
|
msgid "Type to search..."
|
||||||
msgstr "...ਲੱਭਣ ਲਈ ਲਿਖੋ"
|
msgstr "...ਲੱਭਣ ਲਈ ਲਿਖੋ"
|
||||||
|
|
||||||
#: ../js/ui/viewSelector.js:137 ../src/shell-util.c:250
|
#: ../js/ui/viewSelector.js:142 ../src/shell-util.c:250
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "ਖੋਜ"
|
msgstr "ਖੋਜ"
|
||||||
|
|
||||||
@ -960,7 +1116,7 @@ msgstr "'%s' ਤਿਆਰ ਹੈ"
|
|||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The number of sound outputs on a particular device
|
#. * The number of sound outputs on a particular device
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1094
|
#: ../src/gvc/gvc-mixer-control.c:1098
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%u Output"
|
msgid "%u Output"
|
||||||
msgid_plural "%u Outputs"
|
msgid_plural "%u Outputs"
|
||||||
@ -969,51 +1125,68 @@ msgstr[1] "%u ਆਉਟਪੁੱਟ"
|
|||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The number of sound inputs on a particular device
|
#. * The number of sound inputs on a particular device
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1104
|
#: ../src/gvc/gvc-mixer-control.c:1108
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%u Input"
|
msgid "%u Input"
|
||||||
msgid_plural "%u Inputs"
|
msgid_plural "%u Inputs"
|
||||||
msgstr[0] "%u ਇੰਪੁੱਟ"
|
msgstr[0] "%u ਇੰਪੁੱਟ"
|
||||||
msgstr[1] "%u ਇੰਪੁੱਟ"
|
msgstr[1] "%u ਇੰਪੁੱਟ"
|
||||||
|
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1402
|
#: ../src/gvc/gvc-mixer-control.c:1406
|
||||||
msgid "System Sounds"
|
msgid "System Sounds"
|
||||||
msgstr "ਸਿਸਟਮ ਸਾਊਂਡ"
|
msgstr "ਸਿਸਟਮ ਸਾਊਂਡ"
|
||||||
|
|
||||||
#: ../src/shell-global.c:1298
|
#: ../src/main.c:446
|
||||||
|
msgid "Print version"
|
||||||
|
msgstr "ਵਰਜਨ ਛਾਪੋ"
|
||||||
|
|
||||||
|
#: ../src/shell-app.c:454
|
||||||
|
#, c-format
|
||||||
|
#| msgid "Failed to unmount '%s'"
|
||||||
|
msgid "Failed to launch '%s'"
|
||||||
|
msgstr "'%s' ਚਲਾਉਣ ਲਈ ਫੇਲ੍ਹ"
|
||||||
|
|
||||||
|
#: ../src/shell-global.c:1395
|
||||||
msgid "Less than a minute ago"
|
msgid "Less than a minute ago"
|
||||||
msgstr "ਇੱਕ ਮਿੰਟ ਤੋਂ ਘੱਟ ਚਿਰ ਪਹਿਲਾਂ"
|
msgstr "ਇੱਕ ਮਿੰਟ ਤੋਂ ਘੱਟ ਚਿਰ ਪਹਿਲਾਂ"
|
||||||
|
|
||||||
#: ../src/shell-global.c:1302
|
#: ../src/shell-global.c:1399
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d minute ago"
|
msgid "%d minute ago"
|
||||||
msgid_plural "%d minutes ago"
|
msgid_plural "%d minutes ago"
|
||||||
msgstr[0] "%d ਮਿੰਟ ਪਹਿਲਾਂ"
|
msgstr[0] "%d ਮਿੰਟ ਪਹਿਲਾਂ"
|
||||||
msgstr[1] "%d ਮਿੰਟ ਪਹਿਲਾਂ"
|
msgstr[1] "%d ਮਿੰਟ ਪਹਿਲਾਂ"
|
||||||
|
|
||||||
#: ../src/shell-global.c:1307
|
#: ../src/shell-global.c:1404
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d hour ago"
|
msgid "%d hour ago"
|
||||||
msgid_plural "%d hours ago"
|
msgid_plural "%d hours ago"
|
||||||
msgstr[0] "%d ਘੰਟਾ ਪਹਿਲਾਂ"
|
msgstr[0] "%d ਘੰਟਾ ਪਹਿਲਾਂ"
|
||||||
msgstr[1] "%d ਘੰਟੇ ਪਹਿਲਾਂ"
|
msgstr[1] "%d ਘੰਟੇ ਪਹਿਲਾਂ"
|
||||||
|
|
||||||
#: ../src/shell-global.c:1312
|
#: ../src/shell-global.c:1409
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d day ago"
|
msgid "%d day ago"
|
||||||
msgid_plural "%d days ago"
|
msgid_plural "%d days ago"
|
||||||
msgstr[0] "%d ਦਿਨ ਪਹਿਲਾਂ"
|
msgstr[0] "%d ਦਿਨ ਪਹਿਲਾਂ"
|
||||||
msgstr[1] "%d ਦਿਨ ਪਹਿਲਾਂ"
|
msgstr[1] "%d ਦਿਨ ਪਹਿਲਾਂ"
|
||||||
|
|
||||||
#: ../src/shell-global.c:1317
|
#: ../src/shell-global.c:1414
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d week ago"
|
msgid "%d week ago"
|
||||||
msgid_plural "%d weeks ago"
|
msgid_plural "%d weeks ago"
|
||||||
msgstr[0] "%d ਹਫ਼ਤਾ ਪਹਿਲਾਂ"
|
msgstr[0] "%d ਹਫ਼ਤਾ ਪਹਿਲਾਂ"
|
||||||
msgstr[1] "%d ਹਫ਼ਤੇ ਪਹਿਲਾਂ"
|
msgstr[1] "%d ਹਫ਼ਤੇ ਪਹਿਲਾਂ"
|
||||||
|
|
||||||
|
#: ../src/shell-mobile-providers.c:80
|
||||||
|
msgid "United Kingdom"
|
||||||
|
msgstr "ਬਰਤਾਨੀਆ"
|
||||||
|
|
||||||
|
#: ../src/shell-mobile-providers.c:526
|
||||||
|
msgid "Default"
|
||||||
|
msgstr "ਡਿਫਾਲਟ"
|
||||||
|
|
||||||
#: ../src/shell-polkit-authentication-agent.c:334
|
#: ../src/shell-polkit-authentication-agent.c:334
|
||||||
#| msgid "Authentation dialog was dismissed by the user"
|
|
||||||
msgid "Authentication dialog was dismissed by the user"
|
msgid "Authentication dialog was dismissed by the user"
|
||||||
msgstr "ਪਰਮਾਣਕਿਤਾ ਡਾਈਲਾਗ ਯੂਜ਼ਰ ਵਲੋਂ ਰੱਦ ਕੀਤਾ"
|
msgstr "ਪਰਮਾਣਕਿਤਾ ਡਾਈਲਾਗ ਯੂਜ਼ਰ ਵਲੋਂ ਰੱਦ ਕੀਤਾ"
|
||||||
|
|
||||||
@ -1037,6 +1210,34 @@ msgstr "ਫਾਇਲ ਸਿਸਟਮ"
|
|||||||
msgid "%1$s: %2$s"
|
msgid "%1$s: %2$s"
|
||||||
msgstr "%1$s: %2$s"
|
msgstr "%1$s: %2$s"
|
||||||
|
|
||||||
|
#~ msgid "No such application"
|
||||||
|
#~ msgstr "ਇੰਞ ਦੀ ਕੋਈ ਐਪਲੀਕੇਸ਼ਨ ਨਹੀਂ ਹੈ"
|
||||||
|
|
||||||
|
#~ msgid "Shut Down"
|
||||||
|
#~ msgstr "ਬੰਦ ਕਰੋ"
|
||||||
|
|
||||||
|
#~ msgid "Click Shut Down to quit these applications and shut down the system."
|
||||||
|
#~ msgstr "ਇਹ ਐਪਲੀਕੇਸ਼ਨ ਬੰਦ ਕਰਕੇ ਸਿਸਟਮ ਨੂੰ ਬੰਦ ਕਰਨ ਲਈ ਬੰਦ ਕਰੋ ਨੂੰ ਕਲਿੱਕ ਕਰੋ।"
|
||||||
|
|
||||||
|
#~ msgid "The system will shut down automatically in %d seconds."
|
||||||
|
#~ msgstr "ਸਿਸਟਮ ਨੂੰ ਆਟੋਮੈਟਿਕ ਹੀ %d ਸਕਿੰਟਾਂ ਵਿੱਚ ਬੰਦ ਕੀਤਾ ਜਾਵੇਗਾ।"
|
||||||
|
|
||||||
|
#~ msgid "Shutting down the system."
|
||||||
|
#~ msgstr "ਸਿਸਟਮ ਬੰਦ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ।"
|
||||||
|
|
||||||
|
#~ msgid "Confirm"
|
||||||
|
#~ msgstr "ਪੁਸ਼ਟੀ"
|
||||||
|
|
||||||
|
#~| msgid "Cancel"
|
||||||
|
#~ msgid "Panel"
|
||||||
|
#~ msgstr "ਪੈਨਲ"
|
||||||
|
|
||||||
|
#~ msgid "Screen Reader"
|
||||||
|
#~ msgstr "ਸਕਰੀਨ ਰੀਡਰ"
|
||||||
|
|
||||||
|
#~ msgid "Screen Keyboard"
|
||||||
|
#~ msgstr "ਸਕਰੀਨ ਕੀਬੋਰਡ"
|
||||||
|
|
||||||
#~ msgid "PREFERENCES"
|
#~ msgid "PREFERENCES"
|
||||||
#~ msgstr "ਪਸੰਦ"
|
#~ msgstr "ਪਸੰਦ"
|
||||||
|
|
||||||
@ -1246,9 +1447,6 @@ msgstr "%1$s: %2$s"
|
|||||||
#~ msgid "Frequent"
|
#~ msgid "Frequent"
|
||||||
#~ msgstr "ਅਕਸਰ"
|
#~ msgstr "ਅਕਸਰ"
|
||||||
|
|
||||||
#~ msgid "More"
|
|
||||||
#~ msgstr "ਹੋਰ"
|
|
||||||
|
|
||||||
#~ msgid "(see all)"
|
#~ msgid "(see all)"
|
||||||
#~ msgstr "(ਸਭ ਵੇਖੋ)"
|
#~ msgstr "(ਸਭ ਵੇਖੋ)"
|
||||||
|
|
||||||
|
345
po/pl.po
345
po/pl.po
@ -8,8 +8,8 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gnome-shell\n"
|
"Project-Id-Version: gnome-shell\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2011-03-09 21:48+0100\n"
|
"POT-Creation-Date: 2011-03-19 16:19+0100\n"
|
||||||
"PO-Revision-Date: 2011-03-09 21:49+0100\n"
|
"PO-Revision-Date: 2011-03-19 16:20+0100\n"
|
||||||
"Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n"
|
"Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n"
|
||||||
"Language-Team: Polish <gnomepl@aviary.pl>\n"
|
"Language-Team: Polish <gnomepl@aviary.pl>\n"
|
||||||
"Language: pl\n"
|
"Language: pl\n"
|
||||||
@ -176,21 +176,17 @@ msgstr "Określa, czy zbierać statystyki o użyciu programów"
|
|||||||
msgid "disabled OpenSearch providers"
|
msgid "disabled OpenSearch providers"
|
||||||
msgstr "Wyłączeni dostawcy OpenSearch"
|
msgstr "Wyłączeni dostawcy OpenSearch"
|
||||||
|
|
||||||
#: ../js/misc/util.js:86
|
#: ../js/misc/util.js:71
|
||||||
msgid "Command not found"
|
msgid "Command not found"
|
||||||
msgstr "Nie odnaleziono polecenia"
|
msgstr "Nie odnaleziono polecenia"
|
||||||
|
|
||||||
#. Replace "Error invoking GLib.shell_parse_argv: " with
|
#. Replace "Error invoking GLib.shell_parse_argv: " with
|
||||||
#. something nicer
|
#. something nicer
|
||||||
#: ../js/misc/util.js:113
|
#: ../js/misc/util.js:98
|
||||||
msgid "Could not parse command:"
|
msgid "Could not parse command:"
|
||||||
msgstr "Nie można przetworzyć polecenia:"
|
msgstr "Nie można przetworzyć polecenia:"
|
||||||
|
|
||||||
#: ../js/misc/util.js:135
|
#: ../js/misc/util.js:106
|
||||||
msgid "No such application"
|
|
||||||
msgstr "Nie ma takiego programu"
|
|
||||||
|
|
||||||
#: ../js/misc/util.js:148
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Execution of '%s' failed:"
|
msgid "Execution of '%s' failed:"
|
||||||
msgstr "Wykonanie polecenia \"%s\" się nie powiodło:"
|
msgstr "Wykonanie polecenia \"%s\" się nie powiodło:"
|
||||||
@ -208,15 +204,15 @@ msgstr "Programy"
|
|||||||
msgid "SETTINGS"
|
msgid "SETTINGS"
|
||||||
msgstr "Ustawienia"
|
msgstr "Ustawienia"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:612
|
#: ../js/ui/appDisplay.js:616
|
||||||
msgid "New Window"
|
msgid "New Window"
|
||||||
msgstr "Nowe okno"
|
msgstr "Nowe okno"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:615
|
#: ../js/ui/appDisplay.js:619
|
||||||
msgid "Remove from Favorites"
|
msgid "Remove from Favorites"
|
||||||
msgstr "Usuń z ulubionych"
|
msgstr "Usuń z ulubionych"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:616
|
#: ../js/ui/appDisplay.js:620
|
||||||
msgid "Add to Favorites"
|
msgid "Add to Favorites"
|
||||||
msgstr "Dodaj do ulubionych"
|
msgstr "Dodaj do ulubionych"
|
||||||
|
|
||||||
@ -376,7 +372,7 @@ msgstr "Ten tydzień"
|
|||||||
msgid "Next week"
|
msgid "Next week"
|
||||||
msgstr "Następny tydzień"
|
msgstr "Następny tydzień"
|
||||||
|
|
||||||
#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:931
|
#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:933
|
||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "Usuń"
|
msgstr "Usuń"
|
||||||
|
|
||||||
@ -431,7 +427,7 @@ msgstr "%a, %l:%M %p"
|
|||||||
#. Translators: This is the date format to use when the calendar popup is
|
#. 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").
|
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
|
||||||
#.
|
#.
|
||||||
#: ../js/ui/dateMenu.js:209
|
#: ../js/ui/dateMenu.js:194
|
||||||
msgid "%A %B %e, %Y"
|
msgid "%A %B %e, %Y"
|
||||||
msgstr "%A %e %B, %Y"
|
msgstr "%A %e %B, %Y"
|
||||||
|
|
||||||
@ -507,7 +503,7 @@ msgstr "Ponowne uruchamianie systemu."
|
|||||||
msgid "Confirm"
|
msgid "Confirm"
|
||||||
msgstr "Potwierdź"
|
msgstr "Potwierdź"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:400 ../js/ui/status/bluetooth.js:470
|
#: ../js/ui/endSessionDialog.js:400 ../js/ui/status/bluetooth.js:466
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Anuluj"
|
msgstr "Anuluj"
|
||||||
|
|
||||||
@ -521,7 +517,7 @@ msgstr "Włączone"
|
|||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The device has been disabled
|
#. * The device has been disabled
|
||||||
#: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1087
|
#: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1091
|
||||||
msgid "Disabled"
|
msgid "Disabled"
|
||||||
msgstr "Wyłączone"
|
msgstr "Wyłączone"
|
||||||
|
|
||||||
@ -541,11 +537,11 @@ msgstr "Wyświetl źródło"
|
|||||||
msgid "Web Page"
|
msgid "Web Page"
|
||||||
msgstr "Strona WWW"
|
msgstr "Strona WWW"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:924
|
#: ../js/ui/messageTray.js:926
|
||||||
msgid "Open"
|
msgid "Open"
|
||||||
msgstr "Otwórz"
|
msgstr "Otwórz"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1961
|
#: ../js/ui/messageTray.js:1986
|
||||||
msgid "System Information"
|
msgid "System Information"
|
||||||
msgstr "Informacje systemowe"
|
msgstr "Informacje systemowe"
|
||||||
|
|
||||||
@ -568,18 +564,18 @@ msgid "Dash"
|
|||||||
msgstr "Ulubione"
|
msgstr "Ulubione"
|
||||||
|
|
||||||
#. TODO - _quit() doesn't really work on apps in state STARTING yet
|
#. TODO - _quit() doesn't really work on apps in state STARTING yet
|
||||||
#: ../js/ui/panel.js:560
|
#: ../js/ui/panel.js:515
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Quit %s"
|
msgid "Quit %s"
|
||||||
msgstr "Zakończ program %s"
|
msgstr "Zakończ program %s"
|
||||||
|
|
||||||
#. Button on the left side of the panel.
|
#. Button on the left side of the panel.
|
||||||
#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
|
#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
|
||||||
#: ../js/ui/panel.js:919
|
#: ../js/ui/panel.js:874
|
||||||
msgid "Activities"
|
msgid "Activities"
|
||||||
msgstr "Podgląd"
|
msgstr "Podgląd"
|
||||||
|
|
||||||
#: ../js/ui/panel.js:1020
|
#: ../js/ui/panel.js:975
|
||||||
msgid "Panel"
|
msgid "Panel"
|
||||||
msgstr "Panel"
|
msgstr "Panel"
|
||||||
|
|
||||||
@ -596,7 +592,7 @@ msgstr "Ponów"
|
|||||||
msgid "Connect to..."
|
msgid "Connect to..."
|
||||||
msgstr "Połącz z..."
|
msgstr "Połącz z..."
|
||||||
|
|
||||||
#: ../js/ui/placeDisplay.js:409
|
#: ../js/ui/placeDisplay.js:380
|
||||||
msgid "PLACES & DEVICES"
|
msgid "PLACES & DEVICES"
|
||||||
msgstr "Miejsca i urządzenia"
|
msgstr "Miejsca i urządzenia"
|
||||||
|
|
||||||
@ -605,7 +601,7 @@ msgstr "Miejsca i urządzenia"
|
|||||||
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
||||||
#. switches containing "◯" and "|"). Other values will
|
#. switches containing "◯" and "|"). Other values will
|
||||||
#. simply result in invisible toggle switches.
|
#. simply result in invisible toggle switches.
|
||||||
#: ../js/ui/popupMenu.js:618
|
#: ../js/ui/popupMenu.js:636
|
||||||
msgid "toggle-switch-us"
|
msgid "toggle-switch-us"
|
||||||
msgstr "toggle-switch-intl"
|
msgstr "toggle-switch-intl"
|
||||||
|
|
||||||
@ -613,47 +609,47 @@ msgstr "toggle-switch-intl"
|
|||||||
msgid "Please enter a command:"
|
msgid "Please enter a command:"
|
||||||
msgstr "Proszę wprowadzić polecenie:"
|
msgstr "Proszę wprowadzić polecenie:"
|
||||||
|
|
||||||
#: ../js/ui/searchDisplay.js:283
|
#: ../js/ui/searchDisplay.js:287
|
||||||
msgid "Searching..."
|
msgid "Searching..."
|
||||||
msgstr "Wyszukiwanie..."
|
msgstr "Wyszukiwanie..."
|
||||||
|
|
||||||
#: ../js/ui/searchDisplay.js:297
|
#: ../js/ui/searchDisplay.js:301
|
||||||
msgid "No matching results."
|
msgid "No matching results."
|
||||||
msgstr "Brak wyników."
|
msgstr "Brak wyników."
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:102 ../js/ui/statusMenu.js:166
|
#: ../js/ui/statusMenu.js:114 ../js/ui/statusMenu.js:178
|
||||||
msgid "Power Off..."
|
msgid "Power Off..."
|
||||||
msgstr "Wyłącz..."
|
msgstr "Wyłącz..."
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:104 ../js/ui/statusMenu.js:165
|
#: ../js/ui/statusMenu.js:116 ../js/ui/statusMenu.js:177
|
||||||
msgid "Suspend"
|
msgid "Suspend"
|
||||||
msgstr "Uśpij"
|
msgstr "Uśpij"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:125
|
#: ../js/ui/statusMenu.js:137
|
||||||
msgid "Available"
|
msgid "Available"
|
||||||
msgstr "Dostępny"
|
msgstr "Dostępny"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:130
|
#: ../js/ui/statusMenu.js:142
|
||||||
msgid "Busy"
|
msgid "Busy"
|
||||||
msgstr "Zajęty"
|
msgstr "Zajęty"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:138
|
#: ../js/ui/statusMenu.js:150
|
||||||
msgid "My Account"
|
msgid "My Account"
|
||||||
msgstr "Moje konto"
|
msgstr "Moje konto"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:142
|
#: ../js/ui/statusMenu.js:154
|
||||||
msgid "System Settings"
|
msgid "System Settings"
|
||||||
msgstr "Ustawienia systemu"
|
msgstr "Ustawienia systemu"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:149
|
#: ../js/ui/statusMenu.js:161
|
||||||
msgid "Lock Screen"
|
msgid "Lock Screen"
|
||||||
msgstr "Zablokuj ekran"
|
msgstr "Zablokuj ekran"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:153
|
#: ../js/ui/statusMenu.js:165
|
||||||
msgid "Switch User"
|
msgid "Switch User"
|
||||||
msgstr "Przełącz użytkownika"
|
msgstr "Przełącz użytkownika"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:158
|
#: ../js/ui/statusMenu.js:170
|
||||||
msgid "Log Out..."
|
msgid "Log Out..."
|
||||||
msgstr "Wyloguj się..."
|
msgstr "Wyloguj się..."
|
||||||
|
|
||||||
@ -661,14 +657,12 @@ msgstr "Wyloguj się..."
|
|||||||
msgid "Zoom"
|
msgid "Zoom"
|
||||||
msgstr "Powiększenie"
|
msgstr "Powiększenie"
|
||||||
|
|
||||||
#: ../js/ui/status/accessibility.js:69
|
#. let screenReader = this._buildItem(_("Screen Reader"), APPLICATIONS_SCHEMA,
|
||||||
msgid "Screen Reader"
|
#. 'screen-reader-enabled');
|
||||||
msgstr "Czytnik ekranu"
|
#. this.menu.addMenuItem(screenReader);
|
||||||
|
#. let screenKeyboard = this._buildItem(_("Screen Keyboard"), APPLICATIONS_SCHEMA,
|
||||||
#: ../js/ui/status/accessibility.js:73
|
#. 'screen-keyboard-enabled');
|
||||||
msgid "Screen Keyboard"
|
#. this.menu.addMenuItem(screenKeyboard);
|
||||||
msgstr "Klawiatura ekranowa"
|
|
||||||
|
|
||||||
#: ../js/ui/status/accessibility.js:77
|
#: ../js/ui/status/accessibility.js:77
|
||||||
msgid "Visual Alerts"
|
msgid "Visual Alerts"
|
||||||
msgstr "Ostrzeżenia wzrokowe"
|
msgstr "Ostrzeżenia wzrokowe"
|
||||||
@ -693,17 +687,17 @@ msgstr "Klawisze myszy"
|
|||||||
msgid "Universal Access Settings"
|
msgid "Universal Access Settings"
|
||||||
msgstr "Ustawienia uniwersalnego dostępu"
|
msgstr "Ustawienia uniwersalnego dostępu"
|
||||||
|
|
||||||
#: ../js/ui/status/accessibility.js:145
|
#: ../js/ui/status/accessibility.js:146
|
||||||
msgid "High Contrast"
|
msgid "High Contrast"
|
||||||
msgstr "Wysoki kontrast"
|
msgstr "Wysoki kontrast"
|
||||||
|
|
||||||
#: ../js/ui/status/accessibility.js:182
|
#: ../js/ui/status/accessibility.js:183
|
||||||
msgid "Large Text"
|
msgid "Large Text"
|
||||||
msgstr "Duży tekst"
|
msgstr "Duży tekst"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:241
|
#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:237
|
||||||
#: ../js/ui/status/bluetooth.js:337 ../js/ui/status/bluetooth.js:371
|
#: ../js/ui/status/bluetooth.js:333 ../js/ui/status/bluetooth.js:367
|
||||||
#: ../js/ui/status/bluetooth.js:411 ../js/ui/status/bluetooth.js:444
|
#: ../js/ui/status/bluetooth.js:407 ../js/ui/status/bluetooth.js:440
|
||||||
msgid "Bluetooth"
|
msgid "Bluetooth"
|
||||||
msgstr "Bluetooth"
|
msgstr "Bluetooth"
|
||||||
|
|
||||||
@ -723,94 +717,94 @@ msgstr "Ustaw nowe urządzenie..."
|
|||||||
msgid "Bluetooth Settings"
|
msgid "Bluetooth Settings"
|
||||||
msgstr "Ustawienia Bluetooth"
|
msgstr "Ustawienia Bluetooth"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:192
|
#: ../js/ui/status/bluetooth.js:188
|
||||||
msgid "Connection"
|
msgid "Connection"
|
||||||
msgstr "Połączenie"
|
msgstr "Połączenie"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:228
|
#: ../js/ui/status/bluetooth.js:224
|
||||||
msgid "Send Files..."
|
msgid "Send Files..."
|
||||||
msgstr "Wyślij pliki..."
|
msgstr "Wyślij pliki..."
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:233
|
#: ../js/ui/status/bluetooth.js:229
|
||||||
msgid "Browse Files..."
|
msgid "Browse Files..."
|
||||||
msgstr "Przeglądaj pliki..."
|
msgstr "Przeglądaj pliki..."
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:242
|
#: ../js/ui/status/bluetooth.js:238
|
||||||
msgid "Error browsing device"
|
msgid "Error browsing device"
|
||||||
msgstr "Błąd podczas przeglądania urządzenia"
|
msgstr "Błąd podczas przeglądania urządzenia"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:243
|
#: ../js/ui/status/bluetooth.js:239
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "The requested device cannot be browsed, error is '%s'"
|
msgid "The requested device cannot be browsed, error is '%s'"
|
||||||
msgstr "Nie można przeglądać żądanego urządzenia. Błąd: \"%s\""
|
msgstr "Nie można przeglądać żądanego urządzenia. Błąd: \"%s\""
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:251
|
#: ../js/ui/status/bluetooth.js:247
|
||||||
msgid "Keyboard Settings"
|
msgid "Keyboard Settings"
|
||||||
msgstr "Ustawienia klawiatury"
|
msgstr "Ustawienia klawiatury"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:256
|
#: ../js/ui/status/bluetooth.js:252
|
||||||
msgid "Mouse Settings"
|
msgid "Mouse Settings"
|
||||||
msgstr "Ustawienia myszy"
|
msgstr "Ustawienia myszy"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:263 ../js/ui/status/volume.js:65
|
#: ../js/ui/status/bluetooth.js:259 ../js/ui/status/volume.js:66
|
||||||
msgid "Sound Settings"
|
msgid "Sound Settings"
|
||||||
msgstr "Ustawienia dźwięku"
|
msgstr "Ustawienia dźwięku"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:372
|
#: ../js/ui/status/bluetooth.js:368
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Authorization request from %s"
|
msgid "Authorization request from %s"
|
||||||
msgstr "Żądanie upoważnienia z %s"
|
msgstr "Żądanie upoważnienia z %s"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:378
|
#: ../js/ui/status/bluetooth.js:374
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Device %s wants access to the service '%s'"
|
msgid "Device %s wants access to the service '%s'"
|
||||||
msgstr "Urządzenie %s żąda dostępu do usługi \"%s\""
|
msgstr "Urządzenie %s żąda dostępu do usługi \"%s\""
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:380
|
#: ../js/ui/status/bluetooth.js:376
|
||||||
msgid "Always grant access"
|
msgid "Always grant access"
|
||||||
msgstr "Zawsze udzielaj dostęp"
|
msgstr "Zawsze udzielaj dostęp"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:381
|
#: ../js/ui/status/bluetooth.js:377
|
||||||
msgid "Grant this time only"
|
msgid "Grant this time only"
|
||||||
msgstr "Udziel dostęp tylko tym razem"
|
msgstr "Udziel dostęp tylko tym razem"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:382
|
#: ../js/ui/status/bluetooth.js:378
|
||||||
msgid "Reject"
|
msgid "Reject"
|
||||||
msgstr "Odrzuć"
|
msgstr "Odrzuć"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:412
|
#: ../js/ui/status/bluetooth.js:408
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Pairing confirmation for %s"
|
msgid "Pairing confirmation for %s"
|
||||||
msgstr "Potwierdzenie wiązania dla %s"
|
msgstr "Potwierdzenie wiązania dla %s"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:418 ../js/ui/status/bluetooth.js:452
|
#: ../js/ui/status/bluetooth.js:414 ../js/ui/status/bluetooth.js:448
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Device %s wants to pair with this computer"
|
msgid "Device %s wants to pair with this computer"
|
||||||
msgstr "Urządzenie %s żąda powiązania z tym komputerem"
|
msgstr "Urządzenie %s żąda powiązania z tym komputerem"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:419
|
#: ../js/ui/status/bluetooth.js:415
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Please confirm whether the PIN '%s' matches the one on the device."
|
msgid "Please confirm whether the PIN '%s' matches the one on the device."
|
||||||
msgstr "Proszę potwierdzić, czy PIN \"%s\" zgadza się z tym na urządzeniu."
|
msgstr "Proszę potwierdzić, czy PIN \"%s\" zgadza się z tym na urządzeniu."
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:421
|
#: ../js/ui/status/bluetooth.js:417
|
||||||
msgid "Matches"
|
msgid "Matches"
|
||||||
msgstr "Zgadza się"
|
msgstr "Zgadza się"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:422
|
#: ../js/ui/status/bluetooth.js:418
|
||||||
msgid "Does not match"
|
msgid "Does not match"
|
||||||
msgstr "Nie zgadza się"
|
msgstr "Nie zgadza się"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:445
|
#: ../js/ui/status/bluetooth.js:441
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Pairing request for %s"
|
msgid "Pairing request for %s"
|
||||||
msgstr "Żądanie powiązania dla %s"
|
msgstr "Żądanie powiązania dla %s"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:453
|
#: ../js/ui/status/bluetooth.js:449
|
||||||
msgid "Please enter the PIN mentioned on the device."
|
msgid "Please enter the PIN mentioned on the device."
|
||||||
msgstr "Proszę wprowadzić PIN wyświetlony na urządzeniu."
|
msgstr "Proszę wprowadzić PIN wyświetlony na urządzeniu."
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:469
|
#: ../js/ui/status/bluetooth.js:465
|
||||||
msgid "OK"
|
msgid "OK"
|
||||||
msgstr "OK"
|
msgstr "OK"
|
||||||
|
|
||||||
@ -822,17 +816,147 @@ msgstr "Wyświetl układ klawiatury..."
|
|||||||
msgid "Localization Settings"
|
msgid "Localization Settings"
|
||||||
msgstr "Ustawienia lokalizacji"
|
msgstr "Ustawienia lokalizacji"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:102 ../js/ui/status/network.js:1393
|
||||||
|
msgid "<unknown>"
|
||||||
|
msgstr "<nieznane>"
|
||||||
|
|
||||||
|
#. Translators: this indicates that wireless or wwan is disabled by hardware killswitch
|
||||||
|
#: ../js/ui/status/network.js:295
|
||||||
|
msgid "disabled"
|
||||||
|
msgstr "wyłączone"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:476
|
||||||
|
msgid "connecting..."
|
||||||
|
msgstr "łączenie..."
|
||||||
|
|
||||||
|
#. Translators: this is for network connections that require some kind of key or password
|
||||||
|
#: ../js/ui/status/network.js:479
|
||||||
|
msgid "authentication required"
|
||||||
|
msgstr "wymagane jest uwierzytelnienie"
|
||||||
|
|
||||||
|
#. Translators: this is for wired network devices that are physically disconnected
|
||||||
|
#: ../js/ui/status/network.js:485
|
||||||
|
msgid "cable unplugged"
|
||||||
|
msgstr "kabel jest niepodłączony"
|
||||||
|
|
||||||
|
#. Translators: this is for a network device that cannot be activated (for example it
|
||||||
|
#. is disabled by rfkill, or it has no coverage
|
||||||
|
#: ../js/ui/status/network.js:489
|
||||||
|
msgid "unavailable"
|
||||||
|
msgstr "niedostępne"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:491
|
||||||
|
msgid "connection failed"
|
||||||
|
msgstr "połączenie się nie powiodło"
|
||||||
|
|
||||||
|
#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
|
||||||
|
#. and we cannot access its settings (including the name)
|
||||||
|
#: ../js/ui/status/network.js:571 ../js/ui/status/network.js:1341
|
||||||
|
msgid "Connected (private)"
|
||||||
|
msgstr "Połączono (prywatne)"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:636
|
||||||
|
msgid "Auto Ethernet"
|
||||||
|
msgstr "Automatyczne Ethernet"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:697
|
||||||
|
msgid "Auto broadband"
|
||||||
|
msgstr "Automatyczne komórkowe"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:700
|
||||||
|
msgid "Auto dial-up"
|
||||||
|
msgstr "Automatyczne wdzwaniane"
|
||||||
|
|
||||||
|
#. TRANSLATORS: this the automatic wireless connection name (including the network name)
|
||||||
|
#: ../js/ui/status/network.js:843 ../js/ui/status/network.js:1353
|
||||||
|
#, c-format
|
||||||
|
msgid "Auto %s"
|
||||||
|
msgstr "Automatyczne %s"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:845
|
||||||
|
msgid "Auto bluetooth"
|
||||||
|
msgstr "Automatyczne Bluetooth"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1355
|
||||||
|
msgid "Auto wireless"
|
||||||
|
msgstr "Automatyczne bezprzewodowe"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1413
|
||||||
|
msgid "More..."
|
||||||
|
msgstr "Więcej..."
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1436
|
||||||
|
msgid "Enable networking"
|
||||||
|
msgstr "Włącz sieć"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1448
|
||||||
|
msgid "Wired"
|
||||||
|
msgstr "Przewodowe"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1459
|
||||||
|
msgid "Wireless"
|
||||||
|
msgstr "Bezprzewodowe"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1469
|
||||||
|
msgid "Mobile broadband"
|
||||||
|
msgstr "Komórkowe"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1479
|
||||||
|
msgid "VPN Connections"
|
||||||
|
msgstr "Połączenia VPN"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1488
|
||||||
|
msgid "Network Settings"
|
||||||
|
msgstr "Ustawienia sieci"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1783
|
||||||
|
#, c-format
|
||||||
|
msgid "You're now connected to mobile broadband connection '%s'"
|
||||||
|
msgstr "Połączono z siecią komórkową \"%s\""
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1787
|
||||||
|
#, c-format
|
||||||
|
msgid "You're now connected to wireless network '%s'"
|
||||||
|
msgstr "Połączono z siecią bezprzewodową \"%s\""
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1791
|
||||||
|
#, c-format
|
||||||
|
msgid "You're now connected to wired network '%s'"
|
||||||
|
msgstr "Połączono z siecią przewodową \"%s\""
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1795
|
||||||
|
#, c-format
|
||||||
|
msgid "You're now connected to VPN network '%s'"
|
||||||
|
msgstr "Połączono z siecią VPN \"%s\""
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1800
|
||||||
|
#, c-format
|
||||||
|
msgid "You're now connected to '%s'"
|
||||||
|
msgstr "Połączono z siecią \"%s\""
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1808
|
||||||
|
msgid "Connection established"
|
||||||
|
msgstr "Nawiązano połączenie"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1930
|
||||||
|
msgid "Networking is disabled"
|
||||||
|
msgstr "Sieć jest wyłączona"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:2055
|
||||||
|
msgid "Network Manager"
|
||||||
|
msgstr "Menedżer sieci"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:85
|
#: ../js/ui/status/power.js:85
|
||||||
msgid "Power Settings"
|
msgid "Power Settings"
|
||||||
msgstr "Ustawienia zasilania"
|
msgstr "Ustawienia zasilania"
|
||||||
|
|
||||||
#. 0 is reported when UPower does not have enough data
|
#. 0 is reported when UPower does not have enough data
|
||||||
#. to estimate battery life
|
#. to estimate battery life
|
||||||
#: ../js/ui/status/power.js:110
|
#: ../js/ui/status/power.js:111
|
||||||
msgid "Estimating..."
|
msgid "Estimating..."
|
||||||
msgstr "Obliczanie..."
|
msgstr "Obliczanie..."
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:117
|
#: ../js/ui/status/power.js:118
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d hour remaining"
|
msgid "%d hour remaining"
|
||||||
msgid_plural "%d hours remaining"
|
msgid_plural "%d hours remaining"
|
||||||
@ -841,26 +965,26 @@ msgstr[1] "Pozostały %d godziny"
|
|||||||
msgstr[2] "Pozostało %d godzin"
|
msgstr[2] "Pozostało %d godzin"
|
||||||
|
|
||||||
#. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining"
|
#. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining"
|
||||||
#: ../js/ui/status/power.js:120
|
#: ../js/ui/status/power.js:121
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d %s %d %s remaining"
|
msgid "%d %s %d %s remaining"
|
||||||
msgstr "Pozostało %d %s i %d %s"
|
msgstr "Pozostało %d %s i %d %s"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:122
|
#: ../js/ui/status/power.js:123
|
||||||
msgid "hour"
|
msgid "hour"
|
||||||
msgid_plural "hours"
|
msgid_plural "hours"
|
||||||
msgstr[0] "godzina"
|
msgstr[0] "godzina"
|
||||||
msgstr[1] "godziny"
|
msgstr[1] "godziny"
|
||||||
msgstr[2] "godzin"
|
msgstr[2] "godzin"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:122
|
#: ../js/ui/status/power.js:123
|
||||||
msgid "minute"
|
msgid "minute"
|
||||||
msgid_plural "minutes"
|
msgid_plural "minutes"
|
||||||
msgstr[0] "minuta"
|
msgstr[0] "minuta"
|
||||||
msgstr[1] "minuty"
|
msgstr[1] "minuty"
|
||||||
msgstr[2] "minut"
|
msgstr[2] "minut"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:125
|
#: ../js/ui/status/power.js:126
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d minute remaining"
|
msgid "%d minute remaining"
|
||||||
msgid_plural "%d minutes remaining"
|
msgid_plural "%d minutes remaining"
|
||||||
@ -868,78 +992,78 @@ msgstr[0] "Pozostała %d minuta"
|
|||||||
msgstr[1] "Pozostały %d minuty"
|
msgstr[1] "Pozostały %d minuty"
|
||||||
msgstr[2] "Pozostało %d minut"
|
msgstr[2] "Pozostało %d minut"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:227
|
#: ../js/ui/status/power.js:228
|
||||||
msgid "AC adapter"
|
msgid "AC adapter"
|
||||||
msgstr "Zasilacz sieciowy"
|
msgstr "Zasilacz sieciowy"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:229
|
#: ../js/ui/status/power.js:230
|
||||||
msgid "Laptop battery"
|
msgid "Laptop battery"
|
||||||
msgstr "Akumulator laptopa"
|
msgstr "Akumulator laptopa"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:231
|
#: ../js/ui/status/power.js:232
|
||||||
msgid "UPS"
|
msgid "UPS"
|
||||||
msgstr "UPS"
|
msgstr "UPS"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:233
|
#: ../js/ui/status/power.js:234
|
||||||
msgid "Monitor"
|
msgid "Monitor"
|
||||||
msgstr "Monitor"
|
msgstr "Monitor"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:235
|
#: ../js/ui/status/power.js:236
|
||||||
msgid "Mouse"
|
msgid "Mouse"
|
||||||
msgstr "Mysz"
|
msgstr "Mysz"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:237
|
#: ../js/ui/status/power.js:238
|
||||||
msgid "Keyboard"
|
msgid "Keyboard"
|
||||||
msgstr "Klawiatura"
|
msgstr "Klawiatura"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:239
|
#: ../js/ui/status/power.js:240
|
||||||
msgid "PDA"
|
msgid "PDA"
|
||||||
msgstr "Urządzenie PDA"
|
msgstr "Urządzenie PDA"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:241
|
#: ../js/ui/status/power.js:242
|
||||||
msgid "Cell phone"
|
msgid "Cell phone"
|
||||||
msgstr "Telefon komórkowy"
|
msgstr "Telefon komórkowy"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:243
|
#: ../js/ui/status/power.js:244
|
||||||
msgid "Media player"
|
msgid "Media player"
|
||||||
msgstr "Odtwarzacz multimedialny"
|
msgstr "Odtwarzacz multimedialny"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:245
|
#: ../js/ui/status/power.js:246
|
||||||
msgid "Tablet"
|
msgid "Tablet"
|
||||||
msgstr "Tablet"
|
msgstr "Tablet"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:247
|
#: ../js/ui/status/power.js:248
|
||||||
msgid "Computer"
|
msgid "Computer"
|
||||||
msgstr "Komputer"
|
msgstr "Komputer"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:249 ../src/shell-app-system.c:1013
|
#: ../js/ui/status/power.js:250 ../src/shell-app-system.c:961
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "Nieznane"
|
msgstr "Nieznane"
|
||||||
|
|
||||||
#: ../js/ui/status/volume.js:44
|
#: ../js/ui/status/volume.js:45
|
||||||
msgid "Volume"
|
msgid "Volume"
|
||||||
msgstr "Głośność"
|
msgstr "Głośność"
|
||||||
|
|
||||||
#: ../js/ui/status/volume.js:57
|
#: ../js/ui/status/volume.js:58
|
||||||
msgid "Microphone"
|
msgid "Microphone"
|
||||||
msgstr "Mikrofon"
|
msgstr "Mikrofon"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:239
|
#: ../js/ui/telepathyClient.js:332
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is online."
|
msgid "%s is online."
|
||||||
msgstr "Użytkownik %s jest online."
|
msgstr "Użytkownik %s jest online."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:244
|
#: ../js/ui/telepathyClient.js:337
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is offline."
|
msgid "%s is offline."
|
||||||
msgstr "Użytkownik %s jest offline."
|
msgstr "Użytkownik %s jest offline."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:247
|
#: ../js/ui/telepathyClient.js:340
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is away."
|
msgid "%s is away."
|
||||||
msgstr "Użytkownik %s jest nieobecny."
|
msgstr "Użytkownik %s jest nieobecny."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:250
|
#: ../js/ui/telepathyClient.js:343
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is busy."
|
msgid "%s is busy."
|
||||||
msgstr "Użytkownik %s jest zajęty."
|
msgstr "Użytkownik %s jest zajęty."
|
||||||
@ -947,7 +1071,7 @@ msgstr "Użytkownik %s jest zajęty."
|
|||||||
#. Translators: this is a time format string followed by a date.
|
#. Translators: this is a time format string followed by a date.
|
||||||
#. If applicable, replace %X with a strftime format valid for your
|
#. If applicable, replace %X with a strftime format valid for your
|
||||||
#. locale, without seconds.
|
#. locale, without seconds.
|
||||||
#: ../js/ui/telepathyClient.js:357
|
#: ../js/ui/telepathyClient.js:474
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent at %X on %A"
|
msgid "Sent at %X on %A"
|
||||||
msgstr "Wysłano o %H:%M w dniu %e %b"
|
msgstr "Wysłano o %H:%M w dniu %e %b"
|
||||||
@ -956,11 +1080,11 @@ msgstr "Wysłano o %H:%M w dniu %e %b"
|
|||||||
#. in the search entry when no search is
|
#. in the search entry when no search is
|
||||||
#. active; it should not exceed ~30
|
#. active; it should not exceed ~30
|
||||||
#. characters.
|
#. characters.
|
||||||
#: ../js/ui/viewSelector.js:117
|
#: ../js/ui/viewSelector.js:122
|
||||||
msgid "Type to search..."
|
msgid "Type to search..."
|
||||||
msgstr "Wyszukiwanie..."
|
msgstr "Wyszukiwanie..."
|
||||||
|
|
||||||
#: ../js/ui/viewSelector.js:137 ../src/shell-util.c:250
|
#: ../js/ui/viewSelector.js:142 ../src/shell-util.c:250
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "Wyszukaj"
|
msgstr "Wyszukaj"
|
||||||
|
|
||||||
@ -976,7 +1100,7 @@ msgstr "Program \"%s\" jest gotowy"
|
|||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The number of sound outputs on a particular device
|
#. * The number of sound outputs on a particular device
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1094
|
#: ../src/gvc/gvc-mixer-control.c:1098
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%u Output"
|
msgid "%u Output"
|
||||||
msgid_plural "%u Outputs"
|
msgid_plural "%u Outputs"
|
||||||
@ -986,7 +1110,7 @@ msgstr[2] "%u wyjść"
|
|||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The number of sound inputs on a particular device
|
#. * The number of sound inputs on a particular device
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1104
|
#: ../src/gvc/gvc-mixer-control.c:1108
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%u Input"
|
msgid "%u Input"
|
||||||
msgid_plural "%u Inputs"
|
msgid_plural "%u Inputs"
|
||||||
@ -994,19 +1118,24 @@ msgstr[0] "%u wejście"
|
|||||||
msgstr[1] "%u wejścia"
|
msgstr[1] "%u wejścia"
|
||||||
msgstr[2] "%u wejść"
|
msgstr[2] "%u wejść"
|
||||||
|
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1402
|
#: ../src/gvc/gvc-mixer-control.c:1406
|
||||||
msgid "System Sounds"
|
msgid "System Sounds"
|
||||||
msgstr "Dźwięki systemowe"
|
msgstr "Dźwięki systemowe"
|
||||||
|
|
||||||
#: ../src/main.c:395
|
#: ../src/main.c:397
|
||||||
msgid "Print version"
|
msgid "Print version"
|
||||||
msgstr "Wyświetla wersję"
|
msgstr "Wyświetla wersję"
|
||||||
|
|
||||||
#: ../src/shell-global.c:1308
|
#: ../src/shell-app.c:454
|
||||||
|
#, c-format
|
||||||
|
msgid "Failed to launch '%s'"
|
||||||
|
msgstr "Uruchomienie \"%s\" się nie powiodło"
|
||||||
|
|
||||||
|
#: ../src/shell-global.c:1340
|
||||||
msgid "Less than a minute ago"
|
msgid "Less than a minute ago"
|
||||||
msgstr "Mniej niż minutę temu"
|
msgstr "Mniej niż minutę temu"
|
||||||
|
|
||||||
#: ../src/shell-global.c:1312
|
#: ../src/shell-global.c:1344
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d minute ago"
|
msgid "%d minute ago"
|
||||||
msgid_plural "%d minutes ago"
|
msgid_plural "%d minutes ago"
|
||||||
@ -1014,7 +1143,7 @@ msgstr[0] "%d minuta temu"
|
|||||||
msgstr[1] "%d minuty temu"
|
msgstr[1] "%d minuty temu"
|
||||||
msgstr[2] "%d minut temu"
|
msgstr[2] "%d minut temu"
|
||||||
|
|
||||||
#: ../src/shell-global.c:1317
|
#: ../src/shell-global.c:1349
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d hour ago"
|
msgid "%d hour ago"
|
||||||
msgid_plural "%d hours ago"
|
msgid_plural "%d hours ago"
|
||||||
@ -1022,7 +1151,7 @@ msgstr[0] "%d godzina temu"
|
|||||||
msgstr[1] "%d godziny temu"
|
msgstr[1] "%d godziny temu"
|
||||||
msgstr[2] "%d godzin temu"
|
msgstr[2] "%d godzin temu"
|
||||||
|
|
||||||
#: ../src/shell-global.c:1322
|
#: ../src/shell-global.c:1354
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d day ago"
|
msgid "%d day ago"
|
||||||
msgid_plural "%d days ago"
|
msgid_plural "%d days ago"
|
||||||
@ -1030,7 +1159,7 @@ msgstr[0] "%d dzień temu"
|
|||||||
msgstr[1] "%d dni temu"
|
msgstr[1] "%d dni temu"
|
||||||
msgstr[2] "%d dni temu"
|
msgstr[2] "%d dni temu"
|
||||||
|
|
||||||
#: ../src/shell-global.c:1327
|
#: ../src/shell-global.c:1359
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d week ago"
|
msgid "%d week ago"
|
||||||
msgid_plural "%d weeks ago"
|
msgid_plural "%d weeks ago"
|
||||||
@ -1038,6 +1167,14 @@ msgstr[0] "%d tydzień temu"
|
|||||||
msgstr[1] "%d tygodnie temu"
|
msgstr[1] "%d tygodnie temu"
|
||||||
msgstr[2] "%d tygodni temu"
|
msgstr[2] "%d tygodni temu"
|
||||||
|
|
||||||
|
#: ../src/shell-mobile-providers.c:80
|
||||||
|
msgid "United Kingdom"
|
||||||
|
msgstr "Zjednoczone Królestwo"
|
||||||
|
|
||||||
|
#: ../src/shell-mobile-providers.c:526
|
||||||
|
msgid "Default"
|
||||||
|
msgstr "Domyślne"
|
||||||
|
|
||||||
#: ../src/shell-polkit-authentication-agent.c:334
|
#: ../src/shell-polkit-authentication-agent.c:334
|
||||||
msgid "Authentication dialog was dismissed by the user"
|
msgid "Authentication dialog was dismissed by the user"
|
||||||
msgstr "Okno dialogowe uwierzytelnienia zostało odrzucone przez użytkownika"
|
msgstr "Okno dialogowe uwierzytelnienia zostało odrzucone przez użytkownika"
|
||||||
|
1246
po/pt_BR.po
1246
po/pt_BR.po
File diff suppressed because it is too large
Load Diff
316
po/ro.po
316
po/ro.po
@ -8,8 +8,8 @@ msgstr ""
|
|||||||
"Project-Id-Version: gnome-shell master\n"
|
"Project-Id-Version: gnome-shell master\n"
|
||||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||||
"shell&keywords=I18N+L10N&component=general\n"
|
"shell&keywords=I18N+L10N&component=general\n"
|
||||||
"POT-Creation-Date: 2011-03-13 00:31+0000\n"
|
"POT-Creation-Date: 2011-03-17 21:07+0000\n"
|
||||||
"PO-Revision-Date: 2011-03-13 01:25+0200\n"
|
"PO-Revision-Date: 2011-03-17 11:00+0200\n"
|
||||||
"Last-Translator: Lucian Adrian Grijincu <lucian.grijincu@gmail.com>\n"
|
"Last-Translator: Lucian Adrian Grijincu <lucian.grijincu@gmail.com>\n"
|
||||||
"Language-Team: Romanian Gnome Team <gnomero-list@lists.sourceforge.net>\n"
|
"Language-Team: Romanian Gnome Team <gnomero-list@lists.sourceforge.net>\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
@ -177,21 +177,17 @@ msgstr "Dacă să se colecteze statistici despre utilizarea aplicațiilor"
|
|||||||
msgid "disabled OpenSearch providers"
|
msgid "disabled OpenSearch providers"
|
||||||
msgstr "furnizori OpenSearch dezactivați"
|
msgstr "furnizori OpenSearch dezactivați"
|
||||||
|
|
||||||
#: ../js/misc/util.js:86
|
#: ../js/misc/util.js:71
|
||||||
msgid "Command not found"
|
msgid "Command not found"
|
||||||
msgstr "Comanda nu a fost găsită"
|
msgstr "Comanda nu a fost găsită"
|
||||||
|
|
||||||
#. Replace "Error invoking GLib.shell_parse_argv: " with
|
#. Replace "Error invoking GLib.shell_parse_argv: " with
|
||||||
#. something nicer
|
#. something nicer
|
||||||
#: ../js/misc/util.js:113
|
#: ../js/misc/util.js:98
|
||||||
msgid "Could not parse command:"
|
msgid "Could not parse command:"
|
||||||
msgstr "Nu s-a putut analiza comanda:"
|
msgstr "Nu s-a putut analiza comanda:"
|
||||||
|
|
||||||
#: ../js/misc/util.js:135
|
#: ../js/misc/util.js:106
|
||||||
msgid "No such application"
|
|
||||||
msgstr "Nu există această aplicație"
|
|
||||||
|
|
||||||
#: ../js/misc/util.js:148
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Execution of '%s' failed:"
|
msgid "Execution of '%s' failed:"
|
||||||
msgstr "Execuția comenzii „%s” a eșuat:"
|
msgstr "Execuția comenzii „%s” a eșuat:"
|
||||||
@ -377,7 +373,7 @@ msgstr "Această săptămână"
|
|||||||
msgid "Next week"
|
msgid "Next week"
|
||||||
msgstr "Săptămâna viitoare"
|
msgstr "Săptămâna viitoare"
|
||||||
|
|
||||||
#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:931
|
#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:933
|
||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "Elimină"
|
msgstr "Elimină"
|
||||||
|
|
||||||
@ -432,7 +428,7 @@ msgstr "%a %l:%M %p"
|
|||||||
#. Translators: This is the date format to use when the calendar popup is
|
#. 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").
|
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
|
||||||
#.
|
#.
|
||||||
#: ../js/ui/dateMenu.js:209
|
#: ../js/ui/dateMenu.js:194
|
||||||
msgid "%A %B %e, %Y"
|
msgid "%A %B %e, %Y"
|
||||||
msgstr "%A %e %B, %Y"
|
msgstr "%A %e %B, %Y"
|
||||||
|
|
||||||
@ -510,7 +506,7 @@ msgstr "Repornirea sistemului."
|
|||||||
msgid "Confirm"
|
msgid "Confirm"
|
||||||
msgstr "Confirm"
|
msgstr "Confirm"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:400 ../js/ui/status/bluetooth.js:470
|
#: ../js/ui/endSessionDialog.js:400 ../js/ui/status/bluetooth.js:465
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Anulează"
|
msgstr "Anulează"
|
||||||
|
|
||||||
@ -544,11 +540,11 @@ msgstr "Vezi sursa"
|
|||||||
msgid "Web Page"
|
msgid "Web Page"
|
||||||
msgstr "Pagină web"
|
msgstr "Pagină web"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:924
|
#: ../js/ui/messageTray.js:926
|
||||||
msgid "Open"
|
msgid "Open"
|
||||||
msgstr "Deschide"
|
msgstr "Deschide"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1961
|
#: ../js/ui/messageTray.js:1986
|
||||||
msgid "System Information"
|
msgid "System Information"
|
||||||
msgstr "Informații despre sistem"
|
msgstr "Informații despre sistem"
|
||||||
|
|
||||||
@ -564,25 +560,26 @@ msgstr "Ferestre"
|
|||||||
msgid "Applications"
|
msgid "Applications"
|
||||||
msgstr "Aplicații"
|
msgstr "Aplicații"
|
||||||
|
|
||||||
|
# LG: WTF? cum traducem asta?
|
||||||
#. Translators: this is the name of the dock/favorites area on
|
#. Translators: this is the name of the dock/favorites area on
|
||||||
#. the left of the overview
|
#. the left of the overview
|
||||||
#: ../js/ui/overview.js:202
|
#: ../js/ui/overview.js:202
|
||||||
msgid "Dash"
|
msgid "Dash"
|
||||||
msgstr ""
|
msgstr "Dash"
|
||||||
|
|
||||||
#. TODO - _quit() doesn't really work on apps in state STARTING yet
|
#. TODO - _quit() doesn't really work on apps in state STARTING yet
|
||||||
#: ../js/ui/panel.js:560
|
#: ../js/ui/panel.js:515
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Quit %s"
|
msgid "Quit %s"
|
||||||
msgstr "Închide %s"
|
msgstr "Închide %s"
|
||||||
|
|
||||||
#. Button on the left side of the panel.
|
#. Button on the left side of the panel.
|
||||||
#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
|
#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
|
||||||
#: ../js/ui/panel.js:919
|
#: ../js/ui/panel.js:874
|
||||||
msgid "Activities"
|
msgid "Activities"
|
||||||
msgstr "Activități"
|
msgstr "Activități"
|
||||||
|
|
||||||
#: ../js/ui/panel.js:1020
|
#: ../js/ui/panel.js:975
|
||||||
msgid "Panel"
|
msgid "Panel"
|
||||||
msgstr "Panou"
|
msgstr "Panou"
|
||||||
|
|
||||||
@ -599,7 +596,7 @@ msgstr "Reîncearcă"
|
|||||||
msgid "Connect to..."
|
msgid "Connect to..."
|
||||||
msgstr "Conectare la..."
|
msgstr "Conectare la..."
|
||||||
|
|
||||||
#: ../js/ui/placeDisplay.js:409
|
#: ../js/ui/placeDisplay.js:380
|
||||||
msgid "PLACES & DEVICES"
|
msgid "PLACES & DEVICES"
|
||||||
msgstr "LOCAȚII & DISPOZITIVE"
|
msgstr "LOCAȚII & DISPOZITIVE"
|
||||||
|
|
||||||
@ -608,7 +605,7 @@ msgstr "LOCAȚII & DISPOZITIVE"
|
|||||||
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
||||||
#. switches containing "◯" and "|"). Other values will
|
#. switches containing "◯" and "|"). Other values will
|
||||||
#. simply result in invisible toggle switches.
|
#. simply result in invisible toggle switches.
|
||||||
#: ../js/ui/popupMenu.js:618
|
#: ../js/ui/popupMenu.js:636
|
||||||
msgid "toggle-switch-us"
|
msgid "toggle-switch-us"
|
||||||
msgstr "toggle-switch-us"
|
msgstr "toggle-switch-us"
|
||||||
|
|
||||||
@ -664,14 +661,12 @@ msgstr "Ieși din sesiune..."
|
|||||||
msgid "Zoom"
|
msgid "Zoom"
|
||||||
msgstr "Zoom"
|
msgstr "Zoom"
|
||||||
|
|
||||||
#: ../js/ui/status/accessibility.js:69
|
#. let screenReader = this._buildItem(_("Screen Reader"), APPLICATIONS_SCHEMA,
|
||||||
msgid "Screen Reader"
|
#. 'screen-reader-enabled');
|
||||||
msgstr "Cititor de ecran"
|
#. this.menu.addMenuItem(screenReader);
|
||||||
|
#. let screenKeyboard = this._buildItem(_("Screen Keyboard"), APPLICATIONS_SCHEMA,
|
||||||
#: ../js/ui/status/accessibility.js:73
|
#. 'screen-keyboard-enabled');
|
||||||
msgid "Screen Keyboard"
|
#. this.menu.addMenuItem(screenKeyboard);
|
||||||
msgstr "Tastatură pe ecran"
|
|
||||||
|
|
||||||
#: ../js/ui/status/accessibility.js:77
|
#: ../js/ui/status/accessibility.js:77
|
||||||
msgid "Visual Alerts"
|
msgid "Visual Alerts"
|
||||||
msgstr "Alerte vizuale"
|
msgstr "Alerte vizuale"
|
||||||
@ -696,17 +691,17 @@ msgstr "Taste maus"
|
|||||||
msgid "Universal Access Settings"
|
msgid "Universal Access Settings"
|
||||||
msgstr "Configurări acces universal"
|
msgstr "Configurări acces universal"
|
||||||
|
|
||||||
#: ../js/ui/status/accessibility.js:145
|
#: ../js/ui/status/accessibility.js:146
|
||||||
msgid "High Contrast"
|
msgid "High Contrast"
|
||||||
msgstr "Contrast puternic"
|
msgstr "Contrast puternic"
|
||||||
|
|
||||||
#: ../js/ui/status/accessibility.js:182
|
#: ../js/ui/status/accessibility.js:183
|
||||||
msgid "Large Text"
|
msgid "Large Text"
|
||||||
msgstr "Text mare"
|
msgstr "Text mare"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:241
|
#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:236
|
||||||
#: ../js/ui/status/bluetooth.js:337 ../js/ui/status/bluetooth.js:371
|
#: ../js/ui/status/bluetooth.js:332 ../js/ui/status/bluetooth.js:366
|
||||||
#: ../js/ui/status/bluetooth.js:411 ../js/ui/status/bluetooth.js:444
|
#: ../js/ui/status/bluetooth.js:406 ../js/ui/status/bluetooth.js:439
|
||||||
msgid "Bluetooth"
|
msgid "Bluetooth"
|
||||||
msgstr "Bluetooth"
|
msgstr "Bluetooth"
|
||||||
|
|
||||||
@ -726,94 +721,94 @@ msgstr "Configurează un dispozitiv nou..."
|
|||||||
msgid "Bluetooth Settings"
|
msgid "Bluetooth Settings"
|
||||||
msgstr "Configurări Bluetooth"
|
msgstr "Configurări Bluetooth"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:192
|
#: ../js/ui/status/bluetooth.js:187
|
||||||
msgid "Connection"
|
msgid "Connection"
|
||||||
msgstr "Conexiune"
|
msgstr "Conexiune"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:228
|
#: ../js/ui/status/bluetooth.js:223
|
||||||
msgid "Send Files..."
|
msgid "Send Files..."
|
||||||
msgstr "Trimite fișiere..."
|
msgstr "Trimite fișiere..."
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:233
|
#: ../js/ui/status/bluetooth.js:228
|
||||||
msgid "Browse Files..."
|
msgid "Browse Files..."
|
||||||
msgstr "Alege fișiere..."
|
msgstr "Alege fișiere..."
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:242
|
#: ../js/ui/status/bluetooth.js:237
|
||||||
msgid "Error browsing device"
|
msgid "Error browsing device"
|
||||||
msgstr "Eroare la navigarea dispozitivului"
|
msgstr "Eroare la navigarea dispozitivului"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:243
|
#: ../js/ui/status/bluetooth.js:238
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "The requested device cannot be browsed, error is '%s'"
|
msgid "The requested device cannot be browsed, error is '%s'"
|
||||||
msgstr "Dispozitivul cerut nu poate fi navigat, eroarea este „%s”"
|
msgstr "Dispozitivul cerut nu poate fi navigat, eroarea este „%s”"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:251
|
#: ../js/ui/status/bluetooth.js:246
|
||||||
msgid "Keyboard Settings"
|
msgid "Keyboard Settings"
|
||||||
msgstr "Configurări tastatură"
|
msgstr "Configurări tastatură"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:256
|
#: ../js/ui/status/bluetooth.js:251
|
||||||
msgid "Mouse Settings"
|
msgid "Mouse Settings"
|
||||||
msgstr "Configurări maus"
|
msgstr "Configurări maus"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:263 ../js/ui/status/volume.js:66
|
#: ../js/ui/status/bluetooth.js:258 ../js/ui/status/volume.js:66
|
||||||
msgid "Sound Settings"
|
msgid "Sound Settings"
|
||||||
msgstr "Configurări sunet"
|
msgstr "Configurări sunet"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:372
|
#: ../js/ui/status/bluetooth.js:367
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Authorization request from %s"
|
msgid "Authorization request from %s"
|
||||||
msgstr "Cerere de autorizare de la %s"
|
msgstr "Cerere de autorizare de la %s"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:378
|
#: ../js/ui/status/bluetooth.js:373
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Device %s wants access to the service '%s'"
|
msgid "Device %s wants access to the service '%s'"
|
||||||
msgstr "Dispozitivul %s dorește acces la serviciul „%s”"
|
msgstr "Dispozitivul %s dorește acces la serviciul „%s”"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:380
|
#: ../js/ui/status/bluetooth.js:375
|
||||||
msgid "Always grant access"
|
msgid "Always grant access"
|
||||||
msgstr "Acordă acces întotdeauna"
|
msgstr "Acordă acces întotdeauna"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:381
|
#: ../js/ui/status/bluetooth.js:376
|
||||||
msgid "Grant this time only"
|
msgid "Grant this time only"
|
||||||
msgstr "Acordă acces doar de data aceasta"
|
msgstr "Acordă acces doar de data aceasta"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:382
|
#: ../js/ui/status/bluetooth.js:377
|
||||||
msgid "Reject"
|
msgid "Reject"
|
||||||
msgstr "Respinge"
|
msgstr "Respinge"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:412
|
#: ../js/ui/status/bluetooth.js:407
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Pairing confirmation for %s"
|
msgid "Pairing confirmation for %s"
|
||||||
msgstr "Se asociază confirmarea pentru %s"
|
msgstr "Se asociază confirmarea pentru %s"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:418 ../js/ui/status/bluetooth.js:452
|
#: ../js/ui/status/bluetooth.js:413 ../js/ui/status/bluetooth.js:447
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Device %s wants to pair with this computer"
|
msgid "Device %s wants to pair with this computer"
|
||||||
msgstr "Dispozitivul %s dorește să se asocieze cu acest computer"
|
msgstr "Dispozitivul %s dorește să se asocieze cu acest computer"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:419
|
#: ../js/ui/status/bluetooth.js:414
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Please confirm whether the PIN '%s' matches the one on the device."
|
msgid "Please confirm whether the PIN '%s' matches the one on the device."
|
||||||
msgstr "Confirmați dacă codul PIN „%s” se potrivește cu cel de pe dispozitiv."
|
msgstr "Confirmați dacă codul PIN „%s” se potrivește cu cel de pe dispozitiv."
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:421
|
#: ../js/ui/status/bluetooth.js:416
|
||||||
msgid "Matches"
|
msgid "Matches"
|
||||||
msgstr "Se potrivește"
|
msgstr "Se potrivește"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:422
|
#: ../js/ui/status/bluetooth.js:417
|
||||||
msgid "Does not match"
|
msgid "Does not match"
|
||||||
msgstr "Nu se potrivește"
|
msgstr "Nu se potrivește"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:445
|
#: ../js/ui/status/bluetooth.js:440
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Pairing request for %s"
|
msgid "Pairing request for %s"
|
||||||
msgstr "Cerere de asociere de la %s"
|
msgstr "Cerere de asociere de la %s"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:453
|
#: ../js/ui/status/bluetooth.js:448
|
||||||
msgid "Please enter the PIN mentioned on the device."
|
msgid "Please enter the PIN mentioned on the device."
|
||||||
msgstr "Introduceți codul PIN menționat pe dispozitiv."
|
msgstr "Introduceți codul PIN menționat pe dispozitiv."
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:469
|
#: ../js/ui/status/bluetooth.js:464
|
||||||
msgid "OK"
|
msgid "OK"
|
||||||
msgstr "OK"
|
msgstr "OK"
|
||||||
|
|
||||||
@ -825,17 +820,147 @@ msgstr "Arată aranjamentu tastaturii..."
|
|||||||
msgid "Localization Settings"
|
msgid "Localization Settings"
|
||||||
msgstr "Configurări de localizare"
|
msgstr "Configurări de localizare"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:102 ../js/ui/status/network.js:1393
|
||||||
|
msgid "<unknown>"
|
||||||
|
msgstr "<necunoscut>"
|
||||||
|
|
||||||
|
#. Translators: this indicates that wireless or wwan is disabled by hardware killswitch
|
||||||
|
#: ../js/ui/status/network.js:295
|
||||||
|
msgid "disabled"
|
||||||
|
msgstr "dezactivat"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:476
|
||||||
|
msgid "connecting..."
|
||||||
|
msgstr "se conectează..."
|
||||||
|
|
||||||
|
#. Translators: this is for network connections that require some kind of key or password
|
||||||
|
#: ../js/ui/status/network.js:479
|
||||||
|
msgid "authentication required"
|
||||||
|
msgstr "necesită autentificare"
|
||||||
|
|
||||||
|
#. Translators: this is for wired network devices that are physically disconnected
|
||||||
|
#: ../js/ui/status/network.js:485
|
||||||
|
msgid "cable unplugged"
|
||||||
|
msgstr "cablu deconectat"
|
||||||
|
|
||||||
|
#. Translators: this is for a network device that cannot be activated (for example it
|
||||||
|
#. is disabled by rfkill, or it has no coverage
|
||||||
|
#: ../js/ui/status/network.js:489
|
||||||
|
msgid "unavailable"
|
||||||
|
msgstr "indisponibil"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:491
|
||||||
|
msgid "connection failed"
|
||||||
|
msgstr "conexiune eșuată"
|
||||||
|
|
||||||
|
#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
|
||||||
|
#. and we cannot access its settings (including the name)
|
||||||
|
#: ../js/ui/status/network.js:571 ../js/ui/status/network.js:1341
|
||||||
|
msgid "Connected (private)"
|
||||||
|
msgstr "Conectat (privat)"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:636
|
||||||
|
msgid "Auto Ethernet"
|
||||||
|
msgstr "Ethernet (automat)"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:697
|
||||||
|
msgid "Auto broadband"
|
||||||
|
msgstr "Rețea de bandă largă (automat)"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:700
|
||||||
|
msgid "Auto dial-up"
|
||||||
|
msgstr "Dial-up (automat)"
|
||||||
|
|
||||||
|
#. TRANSLATORS: this the automatic wireless connection name (including the network name)
|
||||||
|
#: ../js/ui/status/network.js:843 ../js/ui/status/network.js:1353
|
||||||
|
#, c-format
|
||||||
|
msgid "Auto %s"
|
||||||
|
msgstr "%s (automat)"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:845
|
||||||
|
msgid "Auto bluetooth"
|
||||||
|
msgstr "Bluetooth (automat)"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1355
|
||||||
|
msgid "Auto wireless"
|
||||||
|
msgstr "Rețea fără fir (automat)"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1413
|
||||||
|
msgid "More..."
|
||||||
|
msgstr "Mai multe..."
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1436
|
||||||
|
msgid "Enable networking"
|
||||||
|
msgstr "Activează rețeaua"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1448
|
||||||
|
msgid "Wired"
|
||||||
|
msgstr "Cu fir"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1459
|
||||||
|
msgid "Wireless"
|
||||||
|
msgstr "Fără fir"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1469
|
||||||
|
msgid "Mobile broadband"
|
||||||
|
msgstr "Internet mobil de bandă largă"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1479
|
||||||
|
msgid "VPN Connections"
|
||||||
|
msgstr "Conexiuni VPN"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1488
|
||||||
|
msgid "Network Settings"
|
||||||
|
msgstr "Configurări de rețea"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1782
|
||||||
|
#, c-format
|
||||||
|
msgid "You're now connected to mobile broadband connection '%s'"
|
||||||
|
msgstr "V-ați conectat la rețeaua mobilă de bandă largă „%s”"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1786
|
||||||
|
#, c-format
|
||||||
|
msgid "You're now connected to wireless network '%s'"
|
||||||
|
msgstr "V-ați conectat la rețeaua fără fir „%s”"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1790
|
||||||
|
#, c-format
|
||||||
|
msgid "You're now connected to wired network '%s'"
|
||||||
|
msgstr "V-ați conectat la rețeaua cu fir „%s”"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1794
|
||||||
|
#, c-format
|
||||||
|
msgid "You're now connected to VPN network '%s'"
|
||||||
|
msgstr "V-ați conectat la rețeaua VPN „%s”"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1799
|
||||||
|
#, c-format
|
||||||
|
msgid "You're now connected to '%s'"
|
||||||
|
msgstr "V-ați conectat la „%s”"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1807
|
||||||
|
msgid "Connection established"
|
||||||
|
msgstr "Conexiune stabilită"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1929
|
||||||
|
msgid "Networking is disabled"
|
||||||
|
msgstr "Reţeaua este dezactivată"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:2054
|
||||||
|
msgid "Network Manager"
|
||||||
|
msgstr "Administrator de rețea"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:85
|
#: ../js/ui/status/power.js:85
|
||||||
msgid "Power Settings"
|
msgid "Power Settings"
|
||||||
msgstr "Configurări de alimentare"
|
msgstr "Configurări de alimentare"
|
||||||
|
|
||||||
#. 0 is reported when UPower does not have enough data
|
#. 0 is reported when UPower does not have enough data
|
||||||
#. to estimate battery life
|
#. to estimate battery life
|
||||||
#: ../js/ui/status/power.js:110
|
#: ../js/ui/status/power.js:111
|
||||||
msgid "Estimating..."
|
msgid "Estimating..."
|
||||||
msgstr "Se estimează..."
|
msgstr "Se estimează..."
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:117
|
#: ../js/ui/status/power.js:118
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d hour remaining"
|
msgid "%d hour remaining"
|
||||||
msgid_plural "%d hours remaining"
|
msgid_plural "%d hours remaining"
|
||||||
@ -844,26 +969,26 @@ msgstr[1] "Au mai rămas %d ore"
|
|||||||
msgstr[2] "Au mai rămas %d de ore"
|
msgstr[2] "Au mai rămas %d de ore"
|
||||||
|
|
||||||
#. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining"
|
#. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining"
|
||||||
#: ../js/ui/status/power.js:120
|
#: ../js/ui/status/power.js:121
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d %s %d %s remaining"
|
msgid "%d %s %d %s remaining"
|
||||||
msgstr "Au mai rămas %d %s %d %s"
|
msgstr "Au mai rămas %d %s %d %s"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:122
|
#: ../js/ui/status/power.js:123
|
||||||
msgid "hour"
|
msgid "hour"
|
||||||
msgid_plural "hours"
|
msgid_plural "hours"
|
||||||
msgstr[0] "oră"
|
msgstr[0] "oră"
|
||||||
msgstr[1] "ore"
|
msgstr[1] "ore"
|
||||||
msgstr[2] "de ore"
|
msgstr[2] "de ore"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:122
|
#: ../js/ui/status/power.js:123
|
||||||
msgid "minute"
|
msgid "minute"
|
||||||
msgid_plural "minutes"
|
msgid_plural "minutes"
|
||||||
msgstr[0] "minut"
|
msgstr[0] "minut"
|
||||||
msgstr[1] "minute"
|
msgstr[1] "minute"
|
||||||
msgstr[2] "de minute"
|
msgstr[2] "de minute"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:125
|
#: ../js/ui/status/power.js:126
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d minute remaining"
|
msgid "%d minute remaining"
|
||||||
msgid_plural "%d minutes remaining"
|
msgid_plural "%d minutes remaining"
|
||||||
@ -871,51 +996,51 @@ msgstr[0] "A mai rămas un minut"
|
|||||||
msgstr[1] "Au mai rămas %d minute"
|
msgstr[1] "Au mai rămas %d minute"
|
||||||
msgstr[2] "Au mai rămas %d de minute"
|
msgstr[2] "Au mai rămas %d de minute"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:227
|
#: ../js/ui/status/power.js:228
|
||||||
msgid "AC adapter"
|
msgid "AC adapter"
|
||||||
msgstr "Adaptor conectat la rețeaua electrică"
|
msgstr "Adaptor conectat la rețeaua electrică"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:229
|
#: ../js/ui/status/power.js:230
|
||||||
msgid "Laptop battery"
|
msgid "Laptop battery"
|
||||||
msgstr "Baterie laptop"
|
msgstr "Baterie laptop"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:231
|
#: ../js/ui/status/power.js:232
|
||||||
msgid "UPS"
|
msgid "UPS"
|
||||||
msgstr "UPS"
|
msgstr "UPS"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:233
|
#: ../js/ui/status/power.js:234
|
||||||
msgid "Monitor"
|
msgid "Monitor"
|
||||||
msgstr "Monitor"
|
msgstr "Monitor"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:235
|
#: ../js/ui/status/power.js:236
|
||||||
msgid "Mouse"
|
msgid "Mouse"
|
||||||
msgstr "Maus"
|
msgstr "Maus"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:237
|
#: ../js/ui/status/power.js:238
|
||||||
msgid "Keyboard"
|
msgid "Keyboard"
|
||||||
msgstr "Tastatură"
|
msgstr "Tastatură"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:239
|
#: ../js/ui/status/power.js:240
|
||||||
msgid "PDA"
|
msgid "PDA"
|
||||||
msgstr "PDA"
|
msgstr "PDA"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:241
|
#: ../js/ui/status/power.js:242
|
||||||
msgid "Cell phone"
|
msgid "Cell phone"
|
||||||
msgstr "Telefon mobil"
|
msgstr "Telefon mobil"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:243
|
#: ../js/ui/status/power.js:244
|
||||||
msgid "Media player"
|
msgid "Media player"
|
||||||
msgstr "Media player"
|
msgstr "Media player"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:245
|
#: ../js/ui/status/power.js:246
|
||||||
msgid "Tablet"
|
msgid "Tablet"
|
||||||
msgstr "Tabletă"
|
msgstr "Tabletă"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:247
|
#: ../js/ui/status/power.js:248
|
||||||
msgid "Computer"
|
msgid "Computer"
|
||||||
msgstr "Calculator"
|
msgstr "Calculator"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:249 ../src/shell-app-system.c:1013
|
#: ../js/ui/status/power.js:250 ../src/shell-app-system.c:961
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "Necunoscut"
|
msgstr "Necunoscut"
|
||||||
|
|
||||||
@ -927,22 +1052,22 @@ msgstr "Volum"
|
|||||||
msgid "Microphone"
|
msgid "Microphone"
|
||||||
msgstr "Microfon"
|
msgstr "Microfon"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:239
|
#: ../js/ui/telepathyClient.js:332
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is online."
|
msgid "%s is online."
|
||||||
msgstr "%s este conectat."
|
msgstr "%s este conectat."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:244
|
#: ../js/ui/telepathyClient.js:337
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is offline."
|
msgid "%s is offline."
|
||||||
msgstr "%s este deconectat."
|
msgstr "%s este deconectat."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:247
|
#: ../js/ui/telepathyClient.js:340
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is away."
|
msgid "%s is away."
|
||||||
msgstr "%s este absent."
|
msgstr "%s este absent."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:250
|
#: ../js/ui/telepathyClient.js:343
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is busy."
|
msgid "%s is busy."
|
||||||
msgstr "%s este ocupat."
|
msgstr "%s este ocupat."
|
||||||
@ -950,7 +1075,7 @@ msgstr "%s este ocupat."
|
|||||||
#. Translators: this is a time format string followed by a date.
|
#. Translators: this is a time format string followed by a date.
|
||||||
#. If applicable, replace %X with a strftime format valid for your
|
#. If applicable, replace %X with a strftime format valid for your
|
||||||
#. locale, without seconds.
|
#. locale, without seconds.
|
||||||
#: ../js/ui/telepathyClient.js:357
|
#: ../js/ui/telepathyClient.js:474
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent at %X on %A"
|
msgid "Sent at %X on %A"
|
||||||
msgstr "Trimis la %X pe data de %A"
|
msgstr "Trimis la %X pe data de %A"
|
||||||
@ -1001,15 +1126,20 @@ msgstr[2] "%u de intrări"
|
|||||||
msgid "System Sounds"
|
msgid "System Sounds"
|
||||||
msgstr "Sunetele sistemului"
|
msgstr "Sunetele sistemului"
|
||||||
|
|
||||||
#: ../src/main.c:395
|
#: ../src/main.c:397
|
||||||
msgid "Print version"
|
msgid "Print version"
|
||||||
msgstr "Tipărește versiunea"
|
msgstr "Tipărește versiunea"
|
||||||
|
|
||||||
#: ../src/shell-global.c:1308
|
#: ../src/shell-app.c:454
|
||||||
|
#, c-format
|
||||||
|
msgid "Failed to launch '%s'"
|
||||||
|
msgstr "Nu s-a putut lansa „%s”"
|
||||||
|
|
||||||
|
#: ../src/shell-global.c:1340
|
||||||
msgid "Less than a minute ago"
|
msgid "Less than a minute ago"
|
||||||
msgstr "Cu mai puțin de un minut în urmă"
|
msgstr "Cu mai puțin de un minut în urmă"
|
||||||
|
|
||||||
#: ../src/shell-global.c:1312
|
#: ../src/shell-global.c:1344
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d minute ago"
|
msgid "%d minute ago"
|
||||||
msgid_plural "%d minutes ago"
|
msgid_plural "%d minutes ago"
|
||||||
@ -1017,7 +1147,7 @@ msgstr[0] "Acum un minut"
|
|||||||
msgstr[1] "Acum %d minute"
|
msgstr[1] "Acum %d minute"
|
||||||
msgstr[2] "Acum %d de minute"
|
msgstr[2] "Acum %d de minute"
|
||||||
|
|
||||||
#: ../src/shell-global.c:1317
|
#: ../src/shell-global.c:1349
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d hour ago"
|
msgid "%d hour ago"
|
||||||
msgid_plural "%d hours ago"
|
msgid_plural "%d hours ago"
|
||||||
@ -1025,7 +1155,7 @@ msgstr[0] "Acum o oră"
|
|||||||
msgstr[1] "Acum %d ore"
|
msgstr[1] "Acum %d ore"
|
||||||
msgstr[2] "Acum %d de ore"
|
msgstr[2] "Acum %d de ore"
|
||||||
|
|
||||||
#: ../src/shell-global.c:1322
|
#: ../src/shell-global.c:1354
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d day ago"
|
msgid "%d day ago"
|
||||||
msgid_plural "%d days ago"
|
msgid_plural "%d days ago"
|
||||||
@ -1033,7 +1163,7 @@ msgstr[0] "Acum o zi"
|
|||||||
msgstr[1] "Acum %d zile"
|
msgstr[1] "Acum %d zile"
|
||||||
msgstr[2] "Acum %d de zile"
|
msgstr[2] "Acum %d de zile"
|
||||||
|
|
||||||
#: ../src/shell-global.c:1327
|
#: ../src/shell-global.c:1359
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d week ago"
|
msgid "%d week ago"
|
||||||
msgid_plural "%d weeks ago"
|
msgid_plural "%d weeks ago"
|
||||||
@ -1041,6 +1171,14 @@ msgstr[0] "Acum o săptămână"
|
|||||||
msgstr[1] "Acum %d săptămâni"
|
msgstr[1] "Acum %d săptămâni"
|
||||||
msgstr[2] "Acum %d de săptămâni"
|
msgstr[2] "Acum %d de săptămâni"
|
||||||
|
|
||||||
|
#: ../src/shell-mobile-providers.c:80
|
||||||
|
msgid "United Kingdom"
|
||||||
|
msgstr "Marea Britanie"
|
||||||
|
|
||||||
|
#: ../src/shell-mobile-providers.c:526
|
||||||
|
msgid "Default"
|
||||||
|
msgstr "Implicit"
|
||||||
|
|
||||||
#: ../src/shell-polkit-authentication-agent.c:334
|
#: ../src/shell-polkit-authentication-agent.c:334
|
||||||
msgid "Authentication dialog was dismissed by the user"
|
msgid "Authentication dialog was dismissed by the user"
|
||||||
msgstr "Dialogul de autentificare a fost respins de utilizator"
|
msgstr "Dialogul de autentificare a fost respins de utilizator"
|
||||||
@ -1065,6 +1203,15 @@ msgstr "Sistem de fișiere"
|
|||||||
msgid "%1$s: %2$s"
|
msgid "%1$s: %2$s"
|
||||||
msgstr "%1$s: %2$s"
|
msgstr "%1$s: %2$s"
|
||||||
|
|
||||||
|
#~ msgid "No such application"
|
||||||
|
#~ msgstr "Nu există această aplicație"
|
||||||
|
|
||||||
|
#~ msgid "Screen Reader"
|
||||||
|
#~ msgstr "Cititor de ecran"
|
||||||
|
|
||||||
|
#~ msgid "Screen Keyboard"
|
||||||
|
#~ msgstr "Tastatură pe ecran"
|
||||||
|
|
||||||
#~ msgid "PREFERENCES"
|
#~ msgid "PREFERENCES"
|
||||||
#~ msgstr "PREFERINȚE"
|
#~ msgstr "PREFERINȚE"
|
||||||
|
|
||||||
@ -1308,9 +1455,6 @@ msgstr "%1$s: %2$s"
|
|||||||
#~ msgid "Frequent"
|
#~ msgid "Frequent"
|
||||||
#~ msgstr "Frecvent"
|
#~ msgstr "Frecvent"
|
||||||
|
|
||||||
#~ msgid "More"
|
|
||||||
#~ msgstr "Mai multe"
|
|
||||||
|
|
||||||
#~ msgid "(see all)"
|
#~ msgid "(see all)"
|
||||||
#~ msgstr "(arată tot)"
|
#~ msgstr "(arată tot)"
|
||||||
|
|
||||||
|
1320
po/sr@latin.po
1320
po/sr@latin.po
File diff suppressed because it is too large
Load Diff
451
po/uk.po
451
po/uk.po
@ -7,8 +7,8 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gnome-shell master\n"
|
"Project-Id-Version: gnome-shell master\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2011-03-10 18:48+0200\n"
|
"POT-Creation-Date: 2011-03-24 23:56+0200\n"
|
||||||
"PO-Revision-Date: 2011-03-10 20:18+0300\n"
|
"PO-Revision-Date: 2011-03-24 23:59+0300\n"
|
||||||
"Last-Translator: Korostil Daniel <ted.korostiled@gmail.com>\n"
|
"Last-Translator: Korostil Daniel <ted.korostiled@gmail.com>\n"
|
||||||
"Language-Team: translation@linux.org.ua\n"
|
"Language-Team: translation@linux.org.ua\n"
|
||||||
"Language: uk\n"
|
"Language: uk\n"
|
||||||
@ -173,47 +173,43 @@ msgstr "Чи потрібно збирати статистику про вжи
|
|||||||
msgid "disabled OpenSearch providers"
|
msgid "disabled OpenSearch providers"
|
||||||
msgstr "вимкнено постачальника OpenSearch"
|
msgstr "вимкнено постачальника OpenSearch"
|
||||||
|
|
||||||
#: ../js/misc/util.js:86
|
#: ../js/misc/util.js:71
|
||||||
msgid "Command not found"
|
msgid "Command not found"
|
||||||
msgstr "Команди не знайдено"
|
msgstr "Команди не знайдено"
|
||||||
|
|
||||||
#. Replace "Error invoking GLib.shell_parse_argv: " with
|
#. Replace "Error invoking GLib.shell_parse_argv: " with
|
||||||
#. something nicer
|
#. something nicer
|
||||||
#: ../js/misc/util.js:113
|
#: ../js/misc/util.js:98
|
||||||
msgid "Could not parse command:"
|
msgid "Could not parse command:"
|
||||||
msgstr "Неможливо розібрати команду:"
|
msgstr "Неможливо розібрати команду:"
|
||||||
|
|
||||||
#: ../js/misc/util.js:135
|
#: ../js/misc/util.js:106
|
||||||
msgid "No such application"
|
|
||||||
msgstr "Нема такої програми"
|
|
||||||
|
|
||||||
#: ../js/misc/util.js:148
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Execution of '%s' failed:"
|
msgid "Execution of '%s' failed:"
|
||||||
msgstr "Не вдалось виконати «%s»:"
|
msgstr "Не вдалось виконати «%s»:"
|
||||||
|
|
||||||
#. Translators: Filter to display all applications
|
#. Translators: Filter to display all applications
|
||||||
#: ../js/ui/appDisplay.js:226
|
#: ../js/ui/appDisplay.js:230
|
||||||
msgid "All"
|
msgid "All"
|
||||||
msgstr "Всі"
|
msgstr "Всі"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:324
|
#: ../js/ui/appDisplay.js:328
|
||||||
msgid "APPLICATIONS"
|
msgid "APPLICATIONS"
|
||||||
msgstr "ПРОГРАМИ"
|
msgstr "ПРОГРАМИ"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:350
|
#: ../js/ui/appDisplay.js:354
|
||||||
msgid "SETTINGS"
|
msgid "SETTINGS"
|
||||||
msgstr "ПАРАМЕТРИ"
|
msgstr "ПАРАМЕТРИ"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:612
|
#: ../js/ui/appDisplay.js:625
|
||||||
msgid "New Window"
|
msgid "New Window"
|
||||||
msgstr "Нове вікно"
|
msgstr "Нове вікно"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:615
|
#: ../js/ui/appDisplay.js:628
|
||||||
msgid "Remove from Favorites"
|
msgid "Remove from Favorites"
|
||||||
msgstr "Вилучити з улюбленого"
|
msgstr "Вилучити з улюбленого"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:616
|
#: ../js/ui/appDisplay.js:629
|
||||||
msgid "Add to Favorites"
|
msgid "Add to Favorites"
|
||||||
msgstr "Додати до улюбленого"
|
msgstr "Додати до улюбленого"
|
||||||
|
|
||||||
@ -373,7 +369,7 @@ msgstr "Цей тиждень"
|
|||||||
msgid "Next week"
|
msgid "Next week"
|
||||||
msgstr "Наступний тиждень"
|
msgstr "Наступний тиждень"
|
||||||
|
|
||||||
#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:931
|
#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:994
|
||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "Вилучити"
|
msgstr "Вилучити"
|
||||||
|
|
||||||
@ -428,7 +424,7 @@ msgstr "%a %l:%M %p"
|
|||||||
#. Translators: This is the date format to use when the calendar popup is
|
#. 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").
|
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
|
||||||
#.
|
#.
|
||||||
#: ../js/ui/dateMenu.js:209
|
#: ../js/ui/dateMenu.js:194
|
||||||
msgid "%A %B %e, %Y"
|
msgid "%A %B %e, %Y"
|
||||||
msgstr "%A %B %e, %Y"
|
msgstr "%A %B %e, %Y"
|
||||||
|
|
||||||
@ -441,7 +437,7 @@ msgstr "ОСТАННІ ПУНКТИ"
|
|||||||
msgid "Log Out %s"
|
msgid "Log Out %s"
|
||||||
msgstr "Завершити сеанс %s…"
|
msgstr "Завершити сеанс %s…"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:69
|
#: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:70
|
||||||
msgid "Log Out"
|
msgid "Log Out"
|
||||||
msgstr "Завершити сеанс"
|
msgstr "Завершити сеанс"
|
||||||
|
|
||||||
@ -463,46 +459,44 @@ msgstr "Буде завершено сеанс автоматично через
|
|||||||
msgid "Logging out of the system."
|
msgid "Logging out of the system."
|
||||||
msgstr "Вихід із системи."
|
msgstr "Вихід із системи."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:74 ../js/ui/endSessionDialog.js:78
|
#: ../js/ui/endSessionDialog.js:75 ../js/ui/endSessionDialog.js:82
|
||||||
msgid "Shut Down"
|
msgid "Power Off"
|
||||||
msgstr "Вимкнути"
|
msgstr "Вимкнути"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:75
|
|
||||||
msgid "Click Shut Down to quit these applications and shut down the system."
|
|
||||||
msgstr "Натисніть «Вимкнути», щоб вийти з усіх програм і вимкнути систему."
|
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:76
|
#: ../js/ui/endSessionDialog.js:76
|
||||||
#, c-format
|
msgid "Click Power Off to quit these applications and power off the system."
|
||||||
msgid "The system will shut down automatically in %d seconds."
|
msgstr "Натисніть «Вимкнути», щоб вийти з усіх програм і системи."
|
||||||
msgstr "Систему буде вимкнено автоматично через %d секунд."
|
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:77
|
#: ../js/ui/endSessionDialog.js:77
|
||||||
msgid "Shutting down the system."
|
#, c-format
|
||||||
|
msgid "The system will power off automatically in %d seconds."
|
||||||
|
msgstr "Система автоматично вимкнеться через %d секунд."
|
||||||
|
|
||||||
|
#: ../js/ui/endSessionDialog.js:78
|
||||||
|
msgid "Powering off the system."
|
||||||
msgstr "Вимкнення системи."
|
msgstr "Вимкнення системи."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:84 ../js/ui/endSessionDialog.js:88
|
#: ../js/ui/endSessionDialog.js:80 ../js/ui/endSessionDialog.js:88
|
||||||
|
#: ../js/ui/endSessionDialog.js:93
|
||||||
msgid "Restart"
|
msgid "Restart"
|
||||||
msgstr "Перезапустити"
|
msgstr "Перезапустити"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:85
|
#: ../js/ui/endSessionDialog.js:89
|
||||||
msgid "Click Restart to quit these applications and restart the system."
|
msgid "Click Restart to quit these applications and restart the system."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Натисніть «Перезапустити», щоб вийти з усіх програм і перезапустити систему."
|
"Натисніть «Перезапустити», щоб вийти з усіх програм і перезапустити систему."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:86
|
#: ../js/ui/endSessionDialog.js:90
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "The system will restart automatically in %d seconds."
|
msgid "The system will restart automatically in %d seconds."
|
||||||
msgstr "Система автоматично перезапуститься через %d секунд."
|
msgstr "Система автоматично перезапуститься через %d секунд."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:87
|
#: ../js/ui/endSessionDialog.js:91
|
||||||
msgid "Restarting the system."
|
msgid "Restarting the system."
|
||||||
msgstr "Перезапуск системи."
|
msgstr "Перезапуск системи."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:395
|
#: ../js/ui/endSessionDialog.js:415 ../js/ui/polkitAuthenticationAgent.js:172
|
||||||
msgid "Confirm"
|
#: ../js/ui/status/bluetooth.js:466
|
||||||
msgstr "Підтвердити"
|
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:400 ../js/ui/status/bluetooth.js:470
|
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Скасувати"
|
msgstr "Скасувати"
|
||||||
|
|
||||||
@ -516,7 +510,7 @@ msgstr "Увімкнено"
|
|||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The device has been disabled
|
#. * The device has been disabled
|
||||||
#: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1087
|
#: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1091
|
||||||
msgid "Disabled"
|
msgid "Disabled"
|
||||||
msgstr "Вимкнено"
|
msgstr "Вимкнено"
|
||||||
|
|
||||||
@ -536,47 +530,47 @@ msgstr "Переглянути джерело"
|
|||||||
msgid "Web Page"
|
msgid "Web Page"
|
||||||
msgstr "Веб-сторінка"
|
msgstr "Веб-сторінка"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:924
|
#: ../js/ui/messageTray.js:987
|
||||||
msgid "Open"
|
msgid "Open"
|
||||||
msgstr "Відкрити"
|
msgstr "Відкрити"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1961
|
#: ../js/ui/messageTray.js:2145
|
||||||
msgid "System Information"
|
msgid "System Information"
|
||||||
msgstr "Інформація про систему"
|
msgstr "Інформація про систему"
|
||||||
|
|
||||||
#: ../js/ui/overview.js:88
|
#: ../js/ui/overview.js:91
|
||||||
msgid "Undo"
|
msgid "Undo"
|
||||||
msgstr "Повернути"
|
msgstr "Повернути"
|
||||||
|
|
||||||
#: ../js/ui/overview.js:183
|
#: ../js/ui/overview.js:186
|
||||||
msgid "Windows"
|
msgid "Windows"
|
||||||
msgstr "Вікна"
|
msgstr "Вікна"
|
||||||
|
|
||||||
#: ../js/ui/overview.js:186
|
#: ../js/ui/overview.js:189
|
||||||
msgid "Applications"
|
msgid "Applications"
|
||||||
msgstr "Програми"
|
msgstr "Програми"
|
||||||
|
|
||||||
#. Translators: this is the name of the dock/favorites area on
|
#. Translators: this is the name of the dock/favorites area on
|
||||||
#. the left of the overview
|
#. the left of the overview
|
||||||
#: ../js/ui/overview.js:202
|
#: ../js/ui/overview.js:205
|
||||||
msgid "Dash"
|
msgid "Dash"
|
||||||
msgstr "Риска"
|
msgstr "Риска"
|
||||||
|
|
||||||
#. TODO - _quit() doesn't really work on apps in state STARTING yet
|
#. TODO - _quit() doesn't really work on apps in state STARTING yet
|
||||||
#: ../js/ui/panel.js:560
|
#: ../js/ui/panel.js:515
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Quit %s"
|
msgid "Quit %s"
|
||||||
msgstr "Вийти з %s"
|
msgstr "Вийти з %s"
|
||||||
|
|
||||||
#. Button on the left side of the panel.
|
#. Button on the left side of the panel.
|
||||||
#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
|
#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
|
||||||
#: ../js/ui/panel.js:919
|
#: ../js/ui/panel.js:878
|
||||||
msgid "Activities"
|
msgid "Activities"
|
||||||
msgstr "Дії"
|
msgstr "Діяльність"
|
||||||
|
|
||||||
#: ../js/ui/panel.js:1020
|
#: ../js/ui/panel.js:979
|
||||||
msgid "Panel"
|
msgid "Top Bar"
|
||||||
msgstr "Панель"
|
msgstr "Верхня панель"
|
||||||
|
|
||||||
#: ../js/ui/placeDisplay.js:122
|
#: ../js/ui/placeDisplay.js:122
|
||||||
#, c-format
|
#, c-format
|
||||||
@ -591,64 +585,85 @@ msgstr "Повторити"
|
|||||||
msgid "Connect to..."
|
msgid "Connect to..."
|
||||||
msgstr "З'єднатися з…"
|
msgstr "З'єднатися з…"
|
||||||
|
|
||||||
#: ../js/ui/placeDisplay.js:409
|
#: ../js/ui/placeDisplay.js:380
|
||||||
msgid "PLACES & DEVICES"
|
msgid "PLACES & DEVICES"
|
||||||
msgstr "МІСЦЯ ТА ПРИСТРОЇ"
|
msgstr "МІСЦЯ ТА ПРИСТРОЇ"
|
||||||
|
|
||||||
|
#: ../js/ui/polkitAuthenticationAgent.js:74
|
||||||
|
msgid "Authentication Required"
|
||||||
|
msgstr "Потрібна автентифікація"
|
||||||
|
|
||||||
|
#: ../js/ui/polkitAuthenticationAgent.js:108
|
||||||
|
msgid "Administrator"
|
||||||
|
msgstr "Адміністратор"
|
||||||
|
|
||||||
|
#: ../js/ui/polkitAuthenticationAgent.js:176
|
||||||
|
msgid "Authenticate"
|
||||||
|
msgstr "Аутентифікація"
|
||||||
|
|
||||||
|
#: ../js/ui/polkitAuthenticationAgent.js:260
|
||||||
|
msgid "Sorry, that didn't work. Please try again."
|
||||||
|
msgstr "Вибачте, це не працює. Спробуйте ще."
|
||||||
|
|
||||||
|
#: ../js/ui/polkitAuthenticationAgent.js:272
|
||||||
|
msgid "Password:"
|
||||||
|
msgstr "Пароль:"
|
||||||
|
|
||||||
#. Translators: this MUST be either "toggle-switch-us"
|
#. Translators: this MUST be either "toggle-switch-us"
|
||||||
#. (for toggle switches containing the English words
|
#. (for toggle switches containing the English words
|
||||||
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
||||||
#. switches containing "◯" and "|"). Other values will
|
#. switches containing "◯" and "|"). Other values will
|
||||||
#. simply result in invisible toggle switches.
|
#. simply result in invisible toggle switches.
|
||||||
#: ../js/ui/popupMenu.js:618
|
#: ../js/ui/popupMenu.js:679
|
||||||
msgid "toggle-switch-us"
|
msgid "toggle-switch-us"
|
||||||
msgstr "toggle-switch-intl"
|
msgstr "toggle-switch-intl"
|
||||||
|
|
||||||
#: ../js/ui/runDialog.js:201
|
#: ../js/ui/runDialog.js:205
|
||||||
msgid "Please enter a command:"
|
msgid "Please enter a command:"
|
||||||
msgstr "Будь ласка, введіть команду:"
|
msgstr "Будь ласка, введіть команду:"
|
||||||
|
|
||||||
#: ../js/ui/searchDisplay.js:283
|
#: ../js/ui/searchDisplay.js:310
|
||||||
msgid "Searching..."
|
msgid "Searching..."
|
||||||
msgstr "Пошук…"
|
msgstr "Пошук…"
|
||||||
|
|
||||||
#: ../js/ui/searchDisplay.js:297
|
#: ../js/ui/searchDisplay.js:324
|
||||||
msgid "No matching results."
|
msgid "No matching results."
|
||||||
msgstr "Нема збігів."
|
msgstr "Нема збігів."
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:113 ../js/ui/statusMenu.js:177
|
#: ../js/ui/statusMenu.js:161 ../js/ui/statusMenu.js:163
|
||||||
|
#: ../js/ui/statusMenu.js:228
|
||||||
msgid "Power Off..."
|
msgid "Power Off..."
|
||||||
msgstr "Вимкнення живлення…"
|
msgstr "Вимкнення живлення…"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:115 ../js/ui/statusMenu.js:176
|
#: ../js/ui/statusMenu.js:163 ../js/ui/statusMenu.js:227
|
||||||
msgid "Suspend"
|
msgid "Suspend"
|
||||||
msgstr "Призупинити"
|
msgstr "Призупинити"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:136
|
#: ../js/ui/statusMenu.js:184
|
||||||
msgid "Available"
|
msgid "Available"
|
||||||
msgstr "Доступний"
|
msgstr "Доступний"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:141
|
#: ../js/ui/statusMenu.js:189
|
||||||
msgid "Busy"
|
msgid "Busy"
|
||||||
msgstr "Зайнятий"
|
msgstr "Зайнятий"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:149
|
#: ../js/ui/statusMenu.js:197
|
||||||
msgid "My Account"
|
msgid "My Account"
|
||||||
msgstr "Мій обліковий запис"
|
msgstr "Мій обліковий запис"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:153
|
#: ../js/ui/statusMenu.js:201
|
||||||
msgid "System Settings"
|
msgid "System Settings"
|
||||||
msgstr "Системні параметри"
|
msgstr "Системні параметри"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:160
|
#: ../js/ui/statusMenu.js:208
|
||||||
msgid "Lock Screen"
|
msgid "Lock Screen"
|
||||||
msgstr "Заблокувати екран"
|
msgstr "Заблокувати екран"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:164
|
#: ../js/ui/statusMenu.js:213
|
||||||
msgid "Switch User"
|
msgid "Switch User"
|
||||||
msgstr "Змінити користувача"
|
msgstr "Змінити користувача"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:169
|
#: ../js/ui/statusMenu.js:218
|
||||||
msgid "Log Out..."
|
msgid "Log Out..."
|
||||||
msgstr "Завершити сеанс…"
|
msgstr "Завершити сеанс…"
|
||||||
|
|
||||||
@ -656,14 +671,12 @@ msgstr "Завершити сеанс…"
|
|||||||
msgid "Zoom"
|
msgid "Zoom"
|
||||||
msgstr "Масштаб"
|
msgstr "Масштаб"
|
||||||
|
|
||||||
#: ../js/ui/status/accessibility.js:69
|
#. let screenReader = this._buildItem(_("Screen Reader"), APPLICATIONS_SCHEMA,
|
||||||
msgid "Screen Reader"
|
#. 'screen-reader-enabled');
|
||||||
msgstr "Читання з екрану"
|
#. this.menu.addMenuItem(screenReader);
|
||||||
|
#. let screenKeyboard = this._buildItem(_("Screen Keyboard"), APPLICATIONS_SCHEMA,
|
||||||
#: ../js/ui/status/accessibility.js:73
|
#. 'screen-keyboard-enabled');
|
||||||
msgid "Screen Keyboard"
|
#. this.menu.addMenuItem(screenKeyboard);
|
||||||
msgstr "Екранна клавіатура"
|
|
||||||
|
|
||||||
#: ../js/ui/status/accessibility.js:77
|
#: ../js/ui/status/accessibility.js:77
|
||||||
msgid "Visual Alerts"
|
msgid "Visual Alerts"
|
||||||
msgstr "Візуальні тривоги"
|
msgstr "Візуальні тривоги"
|
||||||
@ -688,17 +701,17 @@ msgstr "Клавіші миші"
|
|||||||
msgid "Universal Access Settings"
|
msgid "Universal Access Settings"
|
||||||
msgstr "Параметри універсального доступу"
|
msgstr "Параметри універсального доступу"
|
||||||
|
|
||||||
#: ../js/ui/status/accessibility.js:145
|
#: ../js/ui/status/accessibility.js:146
|
||||||
msgid "High Contrast"
|
msgid "High Contrast"
|
||||||
msgstr "Висока контрастність"
|
msgstr "Висока контрастність"
|
||||||
|
|
||||||
#: ../js/ui/status/accessibility.js:182
|
#: ../js/ui/status/accessibility.js:183
|
||||||
msgid "Large Text"
|
msgid "Large Text"
|
||||||
msgstr "Більший текст"
|
msgstr "Більший текст"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:241
|
#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:237
|
||||||
#: ../js/ui/status/bluetooth.js:337 ../js/ui/status/bluetooth.js:371
|
#: ../js/ui/status/bluetooth.js:333 ../js/ui/status/bluetooth.js:367
|
||||||
#: ../js/ui/status/bluetooth.js:411 ../js/ui/status/bluetooth.js:444
|
#: ../js/ui/status/bluetooth.js:407 ../js/ui/status/bluetooth.js:440
|
||||||
msgid "Bluetooth"
|
msgid "Bluetooth"
|
||||||
msgstr "Bluetooth"
|
msgstr "Bluetooth"
|
||||||
|
|
||||||
@ -718,94 +731,94 @@ msgstr "Встановити новий пристрій…"
|
|||||||
msgid "Bluetooth Settings"
|
msgid "Bluetooth Settings"
|
||||||
msgstr "Параметри Bluetooth"
|
msgstr "Параметри Bluetooth"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:192
|
#: ../js/ui/status/bluetooth.js:188
|
||||||
msgid "Connection"
|
msgid "Connection"
|
||||||
msgstr "З'єднання"
|
msgstr "З'єднання"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:228
|
#: ../js/ui/status/bluetooth.js:224
|
||||||
msgid "Send Files..."
|
msgid "Send Files..."
|
||||||
msgstr "Відправити файли…"
|
msgstr "Відправити файли…"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:233
|
#: ../js/ui/status/bluetooth.js:229
|
||||||
msgid "Browse Files..."
|
msgid "Browse Files..."
|
||||||
msgstr "Огляд файлів…"
|
msgstr "Огляд файлів…"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:242
|
#: ../js/ui/status/bluetooth.js:238
|
||||||
msgid "Error browsing device"
|
msgid "Error browsing device"
|
||||||
msgstr "Помилка перегляду пристрою…"
|
msgstr "Помилка перегляду пристрою…"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:243
|
#: ../js/ui/status/bluetooth.js:239
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "The requested device cannot be browsed, error is '%s'"
|
msgid "The requested device cannot be browsed, error is '%s'"
|
||||||
msgstr "Потрібний пристрій неможливо переглянути, помилка — «%s»"
|
msgstr "Потрібний пристрій неможливо переглянути, помилка — «%s»"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:251
|
#: ../js/ui/status/bluetooth.js:247
|
||||||
msgid "Keyboard Settings"
|
msgid "Keyboard Settings"
|
||||||
msgstr "Параметри клавіатури"
|
msgstr "Параметри клавіатури"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:256
|
#: ../js/ui/status/bluetooth.js:252
|
||||||
msgid "Mouse Settings"
|
msgid "Mouse Settings"
|
||||||
msgstr "Параметри миші"
|
msgstr "Параметри миші"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:263 ../js/ui/status/volume.js:65
|
#: ../js/ui/status/bluetooth.js:259 ../js/ui/status/volume.js:66
|
||||||
msgid "Sound Settings"
|
msgid "Sound Settings"
|
||||||
msgstr "Параметри звуку"
|
msgstr "Параметри звуку"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:372
|
#: ../js/ui/status/bluetooth.js:368
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Authorization request from %s"
|
msgid "Authorization request from %s"
|
||||||
msgstr "Запит про авторизацію від %s"
|
msgstr "Запит про авторизацію від %s"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:378
|
#: ../js/ui/status/bluetooth.js:374
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Device %s wants access to the service '%s'"
|
msgid "Device %s wants access to the service '%s'"
|
||||||
msgstr "Пристрій %s потребує доступ до служби «%s»"
|
msgstr "Пристрій %s потребує доступ до служби «%s»"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:380
|
#: ../js/ui/status/bluetooth.js:376
|
||||||
msgid "Always grant access"
|
msgid "Always grant access"
|
||||||
msgstr "Завжди надавати доступ"
|
msgstr "Завжди надавати доступ"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:381
|
#: ../js/ui/status/bluetooth.js:377
|
||||||
msgid "Grant this time only"
|
msgid "Grant this time only"
|
||||||
msgstr "Надати лише цього разу"
|
msgstr "Надати лише цього разу"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:382
|
#: ../js/ui/status/bluetooth.js:378
|
||||||
msgid "Reject"
|
msgid "Reject"
|
||||||
msgstr "Відмовити"
|
msgstr "Відмовити"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:412
|
#: ../js/ui/status/bluetooth.js:408
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Pairing confirmation for %s"
|
msgid "Pairing confirmation for %s"
|
||||||
msgstr "Сполучення підтвердження для %s"
|
msgstr "Сполучення підтвердження для %s"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:418 ../js/ui/status/bluetooth.js:452
|
#: ../js/ui/status/bluetooth.js:414 ../js/ui/status/bluetooth.js:448
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Device %s wants to pair with this computer"
|
msgid "Device %s wants to pair with this computer"
|
||||||
msgstr "Пристрій %s потребує прив'язання до цього комп'ютера"
|
msgstr "Пристрій %s потребує прив'язання до цього комп'ютера"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:419
|
#: ../js/ui/status/bluetooth.js:415
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Please confirm whether the PIN '%s' matches the one on the device."
|
msgid "Please confirm whether the PIN '%s' matches the one on the device."
|
||||||
msgstr "Будь ласка, підвердьте, чи «%s» збігається з PIN на пристрої."
|
msgstr "Будь ласка, підвердьте, чи «%s» збігається з PIN на пристрої."
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:421
|
#: ../js/ui/status/bluetooth.js:417
|
||||||
msgid "Matches"
|
msgid "Matches"
|
||||||
msgstr "Збігається"
|
msgstr "Збігається"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:422
|
#: ../js/ui/status/bluetooth.js:418
|
||||||
msgid "Does not match"
|
msgid "Does not match"
|
||||||
msgstr "Не збігається"
|
msgstr "Не збігається"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:445
|
#: ../js/ui/status/bluetooth.js:441
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Pairing request for %s"
|
msgid "Pairing request for %s"
|
||||||
msgstr "Запит на сполучення для %s"
|
msgstr "Запит на сполучення для %s"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:453
|
#: ../js/ui/status/bluetooth.js:449
|
||||||
msgid "Please enter the PIN mentioned on the device."
|
msgid "Please enter the PIN mentioned on the device."
|
||||||
msgstr "Будь ласка, введіть PIN, згаданий на пристрої."
|
msgstr "Будь ласка, введіть PIN, згаданий на пристрої."
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:469
|
#: ../js/ui/status/bluetooth.js:465
|
||||||
msgid "OK"
|
msgid "OK"
|
||||||
msgstr "Гаразд"
|
msgstr "Гаразд"
|
||||||
|
|
||||||
@ -817,17 +830,147 @@ msgstr "Показувати розкладку клавіатури…"
|
|||||||
msgid "Localization Settings"
|
msgid "Localization Settings"
|
||||||
msgstr "Параметри локалізації"
|
msgstr "Параметри локалізації"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:102 ../js/ui/status/network.js:1393
|
||||||
|
msgid "<unknown>"
|
||||||
|
msgstr "<невідомо>"
|
||||||
|
|
||||||
|
#. Translators: this indicates that wireless or wwan is disabled by hardware killswitch
|
||||||
|
#: ../js/ui/status/network.js:295
|
||||||
|
msgid "disabled"
|
||||||
|
msgstr "вимкнено"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:476
|
||||||
|
msgid "connecting..."
|
||||||
|
msgstr "з'єднання…"
|
||||||
|
|
||||||
|
#. Translators: this is for network connections that require some kind of key or password
|
||||||
|
#: ../js/ui/status/network.js:479
|
||||||
|
msgid "authentication required"
|
||||||
|
msgstr "Потрібна аутентифікація"
|
||||||
|
|
||||||
|
#. Translators: this is for wired network devices that are physically disconnected
|
||||||
|
#: ../js/ui/status/network.js:485
|
||||||
|
msgid "cable unplugged"
|
||||||
|
msgstr "кабель від'єднано"
|
||||||
|
|
||||||
|
#. Translators: this is for a network device that cannot be activated (for example it
|
||||||
|
#. is disabled by rfkill, or it has no coverage
|
||||||
|
#: ../js/ui/status/network.js:489
|
||||||
|
msgid "unavailable"
|
||||||
|
msgstr "недоступний"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:491
|
||||||
|
msgid "connection failed"
|
||||||
|
msgstr "не вдалось з'єднатись"
|
||||||
|
|
||||||
|
#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
|
||||||
|
#. and we cannot access its settings (including the name)
|
||||||
|
#: ../js/ui/status/network.js:571 ../js/ui/status/network.js:1341
|
||||||
|
msgid "Connected (private)"
|
||||||
|
msgstr "З'єднано (приватно)"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:636
|
||||||
|
msgid "Auto Ethernet"
|
||||||
|
msgstr "Автоматично Ethernet"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:697
|
||||||
|
msgid "Auto broadband"
|
||||||
|
msgstr "Автоматично радіомережа"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:700
|
||||||
|
msgid "Auto dial-up"
|
||||||
|
msgstr "Автоматично додзвін"
|
||||||
|
|
||||||
|
#. TRANSLATORS: this the automatic wireless connection name (including the network name)
|
||||||
|
#: ../js/ui/status/network.js:843 ../js/ui/status/network.js:1353
|
||||||
|
#, c-format
|
||||||
|
msgid "Auto %s"
|
||||||
|
msgstr "Автоматично %s"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:845
|
||||||
|
msgid "Auto bluetooth"
|
||||||
|
msgstr "Автоматично Bluetooth"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1355
|
||||||
|
msgid "Auto wireless"
|
||||||
|
msgstr "Автоматично бездротова мережа"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1413
|
||||||
|
msgid "More..."
|
||||||
|
msgstr "Більше…"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1436
|
||||||
|
msgid "Enable networking"
|
||||||
|
msgstr "Увімкнути мережу"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1448
|
||||||
|
msgid "Wired"
|
||||||
|
msgstr "Дротова"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1459
|
||||||
|
msgid "Wireless"
|
||||||
|
msgstr "Бездротова"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1469
|
||||||
|
msgid "Mobile broadband"
|
||||||
|
msgstr "Мобільна радіомережа"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1479
|
||||||
|
msgid "VPN Connections"
|
||||||
|
msgstr "З'єднання VPN"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1488
|
||||||
|
msgid "Network Settings"
|
||||||
|
msgstr "Налаштування мережі"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1783
|
||||||
|
#, c-format
|
||||||
|
msgid "You're now connected to mobile broadband connection '%s'"
|
||||||
|
msgstr "Зараз ви з'єднані через мобільну радіомережу «%s»"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1787
|
||||||
|
#, c-format
|
||||||
|
msgid "You're now connected to wireless network '%s'"
|
||||||
|
msgstr "Зараз ви з'єднані через бездротову мережу «%s»"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1791
|
||||||
|
#, c-format
|
||||||
|
msgid "You're now connected to wired network '%s'"
|
||||||
|
msgstr "Зараз ви з'єднані через дротову мережу «%s»"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1795
|
||||||
|
#, c-format
|
||||||
|
msgid "You're now connected to VPN network '%s'"
|
||||||
|
msgstr "Зараз ви з'єднані через мережу VPN «%s»"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1800
|
||||||
|
#, c-format
|
||||||
|
msgid "You're now connected to '%s'"
|
||||||
|
msgstr "Зараз ви з'єднані через «%s»"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1808
|
||||||
|
msgid "Connection established"
|
||||||
|
msgstr "З'єднання встановлено"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1930
|
||||||
|
msgid "Networking is disabled"
|
||||||
|
msgstr "Мережу вимкнено"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:2055
|
||||||
|
msgid "Network Manager"
|
||||||
|
msgstr "Керування мережею"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:85
|
#: ../js/ui/status/power.js:85
|
||||||
msgid "Power Settings"
|
msgid "Power Settings"
|
||||||
msgstr "Енергетичні параметри"
|
msgstr "Енергетичні параметри"
|
||||||
|
|
||||||
#. 0 is reported when UPower does not have enough data
|
#. 0 is reported when UPower does not have enough data
|
||||||
#. to estimate battery life
|
#. to estimate battery life
|
||||||
#: ../js/ui/status/power.js:110
|
#: ../js/ui/status/power.js:111
|
||||||
msgid "Estimating..."
|
msgid "Estimating..."
|
||||||
msgstr "Оцінювання…"
|
msgstr "Оцінювання…"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:117
|
#: ../js/ui/status/power.js:118
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d hour remaining"
|
msgid "%d hour remaining"
|
||||||
msgid_plural "%d hours remaining"
|
msgid_plural "%d hours remaining"
|
||||||
@ -836,26 +979,26 @@ msgstr[1] "Залишилось %d години"
|
|||||||
msgstr[2] "Залишилось %d годин"
|
msgstr[2] "Залишилось %d годин"
|
||||||
|
|
||||||
#. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining"
|
#. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining"
|
||||||
#: ../js/ui/status/power.js:120
|
#: ../js/ui/status/power.js:121
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d %s %d %s remaining"
|
msgid "%d %s %d %s remaining"
|
||||||
msgstr "Залишилось %d %s %d %s"
|
msgstr "Залишилось %d %s %d %s"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:122
|
#: ../js/ui/status/power.js:123
|
||||||
msgid "hour"
|
msgid "hour"
|
||||||
msgid_plural "hours"
|
msgid_plural "hours"
|
||||||
msgstr[0] "година"
|
msgstr[0] "година"
|
||||||
msgstr[1] "години"
|
msgstr[1] "години"
|
||||||
msgstr[2] "годин"
|
msgstr[2] "годин"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:122
|
#: ../js/ui/status/power.js:123
|
||||||
msgid "minute"
|
msgid "minute"
|
||||||
msgid_plural "minutes"
|
msgid_plural "minutes"
|
||||||
msgstr[0] "хвилина"
|
msgstr[0] "хвилина"
|
||||||
msgstr[1] "хвилини"
|
msgstr[1] "хвилини"
|
||||||
msgstr[2] "хвилин"
|
msgstr[2] "хвилин"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:125
|
#: ../js/ui/status/power.js:126
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d minute remaining"
|
msgid "%d minute remaining"
|
||||||
msgid_plural "%d minutes remaining"
|
msgid_plural "%d minutes remaining"
|
||||||
@ -863,78 +1006,78 @@ msgstr[0] "Залишилось %d хвилина"
|
|||||||
msgstr[1] "Залишилось %d хвилини"
|
msgstr[1] "Залишилось %d хвилини"
|
||||||
msgstr[2] "Залишилось %d хвилин"
|
msgstr[2] "Залишилось %d хвилин"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:227
|
#: ../js/ui/status/power.js:228
|
||||||
msgid "AC adapter"
|
msgid "AC adapter"
|
||||||
msgstr "Блок живлення"
|
msgstr "Блок живлення"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:229
|
#: ../js/ui/status/power.js:230
|
||||||
msgid "Laptop battery"
|
msgid "Laptop battery"
|
||||||
msgstr "Батарея ноутбука"
|
msgstr "Батарея ноутбука"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:231
|
#: ../js/ui/status/power.js:232
|
||||||
msgid "UPS"
|
msgid "UPS"
|
||||||
msgstr "UPS"
|
msgstr "UPS"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:233
|
#: ../js/ui/status/power.js:234
|
||||||
msgid "Monitor"
|
msgid "Monitor"
|
||||||
msgstr "Монітор"
|
msgstr "Монітор"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:235
|
#: ../js/ui/status/power.js:236
|
||||||
msgid "Mouse"
|
msgid "Mouse"
|
||||||
msgstr "Миша"
|
msgstr "Миша"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:237
|
#: ../js/ui/status/power.js:238
|
||||||
msgid "Keyboard"
|
msgid "Keyboard"
|
||||||
msgstr "Клавіатура"
|
msgstr "Клавіатура"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:239
|
#: ../js/ui/status/power.js:240
|
||||||
msgid "PDA"
|
msgid "PDA"
|
||||||
msgstr "КПК"
|
msgstr "КПК"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:241
|
#: ../js/ui/status/power.js:242
|
||||||
msgid "Cell phone"
|
msgid "Cell phone"
|
||||||
msgstr "Мобільний телефон"
|
msgstr "Мобільний телефон"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:243
|
#: ../js/ui/status/power.js:244
|
||||||
msgid "Media player"
|
msgid "Media player"
|
||||||
msgstr "Програвач"
|
msgstr "Програвач"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:245
|
#: ../js/ui/status/power.js:246
|
||||||
msgid "Tablet"
|
msgid "Tablet"
|
||||||
msgstr "Планшет"
|
msgstr "Планшет"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:247
|
#: ../js/ui/status/power.js:248
|
||||||
msgid "Computer"
|
msgid "Computer"
|
||||||
msgstr "Комп'ютер"
|
msgstr "Комп'ютер"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:249 ../src/shell-app-system.c:1013
|
#: ../js/ui/status/power.js:250 ../src/shell-app-system.c:1088
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "Невідомо"
|
msgstr "Невідомо"
|
||||||
|
|
||||||
#: ../js/ui/status/volume.js:44
|
#: ../js/ui/status/volume.js:45
|
||||||
msgid "Volume"
|
msgid "Volume"
|
||||||
msgstr "Гучність"
|
msgstr "Гучність"
|
||||||
|
|
||||||
#: ../js/ui/status/volume.js:57
|
#: ../js/ui/status/volume.js:58
|
||||||
msgid "Microphone"
|
msgid "Microphone"
|
||||||
msgstr "Мікрофон"
|
msgstr "Мікрофон"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:239
|
#: ../js/ui/telepathyClient.js:332
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is online."
|
msgid "%s is online."
|
||||||
msgstr "%s в мережі."
|
msgstr "%s в мережі."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:244
|
#: ../js/ui/telepathyClient.js:337
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is offline."
|
msgid "%s is offline."
|
||||||
msgstr "%s поза мережею."
|
msgstr "%s поза мережею."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:247
|
#: ../js/ui/telepathyClient.js:340
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is away."
|
msgid "%s is away."
|
||||||
msgstr "%s відійшов."
|
msgstr "%s відійшов."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:250
|
#: ../js/ui/telepathyClient.js:343
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is busy."
|
msgid "%s is busy."
|
||||||
msgstr "%s зайнятий."
|
msgstr "%s зайнятий."
|
||||||
@ -942,7 +1085,7 @@ msgstr "%s зайнятий."
|
|||||||
#. Translators: this is a time format string followed by a date.
|
#. Translators: this is a time format string followed by a date.
|
||||||
#. If applicable, replace %X with a strftime format valid for your
|
#. If applicable, replace %X with a strftime format valid for your
|
||||||
#. locale, without seconds.
|
#. locale, without seconds.
|
||||||
#: ../js/ui/telepathyClient.js:357
|
#: ../js/ui/telepathyClient.js:474
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent at %X on %A"
|
msgid "Sent at %X on %A"
|
||||||
msgstr "Відправити на %X в %A"
|
msgstr "Відправити на %X в %A"
|
||||||
@ -951,11 +1094,11 @@ msgstr "Відправити на %X в %A"
|
|||||||
#. in the search entry when no search is
|
#. in the search entry when no search is
|
||||||
#. active; it should not exceed ~30
|
#. active; it should not exceed ~30
|
||||||
#. characters.
|
#. characters.
|
||||||
#: ../js/ui/viewSelector.js:117
|
#: ../js/ui/viewSelector.js:122
|
||||||
msgid "Type to search..."
|
msgid "Type to search..."
|
||||||
msgstr "Введіть для пошуку…"
|
msgstr "Введіть для пошуку…"
|
||||||
|
|
||||||
#: ../js/ui/viewSelector.js:137 ../src/shell-util.c:250
|
#: ../js/ui/viewSelector.js:142 ../src/shell-util.c:250
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "Пошук"
|
msgstr "Пошук"
|
||||||
|
|
||||||
@ -971,7 +1114,7 @@ msgstr "«%s» готовий"
|
|||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The number of sound outputs on a particular device
|
#. * The number of sound outputs on a particular device
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1094
|
#: ../src/gvc/gvc-mixer-control.c:1098
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%u Output"
|
msgid "%u Output"
|
||||||
msgid_plural "%u Outputs"
|
msgid_plural "%u Outputs"
|
||||||
@ -981,7 +1124,7 @@ msgstr[2] "%u виходів"
|
|||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The number of sound inputs on a particular device
|
#. * The number of sound inputs on a particular device
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1104
|
#: ../src/gvc/gvc-mixer-control.c:1108
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%u Input"
|
msgid "%u Input"
|
||||||
msgid_plural "%u Inputs"
|
msgid_plural "%u Inputs"
|
||||||
@ -989,19 +1132,24 @@ msgstr[0] "%u вхід"
|
|||||||
msgstr[1] "%u входи"
|
msgstr[1] "%u входи"
|
||||||
msgstr[2] "%u входів"
|
msgstr[2] "%u входів"
|
||||||
|
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1402
|
#: ../src/gvc/gvc-mixer-control.c:1406
|
||||||
msgid "System Sounds"
|
msgid "System Sounds"
|
||||||
msgstr "Системні звуки"
|
msgstr "Системні звуки"
|
||||||
|
|
||||||
#: ../src/main.c:395
|
#: ../src/main.c:446
|
||||||
msgid "Print version"
|
msgid "Print version"
|
||||||
msgstr "Показати версію"
|
msgstr "Показати версію"
|
||||||
|
|
||||||
#: ../src/shell-global.c:1308
|
#: ../src/shell-app.c:454
|
||||||
|
#, c-format
|
||||||
|
msgid "Failed to launch '%s'"
|
||||||
|
msgstr "Не вдалось запустити «%s»"
|
||||||
|
|
||||||
|
#: ../src/shell-global.c:1395
|
||||||
msgid "Less than a minute ago"
|
msgid "Less than a minute ago"
|
||||||
msgstr "Менше хвилини тому"
|
msgstr "Менше хвилини тому"
|
||||||
|
|
||||||
#: ../src/shell-global.c:1312
|
#: ../src/shell-global.c:1399
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d minute ago"
|
msgid "%d minute ago"
|
||||||
msgid_plural "%d minutes ago"
|
msgid_plural "%d minutes ago"
|
||||||
@ -1009,7 +1157,7 @@ msgstr[0] "%d хвилина тому"
|
|||||||
msgstr[1] "%d хвилини тому"
|
msgstr[1] "%d хвилини тому"
|
||||||
msgstr[2] "%d хвилин тому"
|
msgstr[2] "%d хвилин тому"
|
||||||
|
|
||||||
#: ../src/shell-global.c:1317
|
#: ../src/shell-global.c:1404
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d hour ago"
|
msgid "%d hour ago"
|
||||||
msgid_plural "%d hours ago"
|
msgid_plural "%d hours ago"
|
||||||
@ -1017,7 +1165,7 @@ msgstr[0] "%d година тому"
|
|||||||
msgstr[1] "%d години тому"
|
msgstr[1] "%d години тому"
|
||||||
msgstr[2] "%d годин тому"
|
msgstr[2] "%d годин тому"
|
||||||
|
|
||||||
#: ../src/shell-global.c:1322
|
#: ../src/shell-global.c:1409
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d day ago"
|
msgid "%d day ago"
|
||||||
msgid_plural "%d days ago"
|
msgid_plural "%d days ago"
|
||||||
@ -1025,7 +1173,7 @@ msgstr[0] "%d день тому"
|
|||||||
msgstr[1] "%d дні тому"
|
msgstr[1] "%d дні тому"
|
||||||
msgstr[2] "%d днів тому"
|
msgstr[2] "%d днів тому"
|
||||||
|
|
||||||
#: ../src/shell-global.c:1327
|
#: ../src/shell-global.c:1414
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d week ago"
|
msgid "%d week ago"
|
||||||
msgid_plural "%d weeks ago"
|
msgid_plural "%d weeks ago"
|
||||||
@ -1033,6 +1181,14 @@ msgstr[0] "%d тиждень тому"
|
|||||||
msgstr[1] "%d тижні тому"
|
msgstr[1] "%d тижні тому"
|
||||||
msgstr[2] "%d тижнів тому"
|
msgstr[2] "%d тижнів тому"
|
||||||
|
|
||||||
|
#: ../src/shell-mobile-providers.c:80
|
||||||
|
msgid "United Kingdom"
|
||||||
|
msgstr "Великобританія"
|
||||||
|
|
||||||
|
#: ../src/shell-mobile-providers.c:526
|
||||||
|
msgid "Default"
|
||||||
|
msgstr "Типово"
|
||||||
|
|
||||||
#: ../src/shell-polkit-authentication-agent.c:334
|
#: ../src/shell-polkit-authentication-agent.c:334
|
||||||
msgid "Authentication dialog was dismissed by the user"
|
msgid "Authentication dialog was dismissed by the user"
|
||||||
msgstr "Вікно авторизації відхилено користувачем"
|
msgstr "Вікно авторизації відхилено користувачем"
|
||||||
@ -1057,6 +1213,33 @@ msgstr "Файлова система"
|
|||||||
msgid "%1$s: %2$s"
|
msgid "%1$s: %2$s"
|
||||||
msgstr "%1$s: %2$s"
|
msgstr "%1$s: %2$s"
|
||||||
|
|
||||||
|
#~ msgid "Shut Down"
|
||||||
|
#~ msgstr "Вимкнути"
|
||||||
|
|
||||||
|
#~ msgid "Click Shut Down to quit these applications and shut down the system."
|
||||||
|
#~ msgstr "Натисніть «Вимкнути», щоб вийти з усіх програм і вимкнути систему."
|
||||||
|
|
||||||
|
#~ msgid "The system will shut down automatically in %d seconds."
|
||||||
|
#~ msgstr "Систему буде вимкнено автоматично через %d секунд."
|
||||||
|
|
||||||
|
#~ msgid "Shutting down the system."
|
||||||
|
#~ msgstr "Вимкнення системи."
|
||||||
|
|
||||||
|
#~ msgid "Confirm"
|
||||||
|
#~ msgstr "Підтвердити"
|
||||||
|
|
||||||
|
#~ msgid "Panel"
|
||||||
|
#~ msgstr "Панель"
|
||||||
|
|
||||||
|
#~ msgid "No such application"
|
||||||
|
#~ msgstr "Нема такої програми"
|
||||||
|
|
||||||
|
#~ msgid "Screen Reader"
|
||||||
|
#~ msgstr "Читання з екрану"
|
||||||
|
|
||||||
|
#~ msgid "Screen Keyboard"
|
||||||
|
#~ msgstr "Екранна клавіатура"
|
||||||
|
|
||||||
#~ msgid "PREFERENCES"
|
#~ msgid "PREFERENCES"
|
||||||
#~ msgstr "ПАРАМЕТРИ"
|
#~ msgstr "ПАРАМЕТРИ"
|
||||||
|
|
||||||
|
515
po/vi.po
515
po/vi.po
@ -7,9 +7,9 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gnome-shell\n"
|
"Project-Id-Version: gnome-shell\n"
|
||||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||||
"shell&component=general\n"
|
"shell&keywords=I18N+L10N&component=general\n"
|
||||||
"POT-Creation-Date: 2011-03-05 08:37+0000\n"
|
"POT-Creation-Date: 2011-03-24 08:03+0000\n"
|
||||||
"PO-Revision-Date: 2011-03-05 15:41+0700\n"
|
"PO-Revision-Date: 2011-03-25 00:31+0700\n"
|
||||||
"Last-Translator: Duy <pclouds@gmail.com>\n"
|
"Last-Translator: Duy <pclouds@gmail.com>\n"
|
||||||
"Language-Team: Vietnamese <vi-VN@googlegroups.com>\n"
|
"Language-Team: Vietnamese <vi-VN@googlegroups.com>\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
@ -59,7 +59,6 @@ msgid "History for command (Alt-F2) dialog"
|
|||||||
msgstr "Hộp thoại lịch sử lệnh (Alt-F2)"
|
msgstr "Hộp thoại lịch sử lệnh (Alt-F2)"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:7
|
#: ../data/org.gnome.shell.gschema.xml.in.h:7
|
||||||
#| msgid "History for command (Alt-F2) dialog"
|
|
||||||
msgid "History for the looking glass dialog"
|
msgid "History for the looking glass dialog"
|
||||||
msgstr "Lịch sử hộp thoại looking glass"
|
msgstr "Lịch sử hộp thoại looking glass"
|
||||||
|
|
||||||
@ -150,7 +149,10 @@ msgid ""
|
|||||||
"used ones (e.g. in launchers). While this data will be kept private, you may "
|
"used ones (e.g. in launchers). While this data will be kept private, you may "
|
||||||
"want to disable this for privacy reasons. Please note that doing so won't "
|
"want to disable this for privacy reasons. Please note that doing so won't "
|
||||||
"remove already saved data."
|
"remove already saved data."
|
||||||
msgstr "GNOME Shell bình thường sẽ theo dõi các ứng dụng tích cực để thể hiện phù hợp (ví dụ, bộ phóng). Mặc dù thông tin này là riêng tư, bạn vẫn có thể tắt vì lý do cá nhân. Chú ý là làm vậy sẽ không xoá bỏ những dữ liệu đã có."
|
msgstr ""
|
||||||
|
"GNOME Shell bình thường sẽ theo dõi các ứng dụng tích cực để thể hiện phù "
|
||||||
|
"hợp (ví dụ, bộ phóng). Mặc dù thông tin này là riêng tư, bạn vẫn có thể tắt "
|
||||||
|
"vì lý do cá nhân. Chú ý là làm vậy sẽ không xoá bỏ những dữ liệu đã có."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:22
|
#: ../data/org.gnome.shell.gschema.xml.in.h:22
|
||||||
msgid "Uuids of extensions to disable"
|
msgid "Uuids of extensions to disable"
|
||||||
@ -164,47 +166,43 @@ msgstr "Có thu thập thống kê sử dụng ứng dụng không"
|
|||||||
msgid "disabled OpenSearch providers"
|
msgid "disabled OpenSearch providers"
|
||||||
msgstr "Phần cung cấp OpenSearch bị tắt"
|
msgstr "Phần cung cấp OpenSearch bị tắt"
|
||||||
|
|
||||||
#: ../js/misc/util.js:86
|
#: ../js/misc/util.js:71
|
||||||
msgid "Command not found"
|
msgid "Command not found"
|
||||||
msgstr "Không tìm thấy lệnh"
|
msgstr "Không tìm thấy lệnh"
|
||||||
|
|
||||||
#. Replace "Error invoking GLib.shell_parse_argv: " with
|
#. Replace "Error invoking GLib.shell_parse_argv: " with
|
||||||
#. something nicer
|
#. something nicer
|
||||||
#: ../js/misc/util.js:113
|
#: ../js/misc/util.js:98
|
||||||
msgid "Could not parse command:"
|
msgid "Could not parse command:"
|
||||||
msgstr "Không thể phân tích lệnh:"
|
msgstr "Không thể phân tích lệnh:"
|
||||||
|
|
||||||
#: ../js/misc/util.js:135
|
#: ../js/misc/util.js:106
|
||||||
msgid "No such application"
|
|
||||||
msgstr "Không có ứng dụng đó"
|
|
||||||
|
|
||||||
#: ../js/misc/util.js:148
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Execution of '%s' failed:"
|
msgid "Execution of '%s' failed:"
|
||||||
msgstr "Lỗi thực hiện '%s':"
|
msgstr "Lỗi thực hiện '%s':"
|
||||||
|
|
||||||
#. Translators: Filter to display all applications
|
#. Translators: Filter to display all applications
|
||||||
#: ../js/ui/appDisplay.js:195
|
#: ../js/ui/appDisplay.js:230
|
||||||
msgid "All"
|
msgid "All"
|
||||||
msgstr "Tất cả"
|
msgstr "Tất cả"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:285
|
#: ../js/ui/appDisplay.js:328
|
||||||
msgid "APPLICATIONS"
|
msgid "APPLICATIONS"
|
||||||
msgstr "ỨNG DỤNG"
|
msgstr "ỨNG DỤNG"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:311
|
#: ../js/ui/appDisplay.js:354
|
||||||
msgid "SETTINGS"
|
msgid "SETTINGS"
|
||||||
msgstr "THIẾT LẬP"
|
msgstr "THIẾT LẬP"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:565
|
#: ../js/ui/appDisplay.js:625
|
||||||
msgid "New Window"
|
msgid "New Window"
|
||||||
msgstr "Cửa sổ mới"
|
msgstr "Cửa sổ mới"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:568
|
#: ../js/ui/appDisplay.js:628
|
||||||
msgid "Remove from Favorites"
|
msgid "Remove from Favorites"
|
||||||
msgstr "Bỏ đánh dấu ưa thích"
|
msgstr "Bỏ đánh dấu ưa thích"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:569
|
#: ../js/ui/appDisplay.js:629
|
||||||
msgid "Add to Favorites"
|
msgid "Add to Favorites"
|
||||||
msgstr "Đánh dấu ưa thích"
|
msgstr "Đánh dấu ưa thích"
|
||||||
|
|
||||||
@ -224,7 +222,7 @@ msgstr "Đã bỏ đánh dấu ưa thích cho %s"
|
|||||||
#: ../js/ui/calendar.js:66
|
#: ../js/ui/calendar.js:66
|
||||||
msgctxt "event list time"
|
msgctxt "event list time"
|
||||||
msgid "All Day"
|
msgid "All Day"
|
||||||
msgstr "Nguyên ngày"
|
msgstr "Cả ngày"
|
||||||
|
|
||||||
#. Translators: Shown in calendar event list, if 24h format
|
#. Translators: Shown in calendar event list, if 24h format
|
||||||
#: ../js/ui/calendar.js:71
|
#: ../js/ui/calendar.js:71
|
||||||
@ -364,7 +362,7 @@ msgstr "Tuần này"
|
|||||||
msgid "Next week"
|
msgid "Next week"
|
||||||
msgstr "Tuần tới"
|
msgstr "Tuần tới"
|
||||||
|
|
||||||
#: ../js/ui/dash.js:174
|
#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:994
|
||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "Loại bỏ"
|
msgstr "Loại bỏ"
|
||||||
|
|
||||||
@ -372,54 +370,54 @@ msgstr "Loại bỏ"
|
|||||||
msgid "Date and Time Settings"
|
msgid "Date and Time Settings"
|
||||||
msgstr "Thiết lập ngày giờ"
|
msgstr "Thiết lập ngày giờ"
|
||||||
|
|
||||||
#: ../js/ui/dateMenu.js:110
|
#: ../js/ui/dateMenu.js:111
|
||||||
msgid "Open Calendar"
|
msgid "Open Calendar"
|
||||||
msgstr "Mở lịch"
|
msgstr "Mở lịch"
|
||||||
|
|
||||||
#. Translators: This is the time format with date used
|
#. Translators: This is the time format with date used
|
||||||
#. in 24-hour mode.
|
#. in 24-hour mode.
|
||||||
#: ../js/ui/dateMenu.js:162
|
#: ../js/ui/dateMenu.js:164
|
||||||
msgid "%a %b %e, %R:%S"
|
msgid "%a %b %e, %R:%S"
|
||||||
msgstr "%R:%S, %a %b %e"
|
msgstr "%a %R:%S, %e %b"
|
||||||
|
|
||||||
#: ../js/ui/dateMenu.js:163
|
#: ../js/ui/dateMenu.js:165
|
||||||
msgid "%a %b %e, %R"
|
msgid "%a %b %e, %R"
|
||||||
msgstr "%R, %a %b %e"
|
msgstr "%a %R, %e %b"
|
||||||
|
|
||||||
#. Translators: This is the time format without date used
|
#. Translators: This is the time format without date used
|
||||||
#. in 24-hour mode.
|
#. in 24-hour mode.
|
||||||
#: ../js/ui/dateMenu.js:167
|
#: ../js/ui/dateMenu.js:169
|
||||||
msgid "%a %R:%S"
|
msgid "%a %R:%S"
|
||||||
msgstr "%R:%S %a"
|
msgstr "%a %R:%S"
|
||||||
|
|
||||||
#: ../js/ui/dateMenu.js:168
|
#: ../js/ui/dateMenu.js:170
|
||||||
msgid "%a %R"
|
msgid "%a %R"
|
||||||
msgstr "%R %a"
|
msgstr "%a %R"
|
||||||
|
|
||||||
#. Translators: This is a time format with date used
|
#. Translators: This is a time format with date used
|
||||||
#. for AM/PM.
|
#. for AM/PM.
|
||||||
#: ../js/ui/dateMenu.js:175
|
#: ../js/ui/dateMenu.js:177
|
||||||
msgid "%a %b %e, %l:%M:%S %p"
|
msgid "%a %b %e, %l:%M:%S %p"
|
||||||
msgstr "%a %b %e, %l:%M:%S %p"
|
msgstr "%a %e %b, %l:%M:%S %p"
|
||||||
|
|
||||||
#: ../js/ui/dateMenu.js:176
|
#: ../js/ui/dateMenu.js:178
|
||||||
msgid "%a %b %e, %l:%M %p"
|
msgid "%a %b %e, %l:%M %p"
|
||||||
msgstr "%a %b %e, %l:%M %p"
|
msgstr "%a %e %b, %l:%M %p"
|
||||||
|
|
||||||
#. Translators: This is a time format without date used
|
#. Translators: This is a time format without date used
|
||||||
#. for AM/PM.
|
#. for AM/PM.
|
||||||
#: ../js/ui/dateMenu.js:180
|
#: ../js/ui/dateMenu.js:182
|
||||||
msgid "%a %l:%M:%S %p"
|
msgid "%a %l:%M:%S %p"
|
||||||
msgstr "%a %l:%M:%S %p"
|
msgstr "%a %l:%M:%S %p"
|
||||||
|
|
||||||
#: ../js/ui/dateMenu.js:181
|
#: ../js/ui/dateMenu.js:183
|
||||||
msgid "%a %l:%M %p"
|
msgid "%a %l:%M %p"
|
||||||
msgstr "%a %l:%M %p"
|
msgstr "%a %l:%M %p"
|
||||||
|
|
||||||
#. Translators: This is the date format to use when the calendar popup is
|
#. 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").
|
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
|
||||||
#.
|
#.
|
||||||
#: ../js/ui/dateMenu.js:207
|
#: ../js/ui/dateMenu.js:194
|
||||||
msgid "%A %B %e, %Y"
|
msgid "%A %B %e, %Y"
|
||||||
msgstr "%A %e %B, %Y"
|
msgstr "%A %e %B, %Y"
|
||||||
|
|
||||||
@ -432,7 +430,7 @@ msgstr "MỤC GẦN ĐÂY"
|
|||||||
msgid "Log Out %s"
|
msgid "Log Out %s"
|
||||||
msgstr "Đăng xuất %s"
|
msgstr "Đăng xuất %s"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:69
|
#: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:70
|
||||||
msgid "Log Out"
|
msgid "Log Out"
|
||||||
msgstr "Đăng xuất"
|
msgstr "Đăng xuất"
|
||||||
|
|
||||||
@ -454,46 +452,48 @@ msgstr "Bạn sẽ tự động đăng xuất sau %d giây."
|
|||||||
msgid "Logging out of the system."
|
msgid "Logging out of the system."
|
||||||
msgstr "Đang xuất khỏi hệ thống."
|
msgstr "Đang xuất khỏi hệ thống."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:74 ../js/ui/endSessionDialog.js:78
|
#: ../js/ui/endSessionDialog.js:75 ../js/ui/endSessionDialog.js:82
|
||||||
msgid "Shut Down"
|
#| msgid "Power Off..."
|
||||||
|
msgid "Power Off"
|
||||||
msgstr "Tắt máy"
|
msgstr "Tắt máy"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:75
|
|
||||||
msgid "Click Shut Down to quit these applications and shut down the system."
|
|
||||||
msgstr "Nhấn Tắt máy để thoát những ứng dụng này và tắt hệ thống."
|
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:76
|
#: ../js/ui/endSessionDialog.js:76
|
||||||
#, c-format
|
#| msgid "Click Log Out to quit these applications and log out of the system."
|
||||||
msgid "The system will shut down automatically in %d seconds."
|
msgid "Click Power Off to quit these applications and power off the system."
|
||||||
msgstr "Hệ thống sẽ tự động tắt sau %d giây."
|
msgstr "Nhấn Tắt máy để thoát những ứng dụng này và tắt máy."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:77
|
#: ../js/ui/endSessionDialog.js:77
|
||||||
msgid "Shutting down the system."
|
#, c-format
|
||||||
msgstr "Tắt hệ thống."
|
#| msgid "The system will restart automatically in %d seconds."
|
||||||
|
msgid "The system will power off automatically in %d seconds."
|
||||||
|
msgstr "Hệ thống sẽ tự động tắt sau %d giây."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:84 ../js/ui/endSessionDialog.js:88
|
#: ../js/ui/endSessionDialog.js:78
|
||||||
|
#| msgid "Logging out of the system."
|
||||||
|
msgid "Powering off the system."
|
||||||
|
msgstr "Tắt máy."
|
||||||
|
|
||||||
|
#: ../js/ui/endSessionDialog.js:80 ../js/ui/endSessionDialog.js:88
|
||||||
|
#: ../js/ui/endSessionDialog.js:93
|
||||||
msgid "Restart"
|
msgid "Restart"
|
||||||
msgstr "Khởi động lại"
|
msgstr "Khởi động lại"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:85
|
#: ../js/ui/endSessionDialog.js:89
|
||||||
msgid "Click Restart to quit these applications and restart the system."
|
msgid "Click Restart to quit these applications and restart the system."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Nhấn Khởi động lại để thoát những ứng dụng này và khởi động lại hệ thống."
|
"Nhấn Khởi động lại để thoát những ứng dụng này và khởi động lại hệ thống."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:86
|
#: ../js/ui/endSessionDialog.js:90
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "The system will restart automatically in %d seconds."
|
msgid "The system will restart automatically in %d seconds."
|
||||||
msgstr "Hệ thống sẽ tự động khởi động lại sau %d giây."
|
msgstr "Hệ thống sẽ tự động khởi động lại sau %d giây."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:87
|
#: ../js/ui/endSessionDialog.js:91
|
||||||
msgid "Restarting the system."
|
msgid "Restarting the system."
|
||||||
msgstr "Khởi động lại hệ thống."
|
msgstr "Khởi động lại hệ thống."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:395
|
#: ../js/ui/endSessionDialog.js:415 ../js/ui/polkitAuthenticationAgent.js:172
|
||||||
msgid "Confirm"
|
#: ../js/ui/status/bluetooth.js:466
|
||||||
msgstr "Xác nhận"
|
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:400 ../js/ui/status/bluetooth.js:470
|
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Thôi"
|
msgstr "Thôi"
|
||||||
|
|
||||||
@ -507,7 +507,7 @@ msgstr "Bật"
|
|||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The device has been disabled
|
#. * The device has been disabled
|
||||||
#: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1087
|
#: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1091
|
||||||
msgid "Disabled"
|
msgid "Disabled"
|
||||||
msgstr "Tắt"
|
msgstr "Tắt"
|
||||||
|
|
||||||
@ -527,34 +527,48 @@ msgstr "Xem mã nguồn"
|
|||||||
msgid "Web Page"
|
msgid "Web Page"
|
||||||
msgstr "Trang Web"
|
msgstr "Trang Web"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1907
|
#: ../js/ui/messageTray.js:987
|
||||||
|
msgid "Open"
|
||||||
|
msgstr "Mở"
|
||||||
|
|
||||||
|
#: ../js/ui/messageTray.js:2145
|
||||||
msgid "System Information"
|
msgid "System Information"
|
||||||
msgstr "Thông tin hệ thống"
|
msgstr "Thông tin hệ thống"
|
||||||
|
|
||||||
#: ../js/ui/overview.js:88
|
#: ../js/ui/overview.js:91
|
||||||
msgid "Undo"
|
msgid "Undo"
|
||||||
msgstr "Hoàn lại"
|
msgstr "Hoàn lại"
|
||||||
|
|
||||||
#: ../js/ui/overview.js:183
|
#: ../js/ui/overview.js:186
|
||||||
msgid "Windows"
|
msgid "Windows"
|
||||||
msgstr "Cửa sổ"
|
msgstr "Cửa sổ"
|
||||||
|
|
||||||
#: ../js/ui/overview.js:186
|
#: ../js/ui/overview.js:189
|
||||||
msgid "Applications"
|
msgid "Applications"
|
||||||
msgstr "Ứng dụng"
|
msgstr "Ứng dụng"
|
||||||
|
|
||||||
|
#. Translators: this is the name of the dock/favorites area on
|
||||||
|
#. the left of the overview
|
||||||
|
#: ../js/ui/overview.js:205
|
||||||
|
msgid "Dash"
|
||||||
|
msgstr "Khung ứng dụng"
|
||||||
|
|
||||||
#. TODO - _quit() doesn't really work on apps in state STARTING yet
|
#. TODO - _quit() doesn't really work on apps in state STARTING yet
|
||||||
#: ../js/ui/panel.js:531
|
#: ../js/ui/panel.js:515
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Quit %s"
|
msgid "Quit %s"
|
||||||
msgstr "Thoát %s"
|
msgstr "Thoát %s"
|
||||||
|
|
||||||
#. Button on the left side of the panel.
|
#. Button on the left side of the panel.
|
||||||
#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
|
#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
|
||||||
#: ../js/ui/panel.js:899
|
#: ../js/ui/panel.js:878
|
||||||
msgid "Activities"
|
msgid "Activities"
|
||||||
msgstr "Hoạt động"
|
msgstr "Hoạt động"
|
||||||
|
|
||||||
|
#: ../js/ui/panel.js:979
|
||||||
|
msgid "Top Bar"
|
||||||
|
msgstr "Thanh đỉnh"
|
||||||
|
|
||||||
#: ../js/ui/placeDisplay.js:122
|
#: ../js/ui/placeDisplay.js:122
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to unmount '%s'"
|
msgid "Failed to unmount '%s'"
|
||||||
@ -568,65 +582,84 @@ msgstr "Thử lại"
|
|||||||
msgid "Connect to..."
|
msgid "Connect to..."
|
||||||
msgstr "Kết nối đến..."
|
msgstr "Kết nối đến..."
|
||||||
|
|
||||||
#: ../js/ui/placeDisplay.js:409
|
#: ../js/ui/placeDisplay.js:380
|
||||||
msgid "PLACES & DEVICES"
|
msgid "PLACES & DEVICES"
|
||||||
msgstr "ĐỊA ĐIỂM & THIẾT BỊ"
|
msgstr "ĐỊA ĐIỂM & THIẾT BỊ"
|
||||||
|
|
||||||
|
#: ../js/ui/polkitAuthenticationAgent.js:74
|
||||||
|
msgid "Authentication Required"
|
||||||
|
msgstr "Cần xác thực"
|
||||||
|
|
||||||
|
#: ../js/ui/polkitAuthenticationAgent.js:108
|
||||||
|
msgid "Administrator"
|
||||||
|
msgstr "Quản trị"
|
||||||
|
|
||||||
|
#: ../js/ui/polkitAuthenticationAgent.js:176
|
||||||
|
msgid "Authenticate"
|
||||||
|
msgstr "Xác thực"
|
||||||
|
|
||||||
|
#: ../js/ui/polkitAuthenticationAgent.js:260
|
||||||
|
msgid "Sorry, that didn't work. Please try again."
|
||||||
|
msgstr "Rất tiếc, không được. Vui lòng thử lại."
|
||||||
|
|
||||||
|
#: ../js/ui/polkitAuthenticationAgent.js:272
|
||||||
|
msgid "Password:"
|
||||||
|
msgstr "Mật khẩu:"
|
||||||
|
|
||||||
#. Translators: this MUST be either "toggle-switch-us"
|
#. Translators: this MUST be either "toggle-switch-us"
|
||||||
#. (for toggle switches containing the English words
|
#. (for toggle switches containing the English words
|
||||||
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
||||||
#. switches containing "◯" and "|"). Other values will
|
#. switches containing "◯" and "|"). Other values will
|
||||||
#. simply result in invisible toggle switches.
|
#. simply result in invisible toggle switches.
|
||||||
#: ../js/ui/popupMenu.js:612
|
#: ../js/ui/popupMenu.js:679
|
||||||
msgid "toggle-switch-us"
|
msgid "toggle-switch-us"
|
||||||
msgstr "toggle-switch-intl"
|
msgstr "toggle-switch-intl"
|
||||||
|
|
||||||
#: ../js/ui/runDialog.js:201
|
#: ../js/ui/runDialog.js:205
|
||||||
msgid "Please enter a command:"
|
msgid "Please enter a command:"
|
||||||
msgstr "Vui lòng nhập lệnh:"
|
msgstr "Vui lòng nhập lệnh:"
|
||||||
|
|
||||||
#: ../js/ui/searchDisplay.js:283
|
#: ../js/ui/searchDisplay.js:310
|
||||||
msgid "Searching..."
|
msgid "Searching..."
|
||||||
msgstr "Đang tìm..."
|
msgstr "Đang tìm..."
|
||||||
|
|
||||||
#: ../js/ui/searchDisplay.js:297
|
#: ../js/ui/searchDisplay.js:324
|
||||||
msgid "No matching results."
|
msgid "No matching results."
|
||||||
msgstr "Không tìm thấy."
|
msgstr "Không tìm thấy."
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:102 ../js/ui/statusMenu.js:166
|
#: ../js/ui/statusMenu.js:161 ../js/ui/statusMenu.js:228
|
||||||
msgid "Power Off..."
|
msgid "Power Off..."
|
||||||
msgstr "Tắt máy..."
|
msgstr "Tắt máy..."
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:104 ../js/ui/statusMenu.js:165
|
#: ../js/ui/statusMenu.js:163 ../js/ui/statusMenu.js:227
|
||||||
#| msgid "Suspend..."
|
|
||||||
msgid "Suspend"
|
msgid "Suspend"
|
||||||
msgstr "Ngưng"
|
msgstr "Ngưng"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:125
|
#: ../js/ui/statusMenu.js:184
|
||||||
msgid "Available"
|
msgid "Available"
|
||||||
msgstr "Có mặt"
|
msgstr "Có mặt"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:130
|
#: ../js/ui/statusMenu.js:189
|
||||||
msgid "Busy"
|
msgid "Busy"
|
||||||
msgstr "Bận"
|
msgstr "Bận"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:138
|
#: ../js/ui/statusMenu.js:197
|
||||||
msgid "My Account"
|
msgid "My Account"
|
||||||
msgstr "Tài khoản"
|
msgstr "Tài khoản"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:142
|
#: ../js/ui/statusMenu.js:201
|
||||||
msgid "System Settings"
|
msgid "System Settings"
|
||||||
msgstr "Thiết lập hệ thống"
|
msgstr "Thiết lập hệ thống"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:149
|
#: ../js/ui/statusMenu.js:208
|
||||||
msgid "Lock Screen"
|
msgid "Lock Screen"
|
||||||
msgstr "Khoá màn hình"
|
msgstr "Khoá màn hình"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:153
|
#: ../js/ui/statusMenu.js:213
|
||||||
msgid "Switch User"
|
msgid "Switch User"
|
||||||
msgstr "Chuyển người dùng"
|
msgstr "Chuyển người dùng"
|
||||||
|
|
||||||
#: ../js/ui/statusMenu.js:158
|
#: ../js/ui/statusMenu.js:218
|
||||||
msgid "Log Out..."
|
msgid "Log Out..."
|
||||||
msgstr "Đăng xuất..."
|
msgstr "Đăng xuất..."
|
||||||
|
|
||||||
@ -634,14 +667,12 @@ msgstr "Đăng xuất..."
|
|||||||
msgid "Zoom"
|
msgid "Zoom"
|
||||||
msgstr "Phóng to"
|
msgstr "Phóng to"
|
||||||
|
|
||||||
#: ../js/ui/status/accessibility.js:69
|
#. let screenReader = this._buildItem(_("Screen Reader"), APPLICATIONS_SCHEMA,
|
||||||
msgid "Screen Reader"
|
#. 'screen-reader-enabled');
|
||||||
msgstr "Trình đọc màn hình"
|
#. this.menu.addMenuItem(screenReader);
|
||||||
|
#. let screenKeyboard = this._buildItem(_("Screen Keyboard"), APPLICATIONS_SCHEMA,
|
||||||
#: ../js/ui/status/accessibility.js:73
|
#. 'screen-keyboard-enabled');
|
||||||
msgid "Screen Keyboard"
|
#. this.menu.addMenuItem(screenKeyboard);
|
||||||
msgstr "Bàn phím màn hình"
|
|
||||||
|
|
||||||
#: ../js/ui/status/accessibility.js:77
|
#: ../js/ui/status/accessibility.js:77
|
||||||
msgid "Visual Alerts"
|
msgid "Visual Alerts"
|
||||||
msgstr "Cảnh báo trực quan"
|
msgstr "Cảnh báo trực quan"
|
||||||
@ -666,17 +697,17 @@ msgstr "Phím chuột"
|
|||||||
msgid "Universal Access Settings"
|
msgid "Universal Access Settings"
|
||||||
msgstr "Thiết lập hỗ trợ truy cập"
|
msgstr "Thiết lập hỗ trợ truy cập"
|
||||||
|
|
||||||
#: ../js/ui/status/accessibility.js:145
|
#: ../js/ui/status/accessibility.js:146
|
||||||
msgid "High Contrast"
|
msgid "High Contrast"
|
||||||
msgstr "Tương phản cao"
|
msgstr "Tương phản cao"
|
||||||
|
|
||||||
#: ../js/ui/status/accessibility.js:182
|
#: ../js/ui/status/accessibility.js:183
|
||||||
msgid "Large Text"
|
msgid "Large Text"
|
||||||
msgstr "Chữ lớn"
|
msgstr "Chữ lớn"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:241
|
#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:237
|
||||||
#: ../js/ui/status/bluetooth.js:337 ../js/ui/status/bluetooth.js:371
|
#: ../js/ui/status/bluetooth.js:333 ../js/ui/status/bluetooth.js:367
|
||||||
#: ../js/ui/status/bluetooth.js:411 ../js/ui/status/bluetooth.js:444
|
#: ../js/ui/status/bluetooth.js:407 ../js/ui/status/bluetooth.js:440
|
||||||
msgid "Bluetooth"
|
msgid "Bluetooth"
|
||||||
msgstr "Bluetooth"
|
msgstr "Bluetooth"
|
||||||
|
|
||||||
@ -696,94 +727,94 @@ msgstr "Thiết lập thiết bị mới..."
|
|||||||
msgid "Bluetooth Settings"
|
msgid "Bluetooth Settings"
|
||||||
msgstr "Thiết lập Bluetooth"
|
msgstr "Thiết lập Bluetooth"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:192
|
#: ../js/ui/status/bluetooth.js:188
|
||||||
msgid "Connection"
|
msgid "Connection"
|
||||||
msgstr "Kết nối"
|
msgstr "Kết nối"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:228
|
#: ../js/ui/status/bluetooth.js:224
|
||||||
msgid "Send Files..."
|
msgid "Send Files..."
|
||||||
msgstr "Gửi tập tin..."
|
msgstr "Gửi tập tin..."
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:233
|
#: ../js/ui/status/bluetooth.js:229
|
||||||
msgid "Browse Files..."
|
msgid "Browse Files..."
|
||||||
msgstr "Duyệt tập tin..."
|
msgstr "Duyệt tập tin..."
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:242
|
#: ../js/ui/status/bluetooth.js:238
|
||||||
msgid "Error browsing device"
|
msgid "Error browsing device"
|
||||||
msgstr "Lỗi duyệt tập tin"
|
msgstr "Lỗi duyệt tập tin"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:243
|
#: ../js/ui/status/bluetooth.js:239
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "The requested device cannot be browsed, error is '%s'"
|
msgid "The requested device cannot be browsed, error is '%s'"
|
||||||
msgstr "Không thể duyệt thiết bị yêu cầu , lỗi là '%s'"
|
msgstr "Không thể duyệt thiết bị yêu cầu , lỗi là '%s'"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:251
|
#: ../js/ui/status/bluetooth.js:247
|
||||||
msgid "Keyboard Settings"
|
msgid "Keyboard Settings"
|
||||||
msgstr "Thiết lập bàn phím"
|
msgstr "Thiết lập bàn phím"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:256
|
#: ../js/ui/status/bluetooth.js:252
|
||||||
msgid "Mouse Settings"
|
msgid "Mouse Settings"
|
||||||
msgstr "Thiết lập chuột"
|
msgstr "Thiết lập chuột"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:263 ../js/ui/status/volume.js:65
|
#: ../js/ui/status/bluetooth.js:259 ../js/ui/status/volume.js:66
|
||||||
msgid "Sound Settings"
|
msgid "Sound Settings"
|
||||||
msgstr "Thiết lập âm thanh"
|
msgstr "Thiết lập âm thanh"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:372
|
#: ../js/ui/status/bluetooth.js:368
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Authorization request from %s"
|
msgid "Authorization request from %s"
|
||||||
msgstr "Yêu cầu cấp quyền từ %s"
|
msgstr "Yêu cầu cấp quyền từ %s"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:378
|
#: ../js/ui/status/bluetooth.js:374
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Device %s wants access to the service '%s'"
|
msgid "Device %s wants access to the service '%s'"
|
||||||
msgstr "Thiết bị %s muốn truy cập dịch vụ '%s'"
|
msgstr "Thiết bị %s muốn truy cập dịch vụ '%s'"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:380
|
#: ../js/ui/status/bluetooth.js:376
|
||||||
msgid "Always grant access"
|
msgid "Always grant access"
|
||||||
msgstr "Luôn cho phép"
|
msgstr "Luôn cho phép"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:381
|
#: ../js/ui/status/bluetooth.js:377
|
||||||
msgid "Grant this time only"
|
msgid "Grant this time only"
|
||||||
msgstr "Chỉ cho phép lần này"
|
msgstr "Chỉ cho phép lần này"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:382
|
#: ../js/ui/status/bluetooth.js:378
|
||||||
msgid "Reject"
|
msgid "Reject"
|
||||||
msgstr "Từ chối"
|
msgstr "Từ chối"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:412
|
#: ../js/ui/status/bluetooth.js:408
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Pairing confirmation for %s"
|
msgid "Pairing confirmation for %s"
|
||||||
msgstr "Xác nhận kết nối cho %s"
|
msgstr "Xác nhận kết nối cho %s"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:418 ../js/ui/status/bluetooth.js:452
|
#: ../js/ui/status/bluetooth.js:414 ../js/ui/status/bluetooth.js:448
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Device %s wants to pair with this computer"
|
msgid "Device %s wants to pair with this computer"
|
||||||
msgstr "Thiết bị %s muốn kết nối với máy tính này"
|
msgstr "Thiết bị %s muốn kết nối với máy tính này"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:419
|
#: ../js/ui/status/bluetooth.js:415
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Please confirm whether the PIN '%s' matches the one on the device."
|
msgid "Please confirm whether the PIN '%s' matches the one on the device."
|
||||||
msgstr "Vui lòng xác nhận PIN '%s' khớp với số trên thiết bị."
|
msgstr "Vui lòng xác nhận PIN '%s' khớp với số trên thiết bị."
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:421
|
#: ../js/ui/status/bluetooth.js:417
|
||||||
msgid "Matches"
|
msgid "Matches"
|
||||||
msgstr "Khớp"
|
msgstr "Khớp"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:422
|
#: ../js/ui/status/bluetooth.js:418
|
||||||
msgid "Does not match"
|
msgid "Does not match"
|
||||||
msgstr "Không khớp"
|
msgstr "Không khớp"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:445
|
#: ../js/ui/status/bluetooth.js:441
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Pairing request for %s"
|
msgid "Pairing request for %s"
|
||||||
msgstr "Yêu cầu kết nối cho %s"
|
msgstr "Yêu cầu kết nối cho %s"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:453
|
#: ../js/ui/status/bluetooth.js:449
|
||||||
msgid "Please enter the PIN mentioned on the device."
|
msgid "Please enter the PIN mentioned on the device."
|
||||||
msgstr "Vui lòng nhập số PIN ghi trên thiết bị."
|
msgstr "Vui lòng nhập số PIN ghi trên thiết bị."
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:469
|
#: ../js/ui/status/bluetooth.js:465
|
||||||
msgid "OK"
|
msgid "OK"
|
||||||
msgstr "OK"
|
msgstr "OK"
|
||||||
|
|
||||||
@ -795,116 +826,256 @@ msgstr "Hiện bố trí bàn phím..."
|
|||||||
msgid "Localization Settings"
|
msgid "Localization Settings"
|
||||||
msgstr "Thiết lập bản địa hoá"
|
msgstr "Thiết lập bản địa hoá"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:102 ../js/ui/status/network.js:1393
|
||||||
|
#| msgid "Unknown"
|
||||||
|
msgid "<unknown>"
|
||||||
|
msgstr "<không rõ>"
|
||||||
|
|
||||||
|
#. Translators: this indicates that wireless or wwan is disabled by hardware killswitch
|
||||||
|
#: ../js/ui/status/network.js:295
|
||||||
|
#| msgid "Disabled"
|
||||||
|
msgid "disabled"
|
||||||
|
msgstr "tắt"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:476
|
||||||
|
#| msgid "Connection"
|
||||||
|
msgid "connecting..."
|
||||||
|
msgstr "đang kết nối..."
|
||||||
|
|
||||||
|
#. Translators: this is for network connections that require some kind of key or password
|
||||||
|
#: ../js/ui/status/network.js:479
|
||||||
|
msgid "authentication required"
|
||||||
|
msgstr "cần xác thực"
|
||||||
|
|
||||||
|
#. Translators: this is for wired network devices that are physically disconnected
|
||||||
|
#: ../js/ui/status/network.js:485
|
||||||
|
msgid "cable unplugged"
|
||||||
|
msgstr "cáp bị tháo"
|
||||||
|
|
||||||
|
#. Translators: this is for a network device that cannot be activated (for example it
|
||||||
|
#. is disabled by rfkill, or it has no coverage
|
||||||
|
#: ../js/ui/status/network.js:489
|
||||||
|
#| msgid "Available"
|
||||||
|
msgid "unavailable"
|
||||||
|
msgstr "không có mặt"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:491
|
||||||
|
#| msgid "Connection"
|
||||||
|
msgid "connection failed"
|
||||||
|
msgstr "lỗi kết nối"
|
||||||
|
|
||||||
|
#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
|
||||||
|
#. and we cannot access its settings (including the name)
|
||||||
|
#: ../js/ui/status/network.js:571 ../js/ui/status/network.js:1341
|
||||||
|
msgid "Connected (private)"
|
||||||
|
msgstr "Đã kết nối (riêng)"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:636
|
||||||
|
msgid "Auto Ethernet"
|
||||||
|
msgstr "Ethernet tự động"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:697
|
||||||
|
msgid "Auto broadband"
|
||||||
|
msgstr "Băng thông rộng tự động"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:700
|
||||||
|
msgid "Auto dial-up"
|
||||||
|
msgstr "Quay số tự động"
|
||||||
|
|
||||||
|
#. TRANSLATORS: this the automatic wireless connection name (including the network name)
|
||||||
|
#: ../js/ui/status/network.js:843 ../js/ui/status/network.js:1353
|
||||||
|
#, c-format
|
||||||
|
#| msgid "Quit %s"
|
||||||
|
msgid "Auto %s"
|
||||||
|
msgstr "%s tự động"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:845
|
||||||
|
#| msgid "Bluetooth"
|
||||||
|
msgid "Auto bluetooth"
|
||||||
|
msgstr "Bluetooth tự động"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1355
|
||||||
|
msgid "Auto wireless"
|
||||||
|
msgstr "Mạng không dây tự động"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1413
|
||||||
|
msgid "More..."
|
||||||
|
msgstr "Nữa..."
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1436
|
||||||
|
msgid "Enable networking"
|
||||||
|
msgstr "Bật nối mạng"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1448
|
||||||
|
msgid "Wired"
|
||||||
|
msgstr "Mạng dây"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1459
|
||||||
|
msgid "Wireless"
|
||||||
|
msgstr "Mạng không dây"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1469
|
||||||
|
msgid "Mobile broadband"
|
||||||
|
msgstr "Mạng băng thông rộng"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1479
|
||||||
|
#| msgid "Connection"
|
||||||
|
msgid "VPN Connections"
|
||||||
|
msgstr "Kết nối VPN"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1488
|
||||||
|
#| msgid "Power Settings"
|
||||||
|
msgid "Network Settings"
|
||||||
|
msgstr "Thiết lập mạng"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1783
|
||||||
|
#, c-format
|
||||||
|
msgid "You're now connected to mobile broadband connection '%s'"
|
||||||
|
msgstr "Bạn đã kết nối vào mạng băng thông rộng '%s'"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1787
|
||||||
|
#, c-format
|
||||||
|
msgid "You're now connected to wireless network '%s'"
|
||||||
|
msgstr "Bạn đã kết nối vào mạng không dây '%s'"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1791
|
||||||
|
#, c-format
|
||||||
|
msgid "You're now connected to wired network '%s'"
|
||||||
|
msgstr "Bạn đã kết nối vào mạng (dây) '%s'"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1795
|
||||||
|
#, c-format
|
||||||
|
msgid "You're now connected to VPN network '%s'"
|
||||||
|
msgstr "Bạn đã kết nối vào mạng VPN '%s'"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1800
|
||||||
|
#, c-format
|
||||||
|
msgid "You're now connected to '%s'"
|
||||||
|
msgstr "Bạn đã kết nối vào '%s'"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1808
|
||||||
|
#| msgid "Connection"
|
||||||
|
msgid "Connection established"
|
||||||
|
msgstr "Đã tạo kết nối"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:1930
|
||||||
|
msgid "Networking is disabled"
|
||||||
|
msgstr "Mạng bị tắt"
|
||||||
|
|
||||||
|
#: ../js/ui/status/network.js:2055
|
||||||
|
msgid "Network Manager"
|
||||||
|
msgstr "Trình quản lý mạng"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:85
|
#: ../js/ui/status/power.js:85
|
||||||
msgid "Power Settings"
|
msgid "Power Settings"
|
||||||
msgstr "Thiết lập năng lượng"
|
msgstr "Thiết lập năng lượng"
|
||||||
|
|
||||||
#. 0 is reported when UPower does not have enough data
|
#. 0 is reported when UPower does not have enough data
|
||||||
#. to estimate battery life
|
#. to estimate battery life
|
||||||
#: ../js/ui/status/power.js:110
|
#: ../js/ui/status/power.js:111
|
||||||
msgid "Estimating..."
|
msgid "Estimating..."
|
||||||
msgstr "Ước lượng..."
|
msgstr "Ước lượng..."
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:117
|
#: ../js/ui/status/power.js:118
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d hour remaining"
|
msgid "%d hour remaining"
|
||||||
msgid_plural "%d hours remaining"
|
msgid_plural "%d hours remaining"
|
||||||
msgstr[0] "%d giờ còn lại"
|
msgstr[0] "%d giờ còn lại"
|
||||||
|
|
||||||
#. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining"
|
#. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining"
|
||||||
#: ../js/ui/status/power.js:120
|
#: ../js/ui/status/power.js:121
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d %s %d %s remaining"
|
msgid "%d %s %d %s remaining"
|
||||||
msgstr "%d %s %d %s còn lại"
|
msgstr "%d %s %d %s còn lại"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:122
|
#: ../js/ui/status/power.js:123
|
||||||
msgid "hour"
|
msgid "hour"
|
||||||
msgid_plural "hours"
|
msgid_plural "hours"
|
||||||
msgstr[0] "giờ"
|
msgstr[0] "giờ"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:122
|
#: ../js/ui/status/power.js:123
|
||||||
msgid "minute"
|
msgid "minute"
|
||||||
msgid_plural "minutes"
|
msgid_plural "minutes"
|
||||||
msgstr[0] "%d phút"
|
msgstr[0] "%d phút"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:125
|
#: ../js/ui/status/power.js:126
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d minute remaining"
|
msgid "%d minute remaining"
|
||||||
msgid_plural "%d minutes remaining"
|
msgid_plural "%d minutes remaining"
|
||||||
msgstr[0] "%d phút còn lại"
|
msgstr[0] "%d phút còn lại"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:227
|
#: ../js/ui/status/power.js:228
|
||||||
msgid "AC adapter"
|
msgid "AC adapter"
|
||||||
msgstr "Bộ đổi điện AC"
|
msgstr "Bộ đổi điện AC"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:229
|
#: ../js/ui/status/power.js:230
|
||||||
msgid "Laptop battery"
|
msgid "Laptop battery"
|
||||||
msgstr "Pin laptop"
|
msgstr "Pin laptop"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:231
|
#: ../js/ui/status/power.js:232
|
||||||
msgid "UPS"
|
msgid "UPS"
|
||||||
msgstr "UPS"
|
msgstr "UPS"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:233
|
#: ../js/ui/status/power.js:234
|
||||||
msgid "Monitor"
|
msgid "Monitor"
|
||||||
msgstr "Màn hình"
|
msgstr "Màn hình"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:235
|
#: ../js/ui/status/power.js:236
|
||||||
msgid "Mouse"
|
msgid "Mouse"
|
||||||
msgstr "Chuột"
|
msgstr "Chuột"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:237
|
#: ../js/ui/status/power.js:238
|
||||||
msgid "Keyboard"
|
msgid "Keyboard"
|
||||||
msgstr "Bàn phím"
|
msgstr "Bàn phím"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:239
|
#: ../js/ui/status/power.js:240
|
||||||
msgid "PDA"
|
msgid "PDA"
|
||||||
msgstr "PDA"
|
msgstr "PDA"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:241
|
#: ../js/ui/status/power.js:242
|
||||||
msgid "Cell phone"
|
msgid "Cell phone"
|
||||||
msgstr "Điện thoại cầm tay"
|
msgstr "Điện thoại cầm tay"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:243
|
#: ../js/ui/status/power.js:244
|
||||||
msgid "Media player"
|
msgid "Media player"
|
||||||
msgstr "Máy phát"
|
msgstr "Máy phát"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:245
|
#: ../js/ui/status/power.js:246
|
||||||
msgid "Tablet"
|
msgid "Tablet"
|
||||||
msgstr "Bảng"
|
msgstr "Bảng"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:247
|
#: ../js/ui/status/power.js:248
|
||||||
msgid "Computer"
|
msgid "Computer"
|
||||||
msgstr "Máy tính"
|
msgstr "Máy tính"
|
||||||
|
|
||||||
#: ../js/ui/status/power.js:249 ../src/shell-app-system.c:1013
|
#: ../js/ui/status/power.js:250 ../src/shell-app-system.c:1088
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "Không biết"
|
msgstr "Không biết"
|
||||||
|
|
||||||
#: ../js/ui/status/volume.js:44
|
#: ../js/ui/status/volume.js:45
|
||||||
msgid "Volume"
|
msgid "Volume"
|
||||||
msgstr "Âm lượng"
|
msgstr "Âm lượng"
|
||||||
|
|
||||||
#: ../js/ui/status/volume.js:57
|
#: ../js/ui/status/volume.js:58
|
||||||
msgid "Microphone"
|
msgid "Microphone"
|
||||||
msgstr "Micrô"
|
msgstr "Micrô"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:239
|
#: ../js/ui/telepathyClient.js:332
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is online."
|
msgid "%s is online."
|
||||||
msgstr "%s trực tuyến."
|
msgstr "%s trực tuyến."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:244
|
#: ../js/ui/telepathyClient.js:337
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is offline."
|
msgid "%s is offline."
|
||||||
msgstr "%s ngoại tuyến."
|
msgstr "%s ngoại tuyến."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:247
|
#: ../js/ui/telepathyClient.js:340
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is away."
|
msgid "%s is away."
|
||||||
msgstr "%s đi vắng."
|
msgstr "%s đi vắng."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:250
|
#: ../js/ui/telepathyClient.js:343
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is busy."
|
msgid "%s is busy."
|
||||||
msgstr "%s bận."
|
msgstr "%s bận."
|
||||||
@ -912,7 +1083,7 @@ msgstr "%s bận."
|
|||||||
#. Translators: this is a time format string followed by a date.
|
#. Translators: this is a time format string followed by a date.
|
||||||
#. If applicable, replace %X with a strftime format valid for your
|
#. If applicable, replace %X with a strftime format valid for your
|
||||||
#. locale, without seconds.
|
#. locale, without seconds.
|
||||||
#: ../js/ui/telepathyClient.js:348
|
#: ../js/ui/telepathyClient.js:474
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent at %X on %A"
|
msgid "Sent at %X on %A"
|
||||||
msgstr "Đã gửi %X lúc %A"
|
msgstr "Đã gửi %X lúc %A"
|
||||||
@ -921,10 +1092,14 @@ msgstr "Đã gửi %X lúc %A"
|
|||||||
#. in the search entry when no search is
|
#. in the search entry when no search is
|
||||||
#. active; it should not exceed ~30
|
#. active; it should not exceed ~30
|
||||||
#. characters.
|
#. characters.
|
||||||
#: ../js/ui/viewSelector.js:103
|
#: ../js/ui/viewSelector.js:122
|
||||||
msgid "Type to search..."
|
msgid "Type to search..."
|
||||||
msgstr "Nhập để tìm..."
|
msgstr "Nhập để tìm..."
|
||||||
|
|
||||||
|
#: ../js/ui/viewSelector.js:142 ../src/shell-util.c:250
|
||||||
|
msgid "Search"
|
||||||
|
msgstr "Tìm"
|
||||||
|
|
||||||
#: ../js/ui/windowAttentionHandler.js:42
|
#: ../js/ui/windowAttentionHandler.js:42
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s has finished starting"
|
msgid "%s has finished starting"
|
||||||
@ -937,7 +1112,7 @@ msgstr "'%s' đã sẵn sàng"
|
|||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The number of sound outputs on a particular device
|
#. * The number of sound outputs on a particular device
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1094
|
#: ../src/gvc/gvc-mixer-control.c:1098
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%u Output"
|
msgid "%u Output"
|
||||||
msgid_plural "%u Outputs"
|
msgid_plural "%u Outputs"
|
||||||
@ -945,44 +1120,62 @@ msgstr[0] "%u đầu ra"
|
|||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The number of sound inputs on a particular device
|
#. * The number of sound inputs on a particular device
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1104
|
#: ../src/gvc/gvc-mixer-control.c:1108
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%u Input"
|
msgid "%u Input"
|
||||||
msgid_plural "%u Inputs"
|
msgid_plural "%u Inputs"
|
||||||
msgstr[0] "%u đầu vào"
|
msgstr[0] "%u đầu vào"
|
||||||
|
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1402
|
#: ../src/gvc/gvc-mixer-control.c:1406
|
||||||
msgid "System Sounds"
|
msgid "System Sounds"
|
||||||
msgstr "Âm thanh hệ thống"
|
msgstr "Âm thanh hệ thống"
|
||||||
|
|
||||||
#: ../src/shell-global.c:1298
|
#: ../src/main.c:446
|
||||||
|
msgid "Print version"
|
||||||
|
msgstr "In phiên bản"
|
||||||
|
|
||||||
|
#: ../src/shell-app.c:454
|
||||||
|
#, c-format
|
||||||
|
#| msgid "Failed to unmount '%s'"
|
||||||
|
msgid "Failed to launch '%s'"
|
||||||
|
msgstr "Lỗi chạy '%s'"
|
||||||
|
|
||||||
|
#: ../src/shell-global.c:1395
|
||||||
msgid "Less than a minute ago"
|
msgid "Less than a minute ago"
|
||||||
msgstr "Chưa đến một phút"
|
msgstr "Chưa đến một phút"
|
||||||
|
|
||||||
#: ../src/shell-global.c:1302
|
#: ../src/shell-global.c:1399
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d minute ago"
|
msgid "%d minute ago"
|
||||||
msgid_plural "%d minutes ago"
|
msgid_plural "%d minutes ago"
|
||||||
msgstr[0] "%d phút trước"
|
msgstr[0] "%d phút trước"
|
||||||
|
|
||||||
#: ../src/shell-global.c:1307
|
#: ../src/shell-global.c:1404
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d hour ago"
|
msgid "%d hour ago"
|
||||||
msgid_plural "%d hours ago"
|
msgid_plural "%d hours ago"
|
||||||
msgstr[0] "%d giờ trước"
|
msgstr[0] "%d giờ trước"
|
||||||
|
|
||||||
#: ../src/shell-global.c:1312
|
#: ../src/shell-global.c:1409
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d day ago"
|
msgid "%d day ago"
|
||||||
msgid_plural "%d days ago"
|
msgid_plural "%d days ago"
|
||||||
msgstr[0] "%d ngày trước"
|
msgstr[0] "%d ngày trước"
|
||||||
|
|
||||||
#: ../src/shell-global.c:1317
|
#: ../src/shell-global.c:1414
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d week ago"
|
msgid "%d week ago"
|
||||||
msgid_plural "%d weeks ago"
|
msgid_plural "%d weeks ago"
|
||||||
msgstr[0] "%d tuần trước"
|
msgstr[0] "%d tuần trước"
|
||||||
|
|
||||||
|
#: ../src/shell-mobile-providers.c:80
|
||||||
|
msgid "United Kingdom"
|
||||||
|
msgstr "Vương quốc Anh"
|
||||||
|
|
||||||
|
#: ../src/shell-mobile-providers.c:526
|
||||||
|
msgid "Default"
|
||||||
|
msgstr "Mặc định"
|
||||||
|
|
||||||
#: ../src/shell-polkit-authentication-agent.c:334
|
#: ../src/shell-polkit-authentication-agent.c:334
|
||||||
msgid "Authentication dialog was dismissed by the user"
|
msgid "Authentication dialog was dismissed by the user"
|
||||||
msgstr "Hộp thoại xác thực bị người dùng bỏ qua"
|
msgstr "Hộp thoại xác thực bị người dùng bỏ qua"
|
||||||
@ -997,10 +1190,6 @@ msgstr "Thư mục chính"
|
|||||||
msgid "File System"
|
msgid "File System"
|
||||||
msgstr "Hệ tập tin"
|
msgstr "Hệ tập tin"
|
||||||
|
|
||||||
#: ../src/shell-util.c:250
|
|
||||||
msgid "Search"
|
|
||||||
msgstr "Tìm"
|
|
||||||
|
|
||||||
#. Translators: the first string is the name of a gvfs
|
#. Translators: the first string is the name of a gvfs
|
||||||
#. * method, and the second string is a path. For
|
#. * method, and the second string is a path. For
|
||||||
#. * example, "Trash: some-directory". It means that the
|
#. * example, "Trash: some-directory". It means that the
|
||||||
@ -1011,6 +1200,30 @@ msgstr "Tìm"
|
|||||||
msgid "%1$s: %2$s"
|
msgid "%1$s: %2$s"
|
||||||
msgstr "%1$s: %2$s"
|
msgstr "%1$s: %2$s"
|
||||||
|
|
||||||
|
#~ msgid "No such application"
|
||||||
|
#~ msgstr "Không có ứng dụng đó"
|
||||||
|
|
||||||
|
#~ msgid "Shut Down"
|
||||||
|
#~ msgstr "Tắt máy"
|
||||||
|
|
||||||
|
#~ msgid "Click Shut Down to quit these applications and shut down the system."
|
||||||
|
#~ msgstr "Nhấn Tắt máy để thoát những ứng dụng này và tắt hệ thống."
|
||||||
|
|
||||||
|
#~ msgid "The system will shut down automatically in %d seconds."
|
||||||
|
#~ msgstr "Hệ thống sẽ tự động tắt sau %d giây."
|
||||||
|
|
||||||
|
#~ msgid "Shutting down the system."
|
||||||
|
#~ msgstr "Tắt hệ thống."
|
||||||
|
|
||||||
|
#~ msgid "Confirm"
|
||||||
|
#~ msgstr "Xác nhận"
|
||||||
|
|
||||||
|
#~ msgid "Screen Reader"
|
||||||
|
#~ msgstr "Trình đọc màn hình"
|
||||||
|
|
||||||
|
#~ msgid "Screen Keyboard"
|
||||||
|
#~ msgstr "Bàn phím màn hình"
|
||||||
|
|
||||||
#~ msgid "Clip the crosshairs at the center"
|
#~ msgid "Clip the crosshairs at the center"
|
||||||
#~ msgstr "Cắt lưới chéo ở giữa"
|
#~ msgstr "Cắt lưới chéo ở giữa"
|
||||||
|
|
||||||
|
571
po/zh_CN.po
571
po/zh_CN.po
File diff suppressed because it is too large
Load Diff
845
po/zh_HK.po
845
po/zh_HK.po
File diff suppressed because it is too large
Load Diff
852
po/zh_TW.po
852
po/zh_TW.po
File diff suppressed because it is too large
Load Diff
@ -38,13 +38,16 @@ generated_script_substitutions = \
|
|||||||
-e "s|@datadir[@]|$(datadir)|" \
|
-e "s|@datadir[@]|$(datadir)|" \
|
||||||
-e "s|@libexecdir[@]|$(libexecdir)|" \
|
-e "s|@libexecdir[@]|$(libexecdir)|" \
|
||||||
-e "s|@libdir[@]|$(libdir)|" \
|
-e "s|@libdir[@]|$(libdir)|" \
|
||||||
|
-e "s|@JHBUILD_TYPELIBDIR[@]|$(JHBUILD_TYPELIBDIR)|" \
|
||||||
-e "s|@pkgdatadir[@]|$(pkgdatadir)|" \
|
-e "s|@pkgdatadir[@]|$(pkgdatadir)|" \
|
||||||
-e "s|@PYTHON[@]|$(PYTHON)|" \
|
-e "s|@PYTHON[@]|$(PYTHON)|" \
|
||||||
-e "s|@VERSION[@]|$(VERSION)|" \
|
-e "s|@VERSION[@]|$(VERSION)|" \
|
||||||
-e "s|@sysconfdir[@]|$(sysconfdir)|"
|
-e "s|@sysconfdir[@]|$(sysconfdir)|"
|
||||||
|
|
||||||
gnome-shell-jhbuild: gnome-shell-jhbuild.in Makefile
|
gnome-shell-jhbuild: gnome-shell-jhbuild.in gnome-shell-real Makefile
|
||||||
$(AM_V_GEN) sed $(generated_script_substitutions) $< > $@.tmp && mv $@.tmp $@ && chmod a+x $@
|
$(AM_V_GEN) sed $(generated_script_substitutions) $< > $@.tmp && mv $@.tmp $@ && chmod a+x $@
|
||||||
|
@# Regenerate libtool wrapper so Alt+F2 restart will work
|
||||||
|
@$(LIBTOOL) --mode=execute test -f gnome-shell-real
|
||||||
|
|
||||||
gnome-shell-extension-tool: gnome-shell-extension-tool.in Makefile
|
gnome-shell-extension-tool: gnome-shell-extension-tool.in Makefile
|
||||||
$(AM_V_GEN) sed $(generated_script_substitutions) $< > $@.tmp && mv $@.tmp $@ && chmod a+x $@
|
$(AM_V_GEN) sed $(generated_script_substitutions) $< > $@.tmp && mv $@.tmp $@ && chmod a+x $@
|
||||||
@ -63,6 +66,7 @@ gnome_shell_cflags = \
|
|||||||
-I$(srcdir)/tray \
|
-I$(srcdir)/tray \
|
||||||
-DVERSION=\"$(VERSION)\" \
|
-DVERSION=\"$(VERSION)\" \
|
||||||
-DLOCALEDIR=\"$(datadir)/locale\" \
|
-DLOCALEDIR=\"$(datadir)/locale\" \
|
||||||
|
-DDATADIR=\"$(datadir)\" \
|
||||||
-DGNOME_SHELL_LIBEXECDIR=\"$(libexecdir)\" \
|
-DGNOME_SHELL_LIBEXECDIR=\"$(libexecdir)\" \
|
||||||
-DGNOME_SHELL_DATADIR=\"$(pkgdatadir)\" \
|
-DGNOME_SHELL_DATADIR=\"$(pkgdatadir)\" \
|
||||||
-DGNOME_SHELL_PKGLIBDIR=\"$(pkglibdir)\" \
|
-DGNOME_SHELL_PKGLIBDIR=\"$(pkglibdir)\" \
|
||||||
@ -90,6 +94,7 @@ shell_public_headers_h = \
|
|||||||
shell-generic-container.h \
|
shell-generic-container.h \
|
||||||
shell-gtk-embed.h \
|
shell-gtk-embed.h \
|
||||||
shell-global.h \
|
shell-global.h \
|
||||||
|
shell-mobile-providers.h \
|
||||||
shell-perf-log.h \
|
shell-perf-log.h \
|
||||||
shell-slicer.h \
|
shell-slicer.h \
|
||||||
shell-stack.h \
|
shell-stack.h \
|
||||||
@ -121,6 +126,7 @@ libgnome_shell_la_SOURCES = \
|
|||||||
shell-generic-container.c \
|
shell-generic-container.c \
|
||||||
shell-gtk-embed.c \
|
shell-gtk-embed.c \
|
||||||
shell-global.c \
|
shell-global.c \
|
||||||
|
shell-mobile-providers.c \
|
||||||
shell-perf-log.c \
|
shell-perf-log.c \
|
||||||
shell-polkit-authentication-agent.h \
|
shell-polkit-authentication-agent.h \
|
||||||
shell-polkit-authentication-agent.c \
|
shell-polkit-authentication-agent.c \
|
||||||
@ -262,7 +268,7 @@ libgnome_shell_la_LIBADD = \
|
|||||||
libgnome_shell_la_CPPFLAGS = $(gnome_shell_cflags)
|
libgnome_shell_la_CPPFLAGS = $(gnome_shell_cflags)
|
||||||
|
|
||||||
Shell-0.1.gir: libgnome-shell.la St-1.0.gir
|
Shell-0.1.gir: libgnome-shell.la St-1.0.gir
|
||||||
Shell_0_1_gir_INCLUDES = Clutter-1.0 ClutterX11-1.0 Meta-2.91 TelepathyGLib-0.12
|
Shell_0_1_gir_INCLUDES = Clutter-1.0 ClutterX11-1.0 Meta-2.91 TelepathyGLib-0.12 TelepathyLogger-0.2
|
||||||
Shell_0_1_gir_CFLAGS = $(libgnome_shell_la_CPPFLAGS) -I $(srcdir)
|
Shell_0_1_gir_CFLAGS = $(libgnome_shell_la_CPPFLAGS) -I $(srcdir)
|
||||||
Shell_0_1_gir_LIBS = libgnome-shell.la
|
Shell_0_1_gir_LIBS = libgnome-shell.la
|
||||||
Shell_0_1_gir_FILES = $(addprefix $(srcdir)/,$(libgnome_shell_la_gir_sources))
|
Shell_0_1_gir_FILES = $(addprefix $(srcdir)/,$(libgnome_shell_la_gir_sources))
|
||||||
|
@ -407,7 +407,9 @@ gdm_user_get_uid (GdmUser *user)
|
|||||||
* gdm_user_get_real_name:
|
* gdm_user_get_real_name:
|
||||||
* @user: the user object to examine.
|
* @user: the user object to examine.
|
||||||
*
|
*
|
||||||
* Retrieves the display name of @user.
|
* Retrieves a displayable name for @user. By default this is the real name
|
||||||
|
* of the user, but will fall back to the user name if there is no real name
|
||||||
|
* defined.
|
||||||
*
|
*
|
||||||
* Returns: (transfer none): a pointer to an array of characters which must not be modified or
|
* Returns: (transfer none): a pointer to an array of characters which must not be modified or
|
||||||
* freed, or %NULL.
|
* freed, or %NULL.
|
||||||
@ -417,7 +419,12 @@ gdm_user_get_real_name (GdmUser *user)
|
|||||||
{
|
{
|
||||||
g_return_val_if_fail (GDM_IS_USER (user), NULL);
|
g_return_val_if_fail (GDM_IS_USER (user), NULL);
|
||||||
|
|
||||||
return (user->real_name ? user->real_name : user->user_name);
|
if (user->real_name == NULL ||
|
||||||
|
user->real_name[0] == '\0') {
|
||||||
|
return user->user_name;
|
||||||
|
}
|
||||||
|
|
||||||
|
return user->real_name;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -197,12 +197,16 @@ def start_shell(perf_output=None):
|
|||||||
if os.path.exists(os.path.join(self_dir, 'gnome-shell-jhbuild.in')):
|
if os.path.exists(os.path.join(self_dir, 'gnome-shell-jhbuild.in')):
|
||||||
running_from_source_tree = True
|
running_from_source_tree = True
|
||||||
top_dir = os.path.dirname(self_dir)
|
top_dir = os.path.dirname(self_dir)
|
||||||
typelib_dir = os.path.join(top_dir, "src")
|
typelib_dir = '@JHBUILD_TYPELIBDIR@:' + os.path.join(top_dir, "src")
|
||||||
js_dir = os.path.join(top_dir, "js")
|
js_dir = os.path.join(top_dir, "js")
|
||||||
data_dir = os.path.join(top_dir, "data")
|
data_dir = os.path.join(top_dir, "data")
|
||||||
else:
|
else:
|
||||||
running_from_source_tree = False
|
running_from_source_tree = False
|
||||||
js_dir = os.path.join('@pkgdatadir@', 'js')
|
js_dir = os.path.join('@pkgdatadir@', 'js')
|
||||||
|
typelib_dir = '@JHBUILD_TYPELIBDIR@'
|
||||||
|
|
||||||
|
if os.environ.has_key('GI_TYPELIB_PATH'):
|
||||||
|
typelib_dir = typelib_dir + ":" + os.environ.get('GI_TYPELIB_PATH')
|
||||||
|
|
||||||
# Set up environment
|
# Set up environment
|
||||||
env = dict(os.environ)
|
env = dict(os.environ)
|
||||||
@ -215,14 +219,12 @@ def start_shell(perf_output=None):
|
|||||||
# run". See bug #642084
|
# run". See bug #642084
|
||||||
env.update({'GNOME_SHELL_JS' : js_dir,
|
env.update({'GNOME_SHELL_JS' : js_dir,
|
||||||
'PATH' : '@bindir@:' + os.environ.get('PATH', ''),
|
'PATH' : '@bindir@:' + os.environ.get('PATH', ''),
|
||||||
|
'GI_TYPELIB_PATH' : typelib_dir,
|
||||||
'XDG_CONFIG_DIRS' : '@sysconfdir@/xdg:' + (os.environ.get('XDG_CONFIG_DIRS') or '/etc/xdg'),
|
'XDG_CONFIG_DIRS' : '@sysconfdir@/xdg:' + (os.environ.get('XDG_CONFIG_DIRS') or '/etc/xdg'),
|
||||||
'XDG_DATA_DIRS' : '@datadir@:' + (os.environ.get('XDG_DATA_DIRS') or '/usr/local/share:/usr/share')})
|
'XDG_DATA_DIRS' : '@datadir@:' + (os.environ.get('XDG_DATA_DIRS') or '/usr/local/share:/usr/share')})
|
||||||
if running_from_source_tree:
|
if running_from_source_tree:
|
||||||
if os.environ.has_key('GI_TYPELIB_PATH'):
|
|
||||||
typelib_dir = typelib_dir + ":" + os.environ.get('GI_TYPELIB_PATH')
|
|
||||||
env.update({'GNOME_SHELL_BINDIR' : self_dir,
|
env.update({'GNOME_SHELL_BINDIR' : self_dir,
|
||||||
'GNOME_SHELL_DATADIR' : data_dir,
|
'GNOME_SHELL_DATADIR' : data_dir,
|
||||||
'GI_TYPELIB_PATH' : typelib_dir,
|
|
||||||
'GSETTINGS_SCHEMA_DIR' : data_dir })
|
'GSETTINGS_SCHEMA_DIR' : data_dir })
|
||||||
else:
|
else:
|
||||||
# This is just broken to set in the installed case; see bug #642084
|
# This is just broken to set in the installed case; see bug #642084
|
||||||
|
@ -321,21 +321,29 @@ gnome_shell_plugin_xevent_filter (MetaPlugin *plugin,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* When the pointer leaves the stage to enter a child of the stage
|
|
||||||
* (like a notification icon), we don't want to produce Clutter leave
|
|
||||||
* events. But Clutter treats all leave events identically, so we
|
|
||||||
* need hide the detail = NotifyInferior events from it.
|
|
||||||
*
|
|
||||||
* Since Clutter doesn't see any event at all, this does mean that
|
|
||||||
* it won't produce an enter event on a Clutter actor that surrounds
|
|
||||||
* the child (unless it gets a MotionNotify before the Enter event).
|
|
||||||
* Other weirdness is likely also possible.
|
|
||||||
*/
|
|
||||||
if ((xev->xany.type == EnterNotify || xev->xany.type == LeaveNotify)
|
if ((xev->xany.type == EnterNotify || xev->xany.type == LeaveNotify)
|
||||||
&& xev->xcrossing.detail == NotifyInferior
|
|
||||||
&& xev->xcrossing.window == clutter_x11_get_stage_window (CLUTTER_STAGE (clutter_stage_get_default ())))
|
&& xev->xcrossing.window == clutter_x11_get_stage_window (CLUTTER_STAGE (clutter_stage_get_default ())))
|
||||||
|
{
|
||||||
|
/* If the pointer enters a child of the stage window (eg, a
|
||||||
|
* trayicon), we want to consider it to still be in the stage,
|
||||||
|
* so don't let Clutter see the event.
|
||||||
|
*/
|
||||||
|
if (xev->xcrossing.detail == NotifyInferior)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
|
/* If the pointer is grabbed by a window it is not currently in,
|
||||||
|
* filter that out as well. In particular, if a trayicon grabs
|
||||||
|
* the pointer after a click on its label, we don't want to hide
|
||||||
|
* the message tray. Filtering out this event will leave Clutter
|
||||||
|
* out of sync, but that happens fairly often with grabs, and we
|
||||||
|
* can work around it. (Eg, shell_global_sync_pointer().)
|
||||||
|
*/
|
||||||
|
if (xev->xcrossing.mode == NotifyGrab &&
|
||||||
|
(xev->xcrossing.detail == NotifyNonlinear ||
|
||||||
|
xev->xcrossing.detail == NotifyNonlinearVirtual))
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Pass the event to shell-global
|
* Pass the event to shell-global
|
||||||
*/
|
*/
|
||||||
|
67
src/main.c
67
src/main.c
@ -31,11 +31,12 @@ extern GType gnome_shell_plugin_get_type (void);
|
|||||||
#define MAGNIFIER_DBUS_SERVICE "org.gnome.Magnifier"
|
#define MAGNIFIER_DBUS_SERVICE "org.gnome.Magnifier"
|
||||||
|
|
||||||
static void
|
static void
|
||||||
shell_dbus_init (void)
|
shell_dbus_init (gboolean replace)
|
||||||
{
|
{
|
||||||
GError *error = NULL;
|
GError *error = NULL;
|
||||||
DBusGConnection *session;
|
DBusGConnection *session;
|
||||||
DBusGProxy *bus;
|
DBusGProxy *bus;
|
||||||
|
guint32 request_name_flags;
|
||||||
guint32 request_name_result;
|
guint32 request_name_result;
|
||||||
|
|
||||||
/** TODO:
|
/** TODO:
|
||||||
@ -51,18 +52,25 @@ shell_dbus_init (void)
|
|||||||
DBUS_PATH_DBUS,
|
DBUS_PATH_DBUS,
|
||||||
DBUS_INTERFACE_DBUS);
|
DBUS_INTERFACE_DBUS);
|
||||||
|
|
||||||
|
request_name_flags = DBUS_NAME_FLAG_DO_NOT_QUEUE | DBUS_NAME_FLAG_ALLOW_REPLACEMENT;
|
||||||
|
if (replace)
|
||||||
|
request_name_flags |= DBUS_NAME_FLAG_REPLACE_EXISTING;
|
||||||
if (!dbus_g_proxy_call (bus, "RequestName", &error,
|
if (!dbus_g_proxy_call (bus, "RequestName", &error,
|
||||||
G_TYPE_STRING, SHELL_DBUS_SERVICE,
|
G_TYPE_STRING, SHELL_DBUS_SERVICE,
|
||||||
G_TYPE_UINT, 0,
|
G_TYPE_UINT, request_name_flags,
|
||||||
G_TYPE_INVALID,
|
G_TYPE_INVALID,
|
||||||
G_TYPE_UINT, &request_name_result,
|
G_TYPE_UINT, &request_name_result,
|
||||||
G_TYPE_INVALID))
|
G_TYPE_INVALID))
|
||||||
{
|
{
|
||||||
g_print ("failed to acquire org.gnome.Shell: %s\n", error->message);
|
g_printerr ("failed to acquire org.gnome.Shell: %s\n", error->message);
|
||||||
/* If we somehow got started again, it's not an error to be running
|
exit (1);
|
||||||
* already. So just exit 0.
|
}
|
||||||
*/
|
if (!(request_name_result == DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER
|
||||||
exit (0);
|
|| request_name_result == DBUS_REQUEST_NAME_REPLY_ALREADY_OWNER))
|
||||||
|
{
|
||||||
|
g_printerr ("%s already exists on bus and --replace not specified\n",
|
||||||
|
SHELL_DBUS_SERVICE);
|
||||||
|
exit (1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Also grab org.gnome.Panel to replace any existing panel process,
|
/* Also grab org.gnome.Panel to replace any existing panel process,
|
||||||
@ -108,6 +116,45 @@ shell_dbus_init (void)
|
|||||||
g_object_unref (bus);
|
g_object_unref (bus);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
constrain_tooltip (StTooltip *tooltip,
|
||||||
|
const ClutterGeometry *geometry,
|
||||||
|
ClutterGeometry *adjusted_geometry,
|
||||||
|
gpointer data)
|
||||||
|
{
|
||||||
|
const ClutterGeometry *tip_area = st_tooltip_get_tip_area (tooltip);
|
||||||
|
ShellGlobal *global = shell_global_get ();
|
||||||
|
MetaScreen *screen = shell_global_get_screen (global);
|
||||||
|
int n_monitors = meta_screen_get_n_monitors (screen);
|
||||||
|
int i;
|
||||||
|
|
||||||
|
*adjusted_geometry = *geometry;
|
||||||
|
|
||||||
|
/* A point that determines what screen we'll constrain to */
|
||||||
|
int x = tip_area->x + tip_area->width / 2;
|
||||||
|
int y = tip_area->y + tip_area->height / 2;
|
||||||
|
|
||||||
|
for (i = 0; i < n_monitors; i++)
|
||||||
|
{
|
||||||
|
MetaRectangle rect;
|
||||||
|
meta_screen_get_monitor_geometry (screen, i, &rect);
|
||||||
|
if (x >= rect.x && x < rect.x + rect.width &&
|
||||||
|
y >= rect.y && y < rect.y + rect.height)
|
||||||
|
{
|
||||||
|
if (adjusted_geometry->x + adjusted_geometry->width > rect.x + rect.width)
|
||||||
|
adjusted_geometry->x = rect.x + rect.width - adjusted_geometry->width;
|
||||||
|
if (adjusted_geometry->x < rect.x)
|
||||||
|
adjusted_geometry->x = rect.x;
|
||||||
|
|
||||||
|
if (adjusted_geometry->y + adjusted_geometry->height > rect.y + rect.height)
|
||||||
|
adjusted_geometry->y = rect.y + rect.height - adjusted_geometry->height;
|
||||||
|
if (adjusted_geometry->y < rect.y)
|
||||||
|
adjusted_geometry->y = rect.y;
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
update_font_options (GtkSettings *settings)
|
update_font_options (GtkSettings *settings)
|
||||||
@ -139,6 +186,8 @@ update_font_options (GtkSettings *settings)
|
|||||||
else
|
else
|
||||||
st_theme_context_set_default_resolution (context);
|
st_theme_context_set_default_resolution (context);
|
||||||
|
|
||||||
|
st_tooltip_set_constrain_func (stage, constrain_tooltip, NULL, NULL);
|
||||||
|
|
||||||
/* Clutter (as of 0.9) passes comprehensively wrong font options
|
/* Clutter (as of 0.9) passes comprehensively wrong font options
|
||||||
* override whatever set_font_flags() did above.
|
* override whatever set_font_flags() did above.
|
||||||
*
|
*
|
||||||
@ -221,6 +270,8 @@ shell_prefs_init (void)
|
|||||||
{
|
{
|
||||||
meta_prefs_override_preference_location ("/apps/mutter/general/attach_modal_dialogs",
|
meta_prefs_override_preference_location ("/apps/mutter/general/attach_modal_dialogs",
|
||||||
"/desktop/gnome/shell/windows/attach_modal_dialogs");
|
"/desktop/gnome/shell/windows/attach_modal_dialogs");
|
||||||
|
meta_prefs_override_preference_location ("/apps/mutter/general/workspaces_only_on_primary",
|
||||||
|
"/desktop/gnome/shell/windows/workspaces_only_on_primary");
|
||||||
meta_prefs_override_preference_location ("/apps/metacity/general/button_layout",
|
meta_prefs_override_preference_location ("/apps/metacity/general/button_layout",
|
||||||
"/desktop/gnome/shell/windows/button_layout");
|
"/desktop/gnome/shell/windows/button_layout");
|
||||||
meta_prefs_override_preference_location ("/apps/metacity/general/edge_tiling",
|
meta_prefs_override_preference_location ("/apps/metacity/general/edge_tiling",
|
||||||
@ -432,7 +483,7 @@ main (int argc, char **argv)
|
|||||||
g_setenv ("GJS_DEBUG_OUTPUT", "stderr", TRUE);
|
g_setenv ("GJS_DEBUG_OUTPUT", "stderr", TRUE);
|
||||||
g_setenv ("GJS_DEBUG_TOPICS", "JS ERROR;JS LOG", TRUE);
|
g_setenv ("GJS_DEBUG_TOPICS", "JS ERROR;JS LOG", TRUE);
|
||||||
|
|
||||||
shell_dbus_init ();
|
shell_dbus_init (meta_get_replace_current_wm ());
|
||||||
shell_a11y_init ();
|
shell_a11y_init ();
|
||||||
shell_fonts_init ();
|
shell_fonts_init ();
|
||||||
shell_perf_log_init ();
|
shell_perf_log_init ();
|
||||||
|
@ -23,9 +23,9 @@
|
|||||||
/* Vendor prefixes are something that can be preprended to a .desktop
|
/* Vendor prefixes are something that can be preprended to a .desktop
|
||||||
* file name. Undo this.
|
* file name. Undo this.
|
||||||
*/
|
*/
|
||||||
static const char*const known_vendor_prefixes[] = { "gnome",
|
static const char*const vendor_prefixes[] = { "gnome-",
|
||||||
"fedora",
|
"fedora-",
|
||||||
"mozilla",
|
"mozilla-",
|
||||||
NULL };
|
NULL };
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
@ -49,12 +49,14 @@ struct _ShellAppSystemPrivate {
|
|||||||
|
|
||||||
GSList *cached_flattened_apps; /* ShellAppInfo */
|
GSList *cached_flattened_apps; /* ShellAppInfo */
|
||||||
GSList *cached_settings; /* ShellAppInfo */
|
GSList *cached_settings; /* ShellAppInfo */
|
||||||
|
GSList *known_vendor_prefixes;
|
||||||
|
|
||||||
gint app_monitor_id;
|
gint app_monitor_id;
|
||||||
|
|
||||||
guint app_change_timeout_id;
|
guint app_change_timeout_id;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static char *shell_app_info_get_prefix (ShellAppInfo *info);
|
||||||
static void shell_app_system_finalize (GObject *object);
|
static void shell_app_system_finalize (GObject *object);
|
||||||
static gboolean on_tree_changed (gpointer user_data);
|
static gboolean on_tree_changed (gpointer user_data);
|
||||||
static void on_tree_changed_cb (GMenuTree *tree, gpointer user_data);
|
static void on_tree_changed_cb (GMenuTree *tree, gpointer user_data);
|
||||||
@ -159,20 +161,6 @@ shell_app_info_new_from_window (MetaWindow *window)
|
|||||||
return info;
|
return info;
|
||||||
}
|
}
|
||||||
|
|
||||||
static ShellAppInfo *
|
|
||||||
shell_app_info_new_from_keyfile_take_ownership (GKeyFile *keyfile,
|
|
||||||
const char *path)
|
|
||||||
{
|
|
||||||
ShellAppInfo *info;
|
|
||||||
|
|
||||||
info = g_slice_alloc0 (sizeof (ShellAppInfo));
|
|
||||||
info->type = SHELL_APP_INFO_TYPE_DESKTOP_FILE;
|
|
||||||
info->refcount = 1;
|
|
||||||
info->keyfile = keyfile;
|
|
||||||
info->keyfile_path = g_strdup (path);
|
|
||||||
return info;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void shell_app_system_class_init(ShellAppSystemClass *klass)
|
static void shell_app_system_class_init(ShellAppSystemClass *klass)
|
||||||
{
|
{
|
||||||
GObjectClass *gobject_class = (GObjectClass *)klass;
|
GObjectClass *gobject_class = (GObjectClass *)klass;
|
||||||
@ -212,7 +200,7 @@ shell_app_system_init (ShellAppSystem *self)
|
|||||||
* case by case.
|
* case by case.
|
||||||
*/
|
*/
|
||||||
priv->apps_tree = gmenu_tree_lookup ("applications.menu", GMENU_TREE_FLAGS_INCLUDE_NODISPLAY);
|
priv->apps_tree = gmenu_tree_lookup ("applications.menu", GMENU_TREE_FLAGS_INCLUDE_NODISPLAY);
|
||||||
priv->settings_tree = gmenu_tree_lookup ("settings.menu", GMENU_TREE_FLAGS_NONE);
|
priv->settings_tree = gmenu_tree_lookup ("gnomecc.menu", GMENU_TREE_FLAGS_INCLUDE_NODISPLAY);
|
||||||
|
|
||||||
priv->app_change_timeout_id = 0;
|
priv->app_change_timeout_id = 0;
|
||||||
|
|
||||||
@ -240,6 +228,11 @@ shell_app_system_finalize (GObject *object)
|
|||||||
g_slist_foreach (priv->cached_flattened_apps, (GFunc)shell_app_info_unref, NULL);
|
g_slist_foreach (priv->cached_flattened_apps, (GFunc)shell_app_info_unref, NULL);
|
||||||
g_slist_free (priv->cached_flattened_apps);
|
g_slist_free (priv->cached_flattened_apps);
|
||||||
priv->cached_flattened_apps = NULL;
|
priv->cached_flattened_apps = NULL;
|
||||||
|
|
||||||
|
g_slist_foreach (priv->known_vendor_prefixes, (GFunc)g_free, NULL);
|
||||||
|
g_slist_free (priv->known_vendor_prefixes);
|
||||||
|
priv->known_vendor_prefixes = NULL;
|
||||||
|
|
||||||
g_slist_foreach (priv->cached_settings, (GFunc)shell_app_info_unref, NULL);
|
g_slist_foreach (priv->cached_settings, (GFunc)shell_app_info_unref, NULL);
|
||||||
g_slist_free (priv->cached_settings);
|
g_slist_free (priv->cached_settings);
|
||||||
priv->cached_settings = NULL;
|
priv->cached_settings = NULL;
|
||||||
@ -323,10 +316,20 @@ cache_by_id (ShellAppSystem *self, GSList *apps)
|
|||||||
for (iter = apps; iter; iter = iter->next)
|
for (iter = apps; iter; iter = iter->next)
|
||||||
{
|
{
|
||||||
ShellAppInfo *info = iter->data;
|
ShellAppInfo *info = iter->data;
|
||||||
|
const char *id = shell_app_info_get_id (info);
|
||||||
|
char *prefix = shell_app_info_get_prefix (info);
|
||||||
|
|
||||||
shell_app_info_ref (info);
|
shell_app_info_ref (info);
|
||||||
/* the name is owned by the info itself */
|
/* the name is owned by the info itself */
|
||||||
g_hash_table_replace (self->priv->app_id_to_info, (char*)shell_app_info_get_id (info),
|
|
||||||
info);
|
if (prefix
|
||||||
|
&& !g_slist_find_custom (self->priv->known_vendor_prefixes, prefix,
|
||||||
|
(GCompareFunc)g_strcmp0))
|
||||||
|
self->priv->known_vendor_prefixes = g_slist_append (self->priv->known_vendor_prefixes,
|
||||||
|
prefix);
|
||||||
|
else
|
||||||
|
g_free (prefix);
|
||||||
|
g_hash_table_replace (self->priv->app_id_to_info, (char*)id, info);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -335,6 +338,10 @@ reread_menus (ShellAppSystem *self)
|
|||||||
{
|
{
|
||||||
GHashTable *unique = g_hash_table_new (g_str_hash, g_str_equal);
|
GHashTable *unique = g_hash_table_new (g_str_hash, g_str_equal);
|
||||||
|
|
||||||
|
g_slist_foreach (self->priv->known_vendor_prefixes, (GFunc)g_free, NULL);
|
||||||
|
g_slist_free (self->priv->known_vendor_prefixes);
|
||||||
|
self->priv->known_vendor_prefixes = NULL;
|
||||||
|
|
||||||
reread_entries (self, &(self->priv->cached_flattened_apps), unique, self->priv->apps_tree);
|
reread_entries (self, &(self->priv->cached_flattened_apps), unique, self->priv->apps_tree);
|
||||||
g_hash_table_remove_all (unique);
|
g_hash_table_remove_all (unique);
|
||||||
reread_entries (self, &(self->priv->cached_settings), unique, self->priv->settings_tree);
|
reread_entries (self, &(self->priv->cached_settings), unique, self->priv->settings_tree);
|
||||||
@ -576,44 +583,6 @@ _shell_app_system_register_app (ShellAppSystem *self,
|
|||||||
g_object_weak_ref (G_OBJECT (app), shell_app_system_on_app_weakref, ref);
|
g_object_weak_ref (G_OBJECT (app), shell_app_system_on_app_weakref, ref);
|
||||||
}
|
}
|
||||||
|
|
||||||
ShellAppInfo *
|
|
||||||
shell_app_system_load_from_desktop_file (ShellAppSystem *system,
|
|
||||||
const char *filename,
|
|
||||||
GError **error)
|
|
||||||
{
|
|
||||||
ShellAppInfo *appinfo;
|
|
||||||
GKeyFile *keyfile;
|
|
||||||
char *full_path = NULL;
|
|
||||||
gboolean success;
|
|
||||||
|
|
||||||
keyfile = g_key_file_new ();
|
|
||||||
|
|
||||||
if (strchr (filename, '/') != NULL)
|
|
||||||
{
|
|
||||||
success = g_key_file_load_from_file (keyfile, filename, G_KEY_FILE_NONE, error);
|
|
||||||
full_path = g_strdup (filename);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
char *app_path = g_build_filename ("applications", filename, NULL);
|
|
||||||
success = g_key_file_load_from_data_dirs (keyfile, app_path, &full_path,
|
|
||||||
G_KEY_FILE_NONE, error);
|
|
||||||
g_free (app_path);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!success)
|
|
||||||
{
|
|
||||||
g_key_file_free (keyfile);
|
|
||||||
g_free (full_path);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
appinfo = shell_app_info_new_from_keyfile_take_ownership (keyfile, full_path);
|
|
||||||
g_free (full_path);
|
|
||||||
|
|
||||||
return appinfo;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* shell_app_system_create_from_window:
|
* shell_app_system_create_from_window:
|
||||||
*
|
*
|
||||||
@ -645,16 +614,13 @@ shell_app_system_lookup_heuristic_basename (ShellAppSystem *system,
|
|||||||
const char *name)
|
const char *name)
|
||||||
{
|
{
|
||||||
ShellApp *result;
|
ShellApp *result;
|
||||||
char **vendor_prefixes;
|
GSList *prefix;
|
||||||
|
|
||||||
result = shell_app_system_get_app (system, name);
|
result = shell_app_system_get_app (system, name);
|
||||||
if (result != NULL)
|
if (result != NULL)
|
||||||
return result;
|
return result;
|
||||||
|
for (prefix = system->priv->known_vendor_prefixes; prefix; prefix = g_slist_next (prefix))
|
||||||
for (vendor_prefixes = (char**)known_vendor_prefixes;
|
|
||||||
*vendor_prefixes; vendor_prefixes++)
|
|
||||||
{
|
{
|
||||||
char *tmpid = g_strjoin (NULL, *vendor_prefixes, "-", name, NULL);
|
char *tmpid = g_strconcat ((char*)prefix->data, name, NULL);
|
||||||
result = shell_app_system_get_app (system, tmpid);
|
result = shell_app_system_get_app (system, tmpid);
|
||||||
g_free (tmpid);
|
g_free (tmpid);
|
||||||
if (result != NULL)
|
if (result != NULL)
|
||||||
@ -993,6 +959,115 @@ shell_app_info_get_id (ShellAppInfo *info)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static char *
|
||||||
|
shell_app_info_get_prefix (ShellAppInfo *info)
|
||||||
|
{
|
||||||
|
char *prefix = NULL, *file_prefix = NULL;
|
||||||
|
const char *id;
|
||||||
|
GFile *file;
|
||||||
|
char *name;
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
|
if (info->type != SHELL_APP_INFO_TYPE_ENTRY)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
id = gmenu_tree_entry_get_desktop_file_id ((GMenuTreeEntry*)info->entry);
|
||||||
|
file = g_file_new_for_path (gmenu_tree_entry_get_desktop_file_path ((GMenuTreeEntry*)info->entry));
|
||||||
|
name = g_file_get_basename (file);
|
||||||
|
|
||||||
|
if (!name)
|
||||||
|
{
|
||||||
|
g_object_unref (file);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
for (i = 0; vendor_prefixes[i]; i++)
|
||||||
|
{
|
||||||
|
if (g_str_has_prefix (name, vendor_prefixes[i]))
|
||||||
|
{
|
||||||
|
file_prefix = g_strdup (vendor_prefixes[i]);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
while (strcmp (name, id) != 0)
|
||||||
|
{
|
||||||
|
char *t;
|
||||||
|
char *pname;
|
||||||
|
GFile *parent = g_file_get_parent (file);
|
||||||
|
|
||||||
|
if (!parent)
|
||||||
|
{
|
||||||
|
g_warn_if_reached ();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
pname = g_file_get_basename (parent);
|
||||||
|
if (!pname)
|
||||||
|
{
|
||||||
|
g_object_unref (parent);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (!g_strstr_len (id, -1, pname))
|
||||||
|
{
|
||||||
|
/* handle <LegacyDir prefix="..."> */
|
||||||
|
char *t;
|
||||||
|
size_t name_len = strlen (name);
|
||||||
|
size_t id_len = strlen (id);
|
||||||
|
char *t_id = g_strdup (id);
|
||||||
|
|
||||||
|
t_id[id_len - name_len] = '\0';
|
||||||
|
t = g_strdup(t_id);
|
||||||
|
g_free (prefix);
|
||||||
|
g_free (t_id);
|
||||||
|
g_free (name);
|
||||||
|
name = g_strdup (id);
|
||||||
|
prefix = t;
|
||||||
|
|
||||||
|
g_object_unref (file);
|
||||||
|
file = parent;
|
||||||
|
g_free (pname);
|
||||||
|
g_free (file_prefix);
|
||||||
|
file_prefix = NULL;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
t = g_strconcat (pname, "-", name, NULL);
|
||||||
|
g_free (name);
|
||||||
|
name = t;
|
||||||
|
|
||||||
|
t = g_strconcat (pname, "-", prefix, NULL);
|
||||||
|
g_free (prefix);
|
||||||
|
prefix = t;
|
||||||
|
|
||||||
|
g_object_unref (file);
|
||||||
|
file = parent;
|
||||||
|
g_free (pname);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (file)
|
||||||
|
g_object_unref (file);
|
||||||
|
|
||||||
|
if (strcmp (name, id) == 0)
|
||||||
|
{
|
||||||
|
g_free (name);
|
||||||
|
if (file_prefix && !prefix)
|
||||||
|
return file_prefix;
|
||||||
|
if (file_prefix)
|
||||||
|
{
|
||||||
|
char *t = g_strconcat (prefix, "-", file_prefix, NULL);
|
||||||
|
g_free (prefix);
|
||||||
|
g_free (file_prefix);
|
||||||
|
prefix = t;
|
||||||
|
}
|
||||||
|
return prefix;
|
||||||
|
}
|
||||||
|
|
||||||
|
g_free (name);
|
||||||
|
g_free (prefix);
|
||||||
|
g_free (file_prefix);
|
||||||
|
g_return_val_if_reached (NULL);
|
||||||
|
}
|
||||||
|
|
||||||
#define DESKTOP_ENTRY_GROUP "Desktop Entry"
|
#define DESKTOP_ENTRY_GROUP "Desktop Entry"
|
||||||
|
|
||||||
char *
|
char *
|
||||||
@ -1260,21 +1335,27 @@ shell_app_info_create_icon_texture (ShellAppInfo *info, float size)
|
|||||||
GIcon *icon;
|
GIcon *icon;
|
||||||
ClutterActor *ret;
|
ClutterActor *ret;
|
||||||
|
|
||||||
|
ret = NULL;
|
||||||
|
|
||||||
if (info->type == SHELL_APP_INFO_TYPE_WINDOW)
|
if (info->type == SHELL_APP_INFO_TYPE_WINDOW)
|
||||||
{
|
{
|
||||||
return st_texture_cache_bind_pixbuf_property (st_texture_cache_get_default (),
|
ret = st_texture_cache_bind_pixbuf_property (st_texture_cache_get_default (),
|
||||||
G_OBJECT (info->window),
|
G_OBJECT (info->window),
|
||||||
"icon");
|
"icon");
|
||||||
}
|
}
|
||||||
|
|
||||||
icon = shell_app_info_get_icon (info);
|
|
||||||
if (icon == NULL)
|
|
||||||
{
|
|
||||||
ret = clutter_texture_new ();
|
|
||||||
g_object_set (ret, "opacity", 0, "width", size, "height", size, NULL);
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
icon = shell_app_info_get_icon (info);
|
||||||
|
if (icon != NULL)
|
||||||
|
{
|
||||||
|
ret = st_texture_cache_load_gicon (st_texture_cache_get_default (), NULL, icon, (int)size);
|
||||||
|
g_object_unref (icon);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ret == NULL)
|
||||||
|
{
|
||||||
|
icon = g_themed_icon_new ("application-x-executable");
|
||||||
ret = st_texture_cache_load_gicon (st_texture_cache_get_default (), NULL, icon, (int)size);
|
ret = st_texture_cache_load_gicon (st_texture_cache_get_default (), NULL, icon, (int)size);
|
||||||
g_object_unref (icon);
|
g_object_unref (icon);
|
||||||
}
|
}
|
||||||
@ -1386,12 +1467,23 @@ shell_app_info_launch_full (ShellAppInfo *info,
|
|||||||
shell_app = shell_app_system_get_app (shell_app_system_get_default (),
|
shell_app = shell_app_system_get_app (shell_app_system_get_default (),
|
||||||
shell_app_info_get_id (info));
|
shell_app_info_get_id (info));
|
||||||
|
|
||||||
|
/* In the case where we know an app, we handle reaping the child internally,
|
||||||
|
* in the window tracker.
|
||||||
|
*/
|
||||||
|
if (shell_app != NULL)
|
||||||
ret = g_desktop_app_info_launch_uris_as_manager (gapp, uris,
|
ret = g_desktop_app_info_launch_uris_as_manager (gapp, uris,
|
||||||
G_APP_LAUNCH_CONTEXT (context),
|
G_APP_LAUNCH_CONTEXT (context),
|
||||||
G_SPAWN_SEARCH_PATH | G_SPAWN_DO_NOT_REAP_CHILD,
|
G_SPAWN_SEARCH_PATH | G_SPAWN_DO_NOT_REAP_CHILD,
|
||||||
NULL, NULL,
|
NULL, NULL,
|
||||||
_gather_pid_callback, shell_app,
|
_gather_pid_callback, shell_app,
|
||||||
error);
|
error);
|
||||||
|
else
|
||||||
|
ret = g_desktop_app_info_launch_uris_as_manager (gapp, uris,
|
||||||
|
G_APP_LAUNCH_CONTEXT (context),
|
||||||
|
G_SPAWN_SEARCH_PATH,
|
||||||
|
NULL, NULL,
|
||||||
|
NULL, NULL,
|
||||||
|
error);
|
||||||
|
|
||||||
g_object_unref (G_OBJECT (gapp));
|
g_object_unref (G_OBJECT (gapp));
|
||||||
|
|
||||||
|
@ -81,9 +81,6 @@ ShellApp *shell_app_system_get_app_for_window (ShellAppSystem *sel
|
|||||||
ShellApp *shell_app_system_lookup_heuristic_basename (ShellAppSystem *system,
|
ShellApp *shell_app_system_lookup_heuristic_basename (ShellAppSystem *system,
|
||||||
const char *id);
|
const char *id);
|
||||||
|
|
||||||
ShellAppInfo *shell_app_system_load_from_desktop_file (ShellAppSystem *system,
|
|
||||||
const char *filename,
|
|
||||||
GError **error);
|
|
||||||
ShellAppInfo *shell_app_system_create_from_window (ShellAppSystem *system,
|
ShellAppInfo *shell_app_system_create_from_window (ShellAppSystem *system,
|
||||||
MetaWindow *window);
|
MetaWindow *window);
|
||||||
|
|
||||||
|
@ -4,6 +4,8 @@
|
|||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
#include <glib/gi18n-lib.h>
|
||||||
|
|
||||||
#include <meta/display.h>
|
#include <meta/display.h>
|
||||||
|
|
||||||
#include "shell-app-private.h"
|
#include "shell-app-private.h"
|
||||||
@ -139,14 +141,26 @@ shell_app_create_faded_icon_cpu (StTextureCache *cache,
|
|||||||
app = data->app;
|
app = data->app;
|
||||||
size = data->size;
|
size = data->size;
|
||||||
|
|
||||||
icon = shell_app_info_get_icon (app->info);
|
info = NULL;
|
||||||
if (icon == NULL)
|
|
||||||
return COGL_INVALID_HANDLE;
|
|
||||||
|
|
||||||
|
icon = shell_app_info_get_icon (app->info);
|
||||||
|
if (icon != NULL)
|
||||||
|
{
|
||||||
info = gtk_icon_theme_lookup_by_gicon (gtk_icon_theme_get_default (),
|
info = gtk_icon_theme_lookup_by_gicon (gtk_icon_theme_get_default (),
|
||||||
icon, (int) (size + 0.5),
|
icon, (int) (size + 0.5),
|
||||||
GTK_ICON_LOOKUP_FORCE_SIZE);
|
GTK_ICON_LOOKUP_FORCE_SIZE);
|
||||||
g_object_unref (icon);
|
g_object_unref (icon);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (info == NULL)
|
||||||
|
{
|
||||||
|
icon = g_themed_icon_new ("application-x-executable");
|
||||||
|
info = gtk_icon_theme_lookup_by_gicon (gtk_icon_theme_get_default (),
|
||||||
|
icon, (int) (size + 0.5),
|
||||||
|
GTK_ICON_LOOKUP_FORCE_SIZE);
|
||||||
|
g_object_unref (icon);
|
||||||
|
}
|
||||||
|
|
||||||
if (info == NULL)
|
if (info == NULL)
|
||||||
return COGL_INVALID_HANDLE;
|
return COGL_INVALID_HANDLE;
|
||||||
|
|
||||||
@ -427,13 +441,24 @@ shell_app_activate (ShellApp *app,
|
|||||||
switch (app->state)
|
switch (app->state)
|
||||||
{
|
{
|
||||||
case SHELL_APP_STATE_STOPPED:
|
case SHELL_APP_STATE_STOPPED:
|
||||||
/* TODO sensibly handle this error */
|
{
|
||||||
shell_app_info_launch_full (app->info,
|
GError *error = NULL;
|
||||||
|
if (!shell_app_info_launch_full (app->info,
|
||||||
0,
|
0,
|
||||||
NULL,
|
NULL,
|
||||||
workspace,
|
workspace,
|
||||||
NULL,
|
NULL,
|
||||||
NULL);
|
&error))
|
||||||
|
{
|
||||||
|
char *msg;
|
||||||
|
msg = g_strdup_printf (_("Failed to launch '%s'"), shell_app_get_name (app));
|
||||||
|
shell_global_notify_error (shell_global_get (),
|
||||||
|
msg,
|
||||||
|
error->message);
|
||||||
|
g_free (msg);
|
||||||
|
g_clear_error (&error);
|
||||||
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case SHELL_APP_STATE_STARTING:
|
case SHELL_APP_STATE_STARTING:
|
||||||
break;
|
break;
|
||||||
@ -755,9 +780,6 @@ _shell_app_add_window (ShellApp *app,
|
|||||||
|
|
||||||
g_object_freeze_notify (G_OBJECT (app));
|
g_object_freeze_notify (G_OBJECT (app));
|
||||||
|
|
||||||
if (app->state != SHELL_APP_STATE_STARTING)
|
|
||||||
shell_app_state_transition (app, SHELL_APP_STATE_RUNNING);
|
|
||||||
|
|
||||||
if (!app->running_state)
|
if (!app->running_state)
|
||||||
create_running_state (app);
|
create_running_state (app);
|
||||||
|
|
||||||
@ -770,6 +792,9 @@ _shell_app_add_window (ShellApp *app,
|
|||||||
if (user_time > app->running_state->last_user_time)
|
if (user_time > app->running_state->last_user_time)
|
||||||
app->running_state->last_user_time = user_time;
|
app->running_state->last_user_time = user_time;
|
||||||
|
|
||||||
|
if (app->state != SHELL_APP_STATE_STARTING)
|
||||||
|
shell_app_state_transition (app, SHELL_APP_STATE_RUNNING);
|
||||||
|
|
||||||
g_object_thaw_notify (G_OBJECT (app));
|
g_object_thaw_notify (G_OBJECT (app));
|
||||||
|
|
||||||
g_signal_emit (app, shell_app_signals[WINDOWS_CHANGED], 0);
|
g_signal_emit (app, shell_app_signals[WINDOWS_CHANGED], 0);
|
||||||
|
@ -21,6 +21,7 @@
|
|||||||
#include <gdk/gdkx.h>
|
#include <gdk/gdkx.h>
|
||||||
#include <gio/gio.h>
|
#include <gio/gio.h>
|
||||||
#include <gjs/gjs-module.h>
|
#include <gjs/gjs-module.h>
|
||||||
|
#include <girepository.h>
|
||||||
#include <libxml/parser.h>
|
#include <libxml/parser.h>
|
||||||
#include <libxml/tree.h>
|
#include <libxml/tree.h>
|
||||||
#include <libxml/xmlmemory.h>
|
#include <libxml/xmlmemory.h>
|
||||||
@ -102,6 +103,7 @@ enum
|
|||||||
XDND_POSITION_CHANGED,
|
XDND_POSITION_CHANGED,
|
||||||
XDND_LEAVE,
|
XDND_LEAVE,
|
||||||
XDND_ENTER,
|
XDND_ENTER,
|
||||||
|
NOTIFY_ERROR,
|
||||||
LAST_SIGNAL
|
LAST_SIGNAL
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -293,6 +295,17 @@ shell_global_class_init (ShellGlobalClass *klass)
|
|||||||
g_cclosure_marshal_VOID__VOID,
|
g_cclosure_marshal_VOID__VOID,
|
||||||
G_TYPE_NONE, 0);
|
G_TYPE_NONE, 0);
|
||||||
|
|
||||||
|
shell_global_signals[NOTIFY_ERROR] =
|
||||||
|
g_signal_new ("notify-error",
|
||||||
|
G_TYPE_FROM_CLASS (klass),
|
||||||
|
G_SIGNAL_RUN_LAST,
|
||||||
|
0,
|
||||||
|
NULL, NULL,
|
||||||
|
gi_cclosure_marshal_generic,
|
||||||
|
G_TYPE_NONE, 2,
|
||||||
|
G_TYPE_STRING,
|
||||||
|
G_TYPE_STRING);
|
||||||
|
|
||||||
g_object_class_install_property (gobject_class,
|
g_object_class_install_property (gobject_class,
|
||||||
PROP_OVERLAY_GROUP,
|
PROP_OVERLAY_GROUP,
|
||||||
g_param_spec_object ("overlay-group",
|
g_param_spec_object ("overlay-group",
|
||||||
@ -871,6 +884,61 @@ shell_global_display_is_grabbed (ShellGlobal *global)
|
|||||||
return meta_display_get_grab_op (display) != META_GRAB_OP_NONE;
|
return meta_display_get_grab_op (display) != META_GRAB_OP_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* shell_global_create_pointer_barrier
|
||||||
|
* @global: a #ShellGlobal
|
||||||
|
* @x1: left X coordinate
|
||||||
|
* @y1: top Y coordinate
|
||||||
|
* @x2: right X coordinate
|
||||||
|
* @y2: bottom Y coordinate
|
||||||
|
* @directions: The directions we're allowed to pass through
|
||||||
|
*
|
||||||
|
* If supported by X creates a pointer barrier.
|
||||||
|
*
|
||||||
|
* Return value: value you can pass to shell_global_destroy_pointer_barrier()
|
||||||
|
*/
|
||||||
|
guint32
|
||||||
|
shell_global_create_pointer_barrier (ShellGlobal *global,
|
||||||
|
int x1, int y1, int x2, int y2,
|
||||||
|
int directions)
|
||||||
|
{
|
||||||
|
#if XFIXES_MAJOR >= 5
|
||||||
|
Display *xdpy;
|
||||||
|
|
||||||
|
xdpy = meta_plugin_get_xdisplay (global->plugin);
|
||||||
|
|
||||||
|
return (guint32)
|
||||||
|
XFixesCreatePointerBarrier (xdpy, DefaultRootWindow(xdpy),
|
||||||
|
x1, y1,
|
||||||
|
x2, y2,
|
||||||
|
directions,
|
||||||
|
0, NULL);
|
||||||
|
#else
|
||||||
|
return 0;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* shell_global_destroy_pointer_barrier
|
||||||
|
* @global: a #ShellGlobal
|
||||||
|
* @barrier: a pointer barrier
|
||||||
|
*
|
||||||
|
* Destroys the @barrier created by shell_global_create_pointer_barrier().
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
shell_global_destroy_pointer_barrier (ShellGlobal *global, guint32 barrier)
|
||||||
|
{
|
||||||
|
#if XFIXES_MAJOR >= 5
|
||||||
|
Display *xdpy;
|
||||||
|
|
||||||
|
g_return_if_fail (barrier > 0);
|
||||||
|
|
||||||
|
xdpy = meta_plugin_get_xdisplay (global->plugin);
|
||||||
|
XFixesDestroyPointerBarrier (xdpy, (PointerBarrier)barrier);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* shell_global_add_extension_importer:
|
* shell_global_add_extension_importer:
|
||||||
* @target_object_script: JavaScript code evaluating to a target object
|
* @target_object_script: JavaScript code evaluating to a target object
|
||||||
@ -1238,6 +1306,25 @@ shell_global_maybe_gc (ShellGlobal *global)
|
|||||||
gjs_context_maybe_gc (global->js_context);
|
gjs_context_maybe_gc (global->js_context);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* shell_global_notify_error:
|
||||||
|
* @global: a #ShellGlobal
|
||||||
|
* @msg: Error message
|
||||||
|
* @details: Error details
|
||||||
|
*
|
||||||
|
* Show a system error notification. Use this function
|
||||||
|
* when a user-initiated action results in a non-fatal problem
|
||||||
|
* from causes that may not be under system control. For
|
||||||
|
* example, an application crash.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
shell_global_notify_error (ShellGlobal *global,
|
||||||
|
const char *msg,
|
||||||
|
const char *details)
|
||||||
|
{
|
||||||
|
g_signal_emit_by_name (global, "notify-error", msg, details);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
grab_notify (GtkWidget *widget, gboolean was_grabbed, gpointer user_data)
|
grab_notify (GtkWidget *widget, gboolean was_grabbed, gpointer user_data)
|
||||||
{
|
{
|
||||||
@ -1368,48 +1455,33 @@ shell_global_get_monitors (ShellGlobal *global)
|
|||||||
MetaRectangle *
|
MetaRectangle *
|
||||||
shell_global_get_primary_monitor (ShellGlobal *global)
|
shell_global_get_primary_monitor (ShellGlobal *global)
|
||||||
{
|
{
|
||||||
GdkScreen *screen = shell_global_get_gdk_screen (global);
|
MetaScreen *screen = shell_global_get_screen (global);
|
||||||
GdkRectangle gdk_rect;
|
|
||||||
MetaRectangle rect;
|
MetaRectangle rect;
|
||||||
gint primary = 0;
|
gint primary = 0;
|
||||||
|
|
||||||
/* gdk_screen_get_primary_monitor is only present in gtk-2.20+
|
primary = meta_screen_get_primary_monitor (screen);
|
||||||
* and is in a useable state (supports heuristics and fallback modes)
|
meta_screen_get_monitor_geometry (screen, primary, &rect);
|
||||||
* starting with 2.20.1
|
|
||||||
*/
|
|
||||||
#if !GTK_CHECK_VERSION (2, 20, 1)
|
|
||||||
gint i;
|
|
||||||
gchar *output_name = NULL;
|
|
||||||
gint num_monitors = gdk_screen_get_n_monitors (screen);
|
|
||||||
|
|
||||||
for (i = 0; i < num_monitors; i++)
|
|
||||||
{
|
|
||||||
/* Prefer the laptop's internal screen if present */
|
|
||||||
output_name = gdk_screen_get_monitor_plug_name (screen, i);
|
|
||||||
if (output_name)
|
|
||||||
{
|
|
||||||
gboolean is_lvds = g_ascii_strncasecmp (output_name, "LVDS", 4) == 0;
|
|
||||||
g_free (output_name);
|
|
||||||
if (is_lvds)
|
|
||||||
{
|
|
||||||
primary = i;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
primary = gdk_screen_get_primary_monitor (screen);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
gdk_screen_get_monitor_geometry (screen, primary, &gdk_rect);
|
|
||||||
rect.x = gdk_rect.x;
|
|
||||||
rect.y = gdk_rect.y;
|
|
||||||
rect.width = gdk_rect.width;
|
|
||||||
rect.height = gdk_rect.height;
|
|
||||||
|
|
||||||
return meta_rectangle_copy (&rect);
|
return meta_rectangle_copy (&rect);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* shell_global_get_primary_monitor_index:
|
||||||
|
* @global: the #ShellGlobal
|
||||||
|
*
|
||||||
|
* Gets the index of the primary monitor (the one that the
|
||||||
|
* panel is on).
|
||||||
|
*
|
||||||
|
* Return value: the index of the primary monitor
|
||||||
|
*/
|
||||||
|
int
|
||||||
|
shell_global_get_primary_monitor_index (ShellGlobal *global)
|
||||||
|
{
|
||||||
|
MetaScreen *screen = shell_global_get_screen (global);
|
||||||
|
|
||||||
|
return meta_screen_get_primary_monitor (screen);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* shell_global_get_focus_monitor:
|
* shell_global_get_focus_monitor:
|
||||||
* @global: the #ShellGlobal
|
* @global: the #ShellGlobal
|
||||||
@ -1473,6 +1545,48 @@ shell_global_get_pointer (ShellGlobal *global,
|
|||||||
*mods = raw_mods & GDK_MODIFIER_MASK;
|
*mods = raw_mods & GDK_MODIFIER_MASK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* shell_global_sync_pointer:
|
||||||
|
* @global: the #ShellGlobal
|
||||||
|
*
|
||||||
|
* Ensures that clutter is aware of the current pointer position,
|
||||||
|
* causing enter and leave events to be emitted if the pointer moved
|
||||||
|
* behind our back (ie, during a pointer grab).
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
shell_global_sync_pointer (ShellGlobal *global)
|
||||||
|
{
|
||||||
|
int x, y;
|
||||||
|
GdkModifierType mods;
|
||||||
|
ClutterMotionEvent event;
|
||||||
|
|
||||||
|
gdk_display_get_pointer (gdk_display_get_default (), NULL, &x, &y, &mods);
|
||||||
|
|
||||||
|
event.type = CLUTTER_MOTION;
|
||||||
|
event.time = shell_global_get_current_time (global);
|
||||||
|
event.flags = 0;
|
||||||
|
/* This is wrong: we should be setting event.stage to NULL if the
|
||||||
|
* pointer is not inside the bounds of the stage given the current
|
||||||
|
* stage_input_mode. For our current purposes however, this works.
|
||||||
|
*/
|
||||||
|
event.stage = CLUTTER_STAGE (meta_plugin_get_stage (global->plugin));
|
||||||
|
event.x = x;
|
||||||
|
event.y = y;
|
||||||
|
event.modifier_state = mods;
|
||||||
|
event.axes = NULL;
|
||||||
|
event.device = clutter_device_manager_get_core_device (clutter_device_manager_get_default (),
|
||||||
|
CLUTTER_POINTER_DEVICE);
|
||||||
|
|
||||||
|
/* Leaving event.source NULL will force clutter to look it up, which
|
||||||
|
* will generate enter/leave events as a side effect, if they are
|
||||||
|
* needed. We need a better way to do this though... see
|
||||||
|
* http://bugzilla.clutter-project.org/show_bug.cgi?id=2615.
|
||||||
|
*/
|
||||||
|
event.source = NULL;
|
||||||
|
|
||||||
|
clutter_event_put ((ClutterEvent *)&event);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* shell_get_event_state:
|
* shell_get_event_state:
|
||||||
* @event: a #ClutterEvent
|
* @event: a #ClutterEvent
|
||||||
@ -2048,3 +2162,70 @@ shell_global_launch_calendar_server (ShellGlobal *global)
|
|||||||
|
|
||||||
g_free (calendar_server_exe);
|
g_free (calendar_server_exe);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
shell_global_get_self_contact_features_cb (TpConnection *connection,
|
||||||
|
guint n_contacts,
|
||||||
|
TpContact * const *contacts,
|
||||||
|
const GError *error,
|
||||||
|
gpointer user_data,
|
||||||
|
GObject *weak_object)
|
||||||
|
{
|
||||||
|
if (error != NULL) {
|
||||||
|
g_print ("Failed to upgrade self contact: %s", error->message);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
((ShellGetSelfContactFeaturesCb)user_data)(connection, *contacts);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* shell_get_self_contact_features:
|
||||||
|
* @self: A connection, which must be ready
|
||||||
|
* @n_features: Number of features in features
|
||||||
|
* @features: (array length=n_features) (allow-none) (element-type uint):
|
||||||
|
* Array of features
|
||||||
|
* @callback: (scope async): User callback to run when the contact is ready
|
||||||
|
*
|
||||||
|
* Wrap tp_connection_upgrade_contacts due to the lack of support for
|
||||||
|
* proper arrays arguments in GJS.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
shell_get_self_contact_features (TpConnection *self,
|
||||||
|
guint n_features,
|
||||||
|
const TpContactFeature *features,
|
||||||
|
ShellGetSelfContactFeaturesCb callback)
|
||||||
|
{
|
||||||
|
TpContact *self_contact = tp_connection_get_self_contact (self);
|
||||||
|
|
||||||
|
tp_connection_upgrade_contacts (self, 1, &self_contact,
|
||||||
|
n_features, features,
|
||||||
|
shell_global_get_self_contact_features_cb,
|
||||||
|
callback, NULL, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* shell_get_contact_events:
|
||||||
|
* @log_manager: A #TplLogManager
|
||||||
|
* @account: A #TpAccount
|
||||||
|
* @entity: A #TplEntity
|
||||||
|
* @num_events: The number of events to retrieve
|
||||||
|
* @callback: (scope async): User callback to run when the contact is ready
|
||||||
|
*
|
||||||
|
* Wrap tpl_log_manager_get_filtered_events_async because gjs cannot support
|
||||||
|
* multiple callbacks in the same function call.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
shell_get_contact_events (TplLogManager *log_manager,
|
||||||
|
TpAccount *account,
|
||||||
|
TplEntity *entity,
|
||||||
|
guint num_events,
|
||||||
|
GAsyncReadyCallback callback)
|
||||||
|
{
|
||||||
|
tpl_log_manager_get_filtered_events_async (log_manager,
|
||||||
|
account,
|
||||||
|
entity,
|
||||||
|
TPL_EVENT_MASK_TEXT,
|
||||||
|
num_events,
|
||||||
|
NULL, NULL,
|
||||||
|
callback, NULL);
|
||||||
|
}
|
||||||
|
@ -8,6 +8,7 @@
|
|||||||
#include <gtk/gtk.h>
|
#include <gtk/gtk.h>
|
||||||
#include <meta/meta-plugin.h>
|
#include <meta/meta-plugin.h>
|
||||||
#include <telepathy-glib/telepathy-glib.h>
|
#include <telepathy-glib/telepathy-glib.h>
|
||||||
|
#include <telepathy-logger/telepathy-logger.h>
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
G_BEGIN_DECLS
|
||||||
|
|
||||||
@ -99,12 +100,20 @@ void shell_global_format_time_relative_pretty (ShellGlobal *global, guint delta,
|
|||||||
|
|
||||||
GSList *shell_global_get_monitors (ShellGlobal *global);
|
GSList *shell_global_get_monitors (ShellGlobal *global);
|
||||||
MetaRectangle *shell_global_get_primary_monitor (ShellGlobal *global);
|
MetaRectangle *shell_global_get_primary_monitor (ShellGlobal *global);
|
||||||
|
int shell_global_get_primary_monitor_index (ShellGlobal *global);
|
||||||
MetaRectangle *shell_global_get_focus_monitor (ShellGlobal *global);
|
MetaRectangle *shell_global_get_focus_monitor (ShellGlobal *global);
|
||||||
|
|
||||||
|
guint32 shell_global_create_pointer_barrier (ShellGlobal *global,
|
||||||
|
int x1, int y1, int x2, int y2,
|
||||||
|
int directions);
|
||||||
|
void shell_global_destroy_pointer_barrier (ShellGlobal *global,
|
||||||
|
guint32 barrier);
|
||||||
|
|
||||||
void shell_global_get_pointer (ShellGlobal *global,
|
void shell_global_get_pointer (ShellGlobal *global,
|
||||||
int *x,
|
int *x,
|
||||||
int *y,
|
int *y,
|
||||||
ClutterModifierType *mods);
|
ClutterModifierType *mods);
|
||||||
|
void shell_global_sync_pointer (ShellGlobal *global);
|
||||||
|
|
||||||
GSettings *shell_global_get_settings (ShellGlobal *global);
|
GSettings *shell_global_get_settings (ShellGlobal *global);
|
||||||
|
|
||||||
@ -142,6 +151,11 @@ void shell_global_play_theme_sound (ShellGlobal *global,
|
|||||||
void shell_global_cancel_theme_sound (ShellGlobal *global,
|
void shell_global_cancel_theme_sound (ShellGlobal *global,
|
||||||
guint id);
|
guint id);
|
||||||
|
|
||||||
|
|
||||||
|
void shell_global_notify_error (ShellGlobal *global,
|
||||||
|
const char *msg,
|
||||||
|
const char *details);
|
||||||
|
|
||||||
void shell_global_init_xdnd (ShellGlobal *global);
|
void shell_global_init_xdnd (ShellGlobal *global);
|
||||||
|
|
||||||
typedef void (*ShellGetTpContactCb) (TpConnection *connection,
|
typedef void (*ShellGetTpContactCb) (TpConnection *connection,
|
||||||
@ -157,6 +171,20 @@ void shell_get_tp_contacts (TpConnection *self,
|
|||||||
|
|
||||||
void shell_global_launch_calendar_server (ShellGlobal *global);
|
void shell_global_launch_calendar_server (ShellGlobal *global);
|
||||||
|
|
||||||
|
typedef void (*ShellGetSelfContactFeaturesCb) (TpConnection *connection,
|
||||||
|
TpContact *contact);
|
||||||
|
|
||||||
|
void shell_get_self_contact_features (TpConnection *self,
|
||||||
|
guint n_features,
|
||||||
|
const TpContactFeature *features,
|
||||||
|
ShellGetSelfContactFeaturesCb callback);
|
||||||
|
|
||||||
|
void shell_get_contact_events (TplLogManager *log_manager,
|
||||||
|
TpAccount *account,
|
||||||
|
TplEntity *entity,
|
||||||
|
guint num_events,
|
||||||
|
GAsyncReadyCallback callback);
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
||||||
#endif /* __SHELL_GLOBAL_H__ */
|
#endif /* __SHELL_GLOBAL_H__ */
|
||||||
|
816
src/shell-mobile-providers.c
Normal file
816
src/shell-mobile-providers.c
Normal file
@ -0,0 +1,816 @@
|
|||||||
|
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
||||||
|
/*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with this library; if not, write to the
|
||||||
|
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||||
|
* Boston, MA 02110-1301 USA.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2009 Novell, Inc.
|
||||||
|
* Author: Tambet Ingo (tambet@gmail.com).
|
||||||
|
*
|
||||||
|
* Copyright (C) 2009 - 2010 Red Hat, Inc.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "config.h"
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
|
#include <errno.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
#include <glib/gi18n.h>
|
||||||
|
|
||||||
|
#include "shell-mobile-providers.h"
|
||||||
|
|
||||||
|
#ifndef MOBILE_BROADBAND_PROVIDER_INFO
|
||||||
|
#define MOBILE_BROADBAND_PROVIDER_INFO DATADIR "/mobile-broadband-provider-info/serviceproviders.xml"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define ISO_3166_COUNTRY_CODES DATADIR "/zoneinfo/iso3166.tab"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
static GHashTable *
|
||||||
|
read_country_codes (void)
|
||||||
|
{
|
||||||
|
GHashTable *table;
|
||||||
|
GIOChannel *channel;
|
||||||
|
GString *buffer;
|
||||||
|
GError *error = NULL;
|
||||||
|
GIOStatus status;
|
||||||
|
|
||||||
|
channel = g_io_channel_new_file (ISO_3166_COUNTRY_CODES, "r", &error);
|
||||||
|
if (!channel) {
|
||||||
|
if (error) {
|
||||||
|
g_warning ("Could not read " ISO_3166_COUNTRY_CODES ": %s", error->message);
|
||||||
|
g_error_free (error);
|
||||||
|
} else
|
||||||
|
g_warning ("Could not read " ISO_3166_COUNTRY_CODES ": Unknown error");
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
table = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);
|
||||||
|
buffer = g_string_sized_new (32);
|
||||||
|
|
||||||
|
status = G_IO_STATUS_NORMAL;
|
||||||
|
while (status == G_IO_STATUS_NORMAL) {
|
||||||
|
status = g_io_channel_read_line_string (channel, buffer, NULL, &error);
|
||||||
|
|
||||||
|
switch (status) {
|
||||||
|
case G_IO_STATUS_NORMAL:
|
||||||
|
if (buffer->str[0] != '#') {
|
||||||
|
char **pieces;
|
||||||
|
|
||||||
|
pieces = g_strsplit (buffer->str, "\t", 2);
|
||||||
|
|
||||||
|
/* Hack for rh#556292; iso3166.tab is just wrong */
|
||||||
|
pieces[1] = pieces[1] ? g_strchomp (pieces[1]) : NULL;
|
||||||
|
if (pieces[1] && !strcmp (pieces[1], "Britain (UK)")) {
|
||||||
|
g_free (pieces[1]);
|
||||||
|
pieces[1] = g_strdup (_("United Kingdom"));
|
||||||
|
}
|
||||||
|
|
||||||
|
g_hash_table_insert (table, pieces[0], pieces[1]);
|
||||||
|
g_free (pieces);
|
||||||
|
}
|
||||||
|
|
||||||
|
g_string_truncate (buffer, 0);
|
||||||
|
break;
|
||||||
|
case G_IO_STATUS_EOF:
|
||||||
|
break;
|
||||||
|
case G_IO_STATUS_ERROR:
|
||||||
|
g_warning ("Error while reading: %s", error->message);
|
||||||
|
g_error_free (error);
|
||||||
|
break;
|
||||||
|
case G_IO_STATUS_AGAIN:
|
||||||
|
/* FIXME: Try again a few times, but really, it never happes, right? */
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
g_string_free (buffer, TRUE);
|
||||||
|
g_io_channel_unref (channel);
|
||||||
|
|
||||||
|
return table;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* XML Parser */
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
PARSER_TOPLEVEL = 0,
|
||||||
|
PARSER_COUNTRY,
|
||||||
|
PARSER_PROVIDER,
|
||||||
|
PARSER_METHOD_GSM,
|
||||||
|
PARSER_METHOD_GSM_APN,
|
||||||
|
PARSER_METHOD_CDMA,
|
||||||
|
PARSER_ERROR
|
||||||
|
} MobileContextState;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
GHashTable *country_codes;
|
||||||
|
GHashTable *table;
|
||||||
|
|
||||||
|
char *current_country;
|
||||||
|
GSList *current_providers;
|
||||||
|
ShellMobileProvider *current_provider;
|
||||||
|
ShellMobileAccessMethod *current_method;
|
||||||
|
|
||||||
|
char *text_buffer;
|
||||||
|
MobileContextState state;
|
||||||
|
} MobileParser;
|
||||||
|
|
||||||
|
static ShellGsmMccMnc *
|
||||||
|
mcc_mnc_new (const char *mcc, const char *mnc)
|
||||||
|
{
|
||||||
|
ShellGsmMccMnc *m;
|
||||||
|
|
||||||
|
m = g_slice_new (ShellGsmMccMnc);
|
||||||
|
m->mcc = g_strstrip (g_strdup (mcc));
|
||||||
|
m->mnc = g_strstrip (g_strdup (mnc));
|
||||||
|
return m;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* added in porting */
|
||||||
|
static ShellGsmMccMnc *
|
||||||
|
mcc_mnc_copy (const ShellGsmMccMnc *other) {
|
||||||
|
ShellGsmMccMnc *ret;
|
||||||
|
|
||||||
|
ret = g_slice_new (ShellGsmMccMnc);
|
||||||
|
ret->mcc = g_strdup (other->mcc);
|
||||||
|
ret->mnc = g_strdup (other->mnc);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
mcc_mnc_free (ShellGsmMccMnc *m)
|
||||||
|
{
|
||||||
|
g_return_if_fail (m != NULL);
|
||||||
|
g_free (m->mcc);
|
||||||
|
g_free (m->mnc);
|
||||||
|
g_slice_free (ShellGsmMccMnc, m);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* added in porting */
|
||||||
|
G_DEFINE_BOXED_TYPE (ShellGsmMccMnc, shell_gsm_mcc_mnc, mcc_mnc_copy, mcc_mnc_free)
|
||||||
|
|
||||||
|
static ShellMobileAccessMethod *
|
||||||
|
access_method_new (void)
|
||||||
|
{
|
||||||
|
ShellMobileAccessMethod *method;
|
||||||
|
|
||||||
|
method = g_slice_new0 (ShellMobileAccessMethod);
|
||||||
|
method->refs = 1;
|
||||||
|
method->lcl_names = g_hash_table_new_full (g_str_hash, g_str_equal,
|
||||||
|
(GDestroyNotify) g_free,
|
||||||
|
(GDestroyNotify) g_free);
|
||||||
|
|
||||||
|
return method;
|
||||||
|
}
|
||||||
|
|
||||||
|
ShellMobileAccessMethod *
|
||||||
|
shell_mobile_access_method_ref (ShellMobileAccessMethod *method)
|
||||||
|
{
|
||||||
|
g_return_val_if_fail (method != NULL, NULL);
|
||||||
|
g_return_val_if_fail (method->refs > 0, NULL);
|
||||||
|
|
||||||
|
method->refs++;
|
||||||
|
|
||||||
|
return method;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
shell_mobile_access_method_unref (ShellMobileAccessMethod *method)
|
||||||
|
{
|
||||||
|
g_return_if_fail (method != NULL);
|
||||||
|
g_return_if_fail (method->refs > 0);
|
||||||
|
|
||||||
|
if (--method->refs == 0) {
|
||||||
|
g_free (method->name);
|
||||||
|
g_hash_table_destroy (method->lcl_names);
|
||||||
|
g_free (method->username);
|
||||||
|
g_free (method->password);
|
||||||
|
g_free (method->gateway);
|
||||||
|
g_free (method->gsm_apn);
|
||||||
|
g_slist_foreach (method->dns, (GFunc) g_free, NULL);
|
||||||
|
g_slist_free (method->dns);
|
||||||
|
|
||||||
|
g_slice_free (ShellMobileAccessMethod, method);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
GType
|
||||||
|
shell_mobile_access_method_get_type (void)
|
||||||
|
{
|
||||||
|
static GType type = 0;
|
||||||
|
|
||||||
|
if (G_UNLIKELY (type == 0)) {
|
||||||
|
type = g_boxed_type_register_static ("ShellMobileAccessMethod",
|
||||||
|
(GBoxedCopyFunc) shell_mobile_access_method_ref,
|
||||||
|
(GBoxedFreeFunc) shell_mobile_access_method_unref);
|
||||||
|
}
|
||||||
|
return type;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static ShellMobileProvider *
|
||||||
|
provider_new (void)
|
||||||
|
{
|
||||||
|
ShellMobileProvider *provider;
|
||||||
|
|
||||||
|
provider = g_slice_new0 (ShellMobileProvider);
|
||||||
|
provider->refs = 1;
|
||||||
|
provider->lcl_names = g_hash_table_new_full (g_str_hash, g_str_equal,
|
||||||
|
(GDestroyNotify) g_free,
|
||||||
|
(GDestroyNotify) g_free);
|
||||||
|
|
||||||
|
return provider;
|
||||||
|
}
|
||||||
|
|
||||||
|
ShellMobileProvider *
|
||||||
|
shell_mobile_provider_ref (ShellMobileProvider *provider)
|
||||||
|
{
|
||||||
|
provider->refs++;
|
||||||
|
|
||||||
|
return provider;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
shell_mobile_provider_unref (ShellMobileProvider *provider)
|
||||||
|
{
|
||||||
|
if (--provider->refs == 0) {
|
||||||
|
g_free (provider->name);
|
||||||
|
g_hash_table_destroy (provider->lcl_names);
|
||||||
|
|
||||||
|
g_slist_foreach (provider->methods, (GFunc) shell_mobile_access_method_unref, NULL);
|
||||||
|
g_slist_free (provider->methods);
|
||||||
|
|
||||||
|
g_slist_foreach (provider->gsm_mcc_mnc, (GFunc) mcc_mnc_free, NULL);
|
||||||
|
g_slist_free (provider->gsm_mcc_mnc);
|
||||||
|
|
||||||
|
g_slist_free (provider->cdma_sid);
|
||||||
|
|
||||||
|
g_slice_free (ShellMobileProvider, provider);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
GType
|
||||||
|
shell_mobile_provider_get_type (void)
|
||||||
|
{
|
||||||
|
static GType type = 0;
|
||||||
|
|
||||||
|
if (G_UNLIKELY (type == 0)) {
|
||||||
|
type = g_boxed_type_register_static ("ShellMobileProvider",
|
||||||
|
(GBoxedCopyFunc) shell_mobile_provider_ref,
|
||||||
|
(GBoxedFreeFunc) shell_mobile_provider_unref);
|
||||||
|
}
|
||||||
|
return type;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
provider_list_free (gpointer data)
|
||||||
|
{
|
||||||
|
GSList *list = (GSList *) data;
|
||||||
|
|
||||||
|
while (list) {
|
||||||
|
shell_mobile_provider_unref ((ShellMobileProvider *) list->data);
|
||||||
|
list = g_slist_delete_link (list, list);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
parser_toplevel_start (MobileParser *parser,
|
||||||
|
const char *name,
|
||||||
|
const char **attribute_names,
|
||||||
|
const char **attribute_values)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if (!strcmp (name, "serviceproviders")) {
|
||||||
|
for (i = 0; attribute_names && attribute_names[i]; i++) {
|
||||||
|
if (!strcmp (attribute_names[i], "format")) {
|
||||||
|
if (strcmp (attribute_values[i], "2.0")) {
|
||||||
|
g_warning ("%s: mobile broadband provider database format '%s'"
|
||||||
|
" not supported.", __func__, attribute_values[i]);
|
||||||
|
parser->state = PARSER_ERROR;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (!strcmp (name, "country")) {
|
||||||
|
for (i = 0; attribute_names && attribute_names[i]; i++) {
|
||||||
|
if (!strcmp (attribute_names[i], "code")) {
|
||||||
|
char *country_code;
|
||||||
|
char *country;
|
||||||
|
|
||||||
|
country_code = g_ascii_strup (attribute_values[i], -1);
|
||||||
|
country = g_hash_table_lookup (parser->country_codes, country_code);
|
||||||
|
if (country) {
|
||||||
|
parser->current_country = g_strdup (country);
|
||||||
|
g_free (country_code);
|
||||||
|
} else
|
||||||
|
parser->current_country = country_code;
|
||||||
|
|
||||||
|
parser->state = PARSER_COUNTRY;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
parser_country_start (MobileParser *parser,
|
||||||
|
const char *name,
|
||||||
|
const char **attribute_names,
|
||||||
|
const char **attribute_values)
|
||||||
|
{
|
||||||
|
if (!strcmp (name, "provider")) {
|
||||||
|
parser->state = PARSER_PROVIDER;
|
||||||
|
parser->current_provider = provider_new ();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
parser_provider_start (MobileParser *parser,
|
||||||
|
const char *name,
|
||||||
|
const char **attribute_names,
|
||||||
|
const char **attribute_values)
|
||||||
|
{
|
||||||
|
if (!strcmp (name, "gsm"))
|
||||||
|
parser->state = PARSER_METHOD_GSM;
|
||||||
|
else if (!strcmp (name, "cdma")) {
|
||||||
|
parser->state = PARSER_METHOD_CDMA;
|
||||||
|
parser->current_method = access_method_new ();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
parser_gsm_start (MobileParser *parser,
|
||||||
|
const char *name,
|
||||||
|
const char **attribute_names,
|
||||||
|
const char **attribute_values)
|
||||||
|
{
|
||||||
|
if (!strcmp (name, "network-id")) {
|
||||||
|
const char *mcc = NULL, *mnc = NULL;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (i = 0; attribute_names && attribute_names[i]; i++) {
|
||||||
|
if (!strcmp (attribute_names[i], "mcc"))
|
||||||
|
mcc = attribute_values[i];
|
||||||
|
else if (!strcmp (attribute_names[i], "mnc"))
|
||||||
|
mnc = attribute_values[i];
|
||||||
|
|
||||||
|
if (mcc && strlen (mcc) && mnc && strlen (mnc)) {
|
||||||
|
parser->current_provider->gsm_mcc_mnc = g_slist_prepend (parser->current_provider->gsm_mcc_mnc,
|
||||||
|
mcc_mnc_new (mcc, mnc));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (!strcmp (name, "apn")) {
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (i = 0; attribute_names && attribute_names[i]; i++) {
|
||||||
|
if (!strcmp (attribute_names[i], "value")) {
|
||||||
|
|
||||||
|
parser->state = PARSER_METHOD_GSM_APN;
|
||||||
|
parser->current_method = access_method_new ();
|
||||||
|
parser->current_method->gsm_apn = g_strstrip (g_strdup (attribute_values[i]));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
parser_cdma_start (MobileParser *parser,
|
||||||
|
const char *name,
|
||||||
|
const char **attribute_names,
|
||||||
|
const char **attribute_values)
|
||||||
|
{
|
||||||
|
if (!strcmp (name, "sid")) {
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (i = 0; attribute_names && attribute_names[i]; i++) {
|
||||||
|
if (!strcmp (attribute_names[i], "value")) {
|
||||||
|
unsigned long tmp;
|
||||||
|
|
||||||
|
errno = 0;
|
||||||
|
tmp = strtoul (attribute_values[i], NULL, 10);
|
||||||
|
if (errno == 0 && tmp > 0)
|
||||||
|
parser->current_provider->cdma_sid = g_slist_prepend (parser->current_provider->cdma_sid,
|
||||||
|
GUINT_TO_POINTER ((guint32) tmp));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
mobile_parser_start_element (GMarkupParseContext *context,
|
||||||
|
const gchar *element_name,
|
||||||
|
const gchar **attribute_names,
|
||||||
|
const gchar **attribute_values,
|
||||||
|
gpointer data,
|
||||||
|
GError **error)
|
||||||
|
{
|
||||||
|
MobileParser *parser = (MobileParser *) data;
|
||||||
|
|
||||||
|
if (parser->text_buffer) {
|
||||||
|
g_free (parser->text_buffer);
|
||||||
|
parser->text_buffer = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (parser->state) {
|
||||||
|
case PARSER_TOPLEVEL:
|
||||||
|
parser_toplevel_start (parser, element_name, attribute_names, attribute_values);
|
||||||
|
break;
|
||||||
|
case PARSER_COUNTRY:
|
||||||
|
parser_country_start (parser, element_name, attribute_names, attribute_values);
|
||||||
|
break;
|
||||||
|
case PARSER_PROVIDER:
|
||||||
|
parser_provider_start (parser, element_name, attribute_names, attribute_values);
|
||||||
|
break;
|
||||||
|
case PARSER_METHOD_GSM:
|
||||||
|
parser_gsm_start (parser, element_name, attribute_names, attribute_values);
|
||||||
|
break;
|
||||||
|
case PARSER_METHOD_CDMA:
|
||||||
|
parser_cdma_start (parser, element_name, attribute_names, attribute_values);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
parser_country_end (MobileParser *parser,
|
||||||
|
const char *name)
|
||||||
|
{
|
||||||
|
if (!strcmp (name, "country")) {
|
||||||
|
g_hash_table_insert (parser->table, parser->current_country, parser->current_providers);
|
||||||
|
parser->current_country = NULL;
|
||||||
|
parser->current_providers = NULL;
|
||||||
|
parser->text_buffer = NULL;
|
||||||
|
parser->state = PARSER_TOPLEVEL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
parser_provider_end (MobileParser *parser,
|
||||||
|
const char *name)
|
||||||
|
{
|
||||||
|
if (!strcmp (name, "name")) {
|
||||||
|
if (!parser->current_provider->name) {
|
||||||
|
/* Use the first one. */
|
||||||
|
parser->current_provider->name = parser->text_buffer;
|
||||||
|
parser->text_buffer = NULL;
|
||||||
|
}
|
||||||
|
} else if (!strcmp (name, "provider")) {
|
||||||
|
parser->current_provider->methods = g_slist_reverse (parser->current_provider->methods);
|
||||||
|
|
||||||
|
parser->current_provider->gsm_mcc_mnc = g_slist_reverse (parser->current_provider->gsm_mcc_mnc);
|
||||||
|
parser->current_provider->cdma_sid = g_slist_reverse (parser->current_provider->cdma_sid);
|
||||||
|
|
||||||
|
parser->current_providers = g_slist_prepend (parser->current_providers, parser->current_provider);
|
||||||
|
parser->current_provider = NULL;
|
||||||
|
parser->text_buffer = NULL;
|
||||||
|
parser->state = PARSER_COUNTRY;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
parser_gsm_end (MobileParser *parser,
|
||||||
|
const char *name)
|
||||||
|
{
|
||||||
|
if (!strcmp (name, "gsm")) {
|
||||||
|
parser->text_buffer = NULL;
|
||||||
|
parser->state = PARSER_PROVIDER;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
parser_gsm_apn_end (MobileParser *parser,
|
||||||
|
const char *name)
|
||||||
|
{
|
||||||
|
if (!strcmp (name, "name")) {
|
||||||
|
if (!parser->current_method->name) {
|
||||||
|
/* Use the first one. */
|
||||||
|
parser->current_method->name = parser->text_buffer;
|
||||||
|
parser->text_buffer = NULL;
|
||||||
|
}
|
||||||
|
} else if (!strcmp (name, "username")) {
|
||||||
|
parser->current_method->username = parser->text_buffer;
|
||||||
|
parser->text_buffer = NULL;
|
||||||
|
} else if (!strcmp (name, "password")) {
|
||||||
|
parser->current_method->password = parser->text_buffer;
|
||||||
|
parser->text_buffer = NULL;
|
||||||
|
} else if (!strcmp (name, "dns")) {
|
||||||
|
parser->current_method->dns = g_slist_prepend (parser->current_method->dns, parser->text_buffer);
|
||||||
|
parser->text_buffer = NULL;
|
||||||
|
} else if (!strcmp (name, "gateway")) {
|
||||||
|
parser->current_method->gateway = parser->text_buffer;
|
||||||
|
parser->text_buffer = NULL;
|
||||||
|
} else if (!strcmp (name, "apn")) {
|
||||||
|
parser->current_method->type = SHELL_MOBILE_ACCESS_METHOD_TYPE_GSM;
|
||||||
|
parser->current_method->dns = g_slist_reverse (parser->current_method->dns);
|
||||||
|
|
||||||
|
if (!parser->current_method->name)
|
||||||
|
parser->current_method->name = g_strdup (_("Default"));
|
||||||
|
|
||||||
|
parser->current_provider->methods = g_slist_prepend (parser->current_provider->methods,
|
||||||
|
parser->current_method);
|
||||||
|
parser->current_method = NULL;
|
||||||
|
parser->text_buffer = NULL;
|
||||||
|
parser->state = PARSER_METHOD_GSM;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
parser_cdma_end (MobileParser *parser,
|
||||||
|
const char *name)
|
||||||
|
{
|
||||||
|
if (!strcmp (name, "username")) {
|
||||||
|
parser->current_method->username = parser->text_buffer;
|
||||||
|
parser->text_buffer = NULL;
|
||||||
|
} else if (!strcmp (name, "password")) {
|
||||||
|
parser->current_method->password = parser->text_buffer;
|
||||||
|
parser->text_buffer = NULL;
|
||||||
|
} else if (!strcmp (name, "dns")) {
|
||||||
|
parser->current_method->dns = g_slist_prepend (parser->current_method->dns, parser->text_buffer);
|
||||||
|
parser->text_buffer = NULL;
|
||||||
|
} else if (!strcmp (name, "gateway")) {
|
||||||
|
parser->current_method->gateway = parser->text_buffer;
|
||||||
|
parser->text_buffer = NULL;
|
||||||
|
} else if (!strcmp (name, "cdma")) {
|
||||||
|
parser->current_method->type = SHELL_MOBILE_ACCESS_METHOD_TYPE_CDMA;
|
||||||
|
parser->current_method->dns = g_slist_reverse (parser->current_method->dns);
|
||||||
|
|
||||||
|
if (!parser->current_method->name)
|
||||||
|
parser->current_method->name = g_strdup (parser->current_provider->name);
|
||||||
|
|
||||||
|
parser->current_provider->methods = g_slist_prepend (parser->current_provider->methods,
|
||||||
|
parser->current_method);
|
||||||
|
parser->current_method = NULL;
|
||||||
|
parser->text_buffer = NULL;
|
||||||
|
parser->state = PARSER_PROVIDER;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
mobile_parser_end_element (GMarkupParseContext *context,
|
||||||
|
const gchar *element_name,
|
||||||
|
gpointer data,
|
||||||
|
GError **error)
|
||||||
|
{
|
||||||
|
MobileParser *parser = (MobileParser *) data;
|
||||||
|
|
||||||
|
switch (parser->state) {
|
||||||
|
case PARSER_COUNTRY:
|
||||||
|
parser_country_end (parser, element_name);
|
||||||
|
break;
|
||||||
|
case PARSER_PROVIDER:
|
||||||
|
parser_provider_end (parser, element_name);
|
||||||
|
break;
|
||||||
|
case PARSER_METHOD_GSM:
|
||||||
|
parser_gsm_end (parser, element_name);
|
||||||
|
break;
|
||||||
|
case PARSER_METHOD_GSM_APN:
|
||||||
|
parser_gsm_apn_end (parser, element_name);
|
||||||
|
break;
|
||||||
|
case PARSER_METHOD_CDMA:
|
||||||
|
parser_cdma_end (parser, element_name);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
mobile_parser_characters (GMarkupParseContext *context,
|
||||||
|
const gchar *text,
|
||||||
|
gsize text_len,
|
||||||
|
gpointer data,
|
||||||
|
GError **error)
|
||||||
|
{
|
||||||
|
MobileParser *parser = (MobileParser *) data;
|
||||||
|
|
||||||
|
g_free (parser->text_buffer);
|
||||||
|
parser->text_buffer = g_strdup (text);
|
||||||
|
}
|
||||||
|
|
||||||
|
static const GMarkupParser mobile_parser = {
|
||||||
|
mobile_parser_start_element,
|
||||||
|
mobile_parser_end_element,
|
||||||
|
mobile_parser_characters,
|
||||||
|
NULL, /* passthrough */
|
||||||
|
NULL /* error */
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* shell_mobile_providers_parse:
|
||||||
|
* @out_ccs: (out) (allow-none): (element-type utf8 utf8): a #GHashTable containing
|
||||||
|
* country codes
|
||||||
|
*
|
||||||
|
* Returns: (element-type utf8 GList<Shell.MobileProvider>) (transfer container): a
|
||||||
|
* hash table where keys are country names 'char *', values are a 'GSList *'
|
||||||
|
* of 'ShellMobileProvider *'. Everything is destroyed with g_hash_table_destroy ().
|
||||||
|
*/
|
||||||
|
GHashTable *
|
||||||
|
shell_mobile_providers_parse (GHashTable **out_ccs)
|
||||||
|
{
|
||||||
|
GMarkupParseContext *ctx;
|
||||||
|
GIOChannel *channel;
|
||||||
|
MobileParser parser;
|
||||||
|
GError *error = NULL;
|
||||||
|
char buffer[4096];
|
||||||
|
GIOStatus status;
|
||||||
|
gsize len = 0;
|
||||||
|
|
||||||
|
memset (&parser, 0, sizeof (MobileParser));
|
||||||
|
|
||||||
|
parser.country_codes = read_country_codes ();
|
||||||
|
if (!parser.country_codes)
|
||||||
|
goto out;
|
||||||
|
|
||||||
|
channel = g_io_channel_new_file (MOBILE_BROADBAND_PROVIDER_INFO, "r", &error);
|
||||||
|
if (!channel) {
|
||||||
|
if (error) {
|
||||||
|
g_warning ("Could not read " MOBILE_BROADBAND_PROVIDER_INFO ": %s", error->message);
|
||||||
|
g_error_free (error);
|
||||||
|
} else
|
||||||
|
g_warning ("Could not read " MOBILE_BROADBAND_PROVIDER_INFO ": Unknown error");
|
||||||
|
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
|
parser.table = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, provider_list_free);
|
||||||
|
parser.state = PARSER_TOPLEVEL;
|
||||||
|
|
||||||
|
ctx = g_markup_parse_context_new (&mobile_parser, 0, &parser, NULL);
|
||||||
|
|
||||||
|
status = G_IO_STATUS_NORMAL;
|
||||||
|
while (status == G_IO_STATUS_NORMAL) {
|
||||||
|
status = g_io_channel_read_chars (channel, buffer, sizeof (buffer), &len, &error);
|
||||||
|
|
||||||
|
switch (status) {
|
||||||
|
case G_IO_STATUS_NORMAL:
|
||||||
|
if (!g_markup_parse_context_parse (ctx, buffer, len, &error)) {
|
||||||
|
status = G_IO_STATUS_ERROR;
|
||||||
|
g_warning ("Error while parsing XML: %s", error->message);
|
||||||
|
g_error_free (error);;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case G_IO_STATUS_EOF:
|
||||||
|
break;
|
||||||
|
case G_IO_STATUS_ERROR:
|
||||||
|
g_warning ("Error while reading: %s", error->message);
|
||||||
|
g_error_free (error);
|
||||||
|
break;
|
||||||
|
case G_IO_STATUS_AGAIN:
|
||||||
|
/* FIXME: Try again a few times, but really, it never happes, right? */
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
g_io_channel_unref (channel);
|
||||||
|
g_markup_parse_context_free (ctx);
|
||||||
|
|
||||||
|
if (parser.current_provider) {
|
||||||
|
g_warning ("pending current provider");
|
||||||
|
shell_mobile_provider_unref (parser.current_provider);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (parser.current_providers) {
|
||||||
|
g_warning ("pending current providers");
|
||||||
|
provider_list_free (parser.current_providers);
|
||||||
|
}
|
||||||
|
|
||||||
|
g_free (parser.current_country);
|
||||||
|
g_free (parser.text_buffer);
|
||||||
|
|
||||||
|
out:
|
||||||
|
if (parser.country_codes) {
|
||||||
|
if (out_ccs)
|
||||||
|
*out_ccs = parser.country_codes;
|
||||||
|
else
|
||||||
|
g_hash_table_destroy (parser.country_codes);
|
||||||
|
}
|
||||||
|
|
||||||
|
return parser.table;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
dump_generic (ShellMobileAccessMethod *method)
|
||||||
|
{
|
||||||
|
GSList *iter;
|
||||||
|
GString *dns;
|
||||||
|
|
||||||
|
g_print (" username: %s\n", method->username ? method->username : "");
|
||||||
|
g_print (" password: %s\n", method->password ? method->password : "");
|
||||||
|
|
||||||
|
dns = g_string_new (NULL);
|
||||||
|
for (iter = method->dns; iter; iter = g_slist_next (iter))
|
||||||
|
g_string_append_printf (dns, "%s%s", dns->len ? ", " : "", (char *) iter->data);
|
||||||
|
g_print (" dns : %s\n", dns->str);
|
||||||
|
g_string_free (dns, TRUE);
|
||||||
|
|
||||||
|
g_print (" gateway : %s\n", method->gateway ? method->gateway : "");
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
dump_cdma (ShellMobileAccessMethod *method)
|
||||||
|
{
|
||||||
|
g_print (" CDMA: %s\n", method->name);
|
||||||
|
|
||||||
|
dump_generic (method);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
dump_gsm (ShellMobileAccessMethod *method)
|
||||||
|
{
|
||||||
|
g_print (" APN: %s (%s)\n", method->name, method->gsm_apn);
|
||||||
|
|
||||||
|
dump_generic (method);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
dump_country (gpointer key, gpointer value, gpointer user_data)
|
||||||
|
{
|
||||||
|
GSList *citer, *miter;
|
||||||
|
|
||||||
|
for (citer = value; citer; citer = g_slist_next (citer)) {
|
||||||
|
ShellMobileProvider *provider = citer->data;
|
||||||
|
|
||||||
|
g_print ("Provider: %s (%s)\n", provider->name, (const char *) key);
|
||||||
|
for (miter = provider->methods; miter; miter = g_slist_next (miter)) {
|
||||||
|
ShellMobileAccessMethod *method = miter->data;
|
||||||
|
GSList *liter;
|
||||||
|
|
||||||
|
|
||||||
|
for (liter = provider->gsm_mcc_mnc; liter; liter = g_slist_next (liter)) {
|
||||||
|
ShellGsmMccMnc *m = liter->data;
|
||||||
|
g_print (" MCC/MNC: %s-%s\n", m->mcc, m->mnc);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (liter = provider->cdma_sid; liter; liter = g_slist_next (liter))
|
||||||
|
g_print (" SID: %d\n", GPOINTER_TO_UINT (liter->data));
|
||||||
|
|
||||||
|
switch (method->type) {
|
||||||
|
case SHELL_MOBILE_ACCESS_METHOD_TYPE_CDMA:
|
||||||
|
dump_cdma (method);
|
||||||
|
break;
|
||||||
|
case SHELL_MOBILE_ACCESS_METHOD_TYPE_GSM:
|
||||||
|
dump_gsm (method);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
g_print ("\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
shell_mobile_providers_dump (GHashTable *providers)
|
||||||
|
{
|
||||||
|
g_return_if_fail (providers != NULL);
|
||||||
|
g_hash_table_foreach (providers, dump_country, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* All the following don't exist in nm-applet, because C doesn't need
|
||||||
|
those. They're only needed for the introspection annotations
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* shell_mobile_provider_get_gsm_mcc_mnc:
|
||||||
|
* @provider: a #ShellMobileProvider
|
||||||
|
*
|
||||||
|
* Returns: (element-type Shell.GsmMccMnc) (transfer none): the
|
||||||
|
* list of #ShellGsmMccMnc this provider exposes
|
||||||
|
*/
|
||||||
|
GSList *
|
||||||
|
shell_mobile_provider_get_gsm_mcc_mnc (ShellMobileProvider *provider)
|
||||||
|
{
|
||||||
|
return provider->gsm_mcc_mnc;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* shell_mobile_provider_get_cdma_sid:
|
||||||
|
* @provider: a #ShellMobileProvider
|
||||||
|
*
|
||||||
|
* Returns: (element-type guint32) (transfer none): the
|
||||||
|
* list of CDMA sids this provider exposes
|
||||||
|
*/
|
||||||
|
GSList *
|
||||||
|
shell_mobile_provider_get_cdma_sid (ShellMobileProvider *provider)
|
||||||
|
{
|
||||||
|
return provider->cdma_sid;
|
||||||
|
}
|
96
src/shell-mobile-providers.h
Normal file
96
src/shell-mobile-providers.h
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
||||||
|
/*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with this library; if not, write to the
|
||||||
|
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||||
|
* Boston, MA 02110-1301 USA.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2009 Novell, Inc.
|
||||||
|
* Author: Tambet Ingo (tambet@gmail.com).
|
||||||
|
*
|
||||||
|
* Copyright (C) 2009 - 2010 Red Hat, Inc.
|
||||||
|
*
|
||||||
|
* Ported to GNOME Shell by Giovanni Campagna <scampa.giovanni@gmail.com>
|
||||||
|
* Porting consisted only in replacing nmn with shell, to be compatible with
|
||||||
|
* GObject Introspection namespacing
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef SHELL_MOBILE_PROVIDERS_H
|
||||||
|
#define SHELL_MOBILE_PROVIDERS_H
|
||||||
|
|
||||||
|
#include <glib.h>
|
||||||
|
#include <glib-object.h>
|
||||||
|
|
||||||
|
#define SHELL_TYPE_MOBILE_PROVIDER (shell_mobile_provider_get_type ())
|
||||||
|
#define SHELL_TYPE_MOBILE_ACCESS_METHOD (shell_mobile_access_method_get_type ())
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
SHELL_MOBILE_ACCESS_METHOD_TYPE_UNKNOWN = 0,
|
||||||
|
SHELL_MOBILE_ACCESS_METHOD_TYPE_GSM,
|
||||||
|
SHELL_MOBILE_ACCESS_METHOD_TYPE_CDMA
|
||||||
|
} ShellMobileAccessMethodType;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
char *mcc;
|
||||||
|
char *mnc;
|
||||||
|
} ShellGsmMccMnc;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
char *name;
|
||||||
|
/* maps lang (char *) -> name (char *) */
|
||||||
|
GHashTable *lcl_names;
|
||||||
|
|
||||||
|
char *username;
|
||||||
|
char *password;
|
||||||
|
char *gateway;
|
||||||
|
GSList *dns; /* GSList of 'char *' */
|
||||||
|
|
||||||
|
/* Only used with SHELL_PROVIDER_TYPE_GSM */
|
||||||
|
char *gsm_apn;
|
||||||
|
|
||||||
|
ShellMobileAccessMethodType type;
|
||||||
|
|
||||||
|
gint refs;
|
||||||
|
} ShellMobileAccessMethod;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
char *name;
|
||||||
|
/* maps lang (char *) -> name (char *) */
|
||||||
|
GHashTable *lcl_names;
|
||||||
|
|
||||||
|
GSList *methods; /* GSList of ShellMobileAccessMethod */
|
||||||
|
|
||||||
|
GSList *gsm_mcc_mnc; /* GSList of ShellGsmMccMnc */
|
||||||
|
GSList *cdma_sid; /* GSList of guint32 */
|
||||||
|
|
||||||
|
gint refs;
|
||||||
|
} ShellMobileProvider;
|
||||||
|
|
||||||
|
|
||||||
|
GType shell_gsm_mcc_mnc_get_type (void); /* added in porting */
|
||||||
|
GType shell_mobile_provider_get_type (void);
|
||||||
|
GType shell_mobile_access_method_get_type (void);
|
||||||
|
|
||||||
|
ShellMobileProvider *shell_mobile_provider_ref (ShellMobileProvider *provider);
|
||||||
|
void shell_mobile_provider_unref (ShellMobileProvider *provider);
|
||||||
|
GSList * shell_mobile_provider_get_gsm_mcc_mnc (ShellMobileProvider *provider);
|
||||||
|
GSList * shell_mobile_provider_get_cdma_sid (ShellMobileProvider *provider);
|
||||||
|
|
||||||
|
ShellMobileAccessMethod *shell_mobile_access_method_ref (ShellMobileAccessMethod *method);
|
||||||
|
void shell_mobile_access_method_unref (ShellMobileAccessMethod *method);
|
||||||
|
|
||||||
|
GHashTable *shell_mobile_providers_parse (GHashTable **out_ccs);
|
||||||
|
|
||||||
|
void shell_mobile_providers_dump (GHashTable *providers);
|
||||||
|
|
||||||
|
#endif /* SHELL_MOBILE_PROVIDERS_H */
|
@ -165,3 +165,76 @@ shell_tray_icon_new (ShellEmbeddedWindow *window)
|
|||||||
"window", window,
|
"window", window,
|
||||||
NULL);
|
NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* shell_tray_icon_click:
|
||||||
|
* @icon: a #ShellTrayIcon
|
||||||
|
* @event: the #ClutterEvent triggering the fake click
|
||||||
|
*
|
||||||
|
* Fakes a press and release on @icon. @event must be a
|
||||||
|
* %CLUTTER_BUTTON_RELEASE event. Its relevant details will be passed
|
||||||
|
* on to the icon, but its coordinates will be ignored; the click is
|
||||||
|
* always made on the center of @icon.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
shell_tray_icon_click (ShellTrayIcon *icon,
|
||||||
|
ClutterEvent *event)
|
||||||
|
{
|
||||||
|
XButtonEvent xbevent;
|
||||||
|
XCrossingEvent xcevent;
|
||||||
|
GdkWindow *remote_window;
|
||||||
|
GdkScreen *screen;
|
||||||
|
int x_root, y_root;
|
||||||
|
Display *xdisplay;
|
||||||
|
Window xwindow, xrootwindow;
|
||||||
|
|
||||||
|
g_return_if_fail (clutter_event_type (event) == CLUTTER_BUTTON_RELEASE);
|
||||||
|
|
||||||
|
gdk_error_trap_push ();
|
||||||
|
|
||||||
|
remote_window = gtk_socket_get_plug_window (GTK_SOCKET (icon->priv->socket));
|
||||||
|
xwindow = GDK_WINDOW_XID (remote_window);
|
||||||
|
xdisplay = GDK_WINDOW_XDISPLAY (remote_window);
|
||||||
|
screen = gdk_window_get_screen (remote_window);
|
||||||
|
xrootwindow = GDK_WINDOW_XID (gdk_screen_get_root_window (screen));
|
||||||
|
gdk_window_get_origin (remote_window, &x_root, &y_root);
|
||||||
|
|
||||||
|
/* First make the icon believe the pointer is inside it */
|
||||||
|
xcevent.type = EnterNotify;
|
||||||
|
xcevent.window = xwindow;
|
||||||
|
xcevent.root = xrootwindow;
|
||||||
|
xcevent.subwindow = None;
|
||||||
|
xcevent.time = clutter_event_get_time (event);
|
||||||
|
xcevent.x = gdk_window_get_width (remote_window) / 2;
|
||||||
|
xcevent.y = gdk_window_get_height (remote_window) / 2;
|
||||||
|
xcevent.x_root = x_root + xcevent.x;
|
||||||
|
xcevent.y_root = y_root + xcevent.y;
|
||||||
|
xcevent.mode = NotifyNormal;
|
||||||
|
xcevent.detail = NotifyNonlinear;
|
||||||
|
xcevent.same_screen = True;
|
||||||
|
XSendEvent (xdisplay, xwindow, False, 0, (XEvent *)&xcevent);
|
||||||
|
|
||||||
|
/* Now do the click */
|
||||||
|
xbevent.type = ButtonPress;
|
||||||
|
xbevent.window = xwindow;
|
||||||
|
xbevent.root = xrootwindow;
|
||||||
|
xbevent.subwindow = None;
|
||||||
|
xbevent.time = xcevent.time;
|
||||||
|
xbevent.x = xcevent.x;
|
||||||
|
xbevent.y = xcevent.y;
|
||||||
|
xbevent.x_root = xcevent.x_root;
|
||||||
|
xbevent.y_root = xcevent.y_root;
|
||||||
|
xbevent.state = clutter_event_get_state (event);
|
||||||
|
xbevent.button = clutter_event_get_button (event);
|
||||||
|
xbevent.same_screen = True;
|
||||||
|
XSendEvent (xdisplay, xwindow, False, 0, (XEvent *)&xbevent);
|
||||||
|
|
||||||
|
xbevent.type = ButtonRelease;
|
||||||
|
XSendEvent (xdisplay, xwindow, False, 0, (XEvent *)&xbevent);
|
||||||
|
|
||||||
|
/* And move the pointer back out */
|
||||||
|
xcevent.type = LeaveNotify;
|
||||||
|
XSendEvent (xdisplay, xwindow, False, 0, (XEvent *)&xcevent);
|
||||||
|
|
||||||
|
gdk_error_trap_pop_ignored ();
|
||||||
|
}
|
||||||
|
@ -31,4 +31,7 @@ struct _ShellTrayIconClass
|
|||||||
GType shell_tray_icon_get_type (void) G_GNUC_CONST;
|
GType shell_tray_icon_get_type (void) G_GNUC_CONST;
|
||||||
ClutterActor *shell_tray_icon_new (ShellEmbeddedWindow *window);
|
ClutterActor *shell_tray_icon_new (ShellEmbeddedWindow *window);
|
||||||
|
|
||||||
|
void shell_tray_icon_click (ShellTrayIcon *icon,
|
||||||
|
ClutterEvent *event);
|
||||||
|
|
||||||
#endif /* __SHELL_TRAY_ICON_H__ */
|
#endif /* __SHELL_TRAY_ICON_H__ */
|
||||||
|
@ -225,23 +225,6 @@ get_appid_from_window (MetaWindow *window)
|
|||||||
return appid_guess;
|
return appid_guess;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* window_is_tracked:
|
|
||||||
*
|
|
||||||
* We don't attempt to associate override-redirect windows with applications
|
|
||||||
* at all, since there's no reason to do so yet.
|
|
||||||
*
|
|
||||||
* Returns: %TRUE iff we want to scan this window for application association
|
|
||||||
*/
|
|
||||||
static gboolean
|
|
||||||
window_is_tracked (MetaWindow *window)
|
|
||||||
{
|
|
||||||
if (meta_window_is_override_redirect (window))
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* shell_window_tracker_is_window_interesting:
|
* shell_window_tracker_is_window_interesting:
|
||||||
*
|
*
|
||||||
@ -529,7 +512,7 @@ track_window (ShellWindowTracker *self,
|
|||||||
{
|
{
|
||||||
ShellApp *app;
|
ShellApp *app;
|
||||||
|
|
||||||
if (!window_is_tracked (window))
|
if (!shell_window_tracker_is_window_interesting (window))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
app = get_app_for_window (self, window);
|
app = get_app_for_window (self, window);
|
||||||
@ -539,10 +522,6 @@ track_window (ShellWindowTracker *self,
|
|||||||
/* At this point we've stored the association from window -> application */
|
/* At this point we've stored the association from window -> application */
|
||||||
g_hash_table_insert (self->window_to_app, window, app);
|
g_hash_table_insert (self->window_to_app, window, app);
|
||||||
|
|
||||||
/* However, only put interesting windows in the window list for an app. */
|
|
||||||
if (!shell_window_tracker_is_window_interesting (window))
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (shell_app_is_transient (app))
|
if (shell_app_is_transient (app))
|
||||||
{
|
{
|
||||||
/* For a transient application, it's possible one of our title regexps
|
/* For a transient application, it's possible one of our title regexps
|
||||||
|
@ -232,7 +232,10 @@ st_button_key_release (ClutterActor *actor,
|
|||||||
if (event->keyval == CLUTTER_KEY_space ||
|
if (event->keyval == CLUTTER_KEY_space ||
|
||||||
event->keyval == CLUTTER_KEY_Return)
|
event->keyval == CLUTTER_KEY_Return)
|
||||||
{
|
{
|
||||||
st_button_release (button, ST_BUTTON_ONE, 1);
|
gboolean is_click;
|
||||||
|
|
||||||
|
is_click = (button->priv->pressed & ST_BUTTON_ONE);
|
||||||
|
st_button_release (button, ST_BUTTON_ONE, is_click ? 1 : 0);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -445,33 +445,35 @@ filter_by_position (GList *children,
|
|||||||
clutter_actor_get_allocation_box (child, &cbox);
|
clutter_actor_get_allocation_box (child, &cbox);
|
||||||
|
|
||||||
/* Filter out children if they are in the wrong direction from
|
/* Filter out children if they are in the wrong direction from
|
||||||
* @rbox, or if they don't overlap it.
|
* @rbox, or if they don't overlap it. To account for floating-
|
||||||
|
* point imprecision, an actor is "down" (etc.) from an another
|
||||||
|
* actor even if it overlaps it by up to 0.1 pixels.
|
||||||
*/
|
*/
|
||||||
switch (direction)
|
switch (direction)
|
||||||
{
|
{
|
||||||
case GTK_DIR_UP:
|
case GTK_DIR_UP:
|
||||||
if (cbox.y2 > rbox->y1)
|
if (cbox.y2 > rbox->y1 + 0.1)
|
||||||
continue;
|
continue;
|
||||||
if (cbox.x1 >= rbox->x2 || cbox.x2 <= rbox->x1)
|
if (cbox.x1 >= rbox->x2 || cbox.x2 <= rbox->x1)
|
||||||
continue;
|
continue;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case GTK_DIR_DOWN:
|
case GTK_DIR_DOWN:
|
||||||
if (cbox.y1 < rbox->y2)
|
if (cbox.y1 < rbox->y2 - 0.1)
|
||||||
continue;
|
continue;
|
||||||
if (cbox.x1 >= rbox->x2 || cbox.x2 <= rbox->x1)
|
if (cbox.x1 >= rbox->x2 || cbox.x2 <= rbox->x1)
|
||||||
continue;
|
continue;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case GTK_DIR_LEFT:
|
case GTK_DIR_LEFT:
|
||||||
if (cbox.x2 > rbox->x1)
|
if (cbox.x2 > rbox->x1 + 0.1)
|
||||||
continue;
|
continue;
|
||||||
if (cbox.y1 >= rbox->y2 || cbox.y2 <= rbox->y1)
|
if (cbox.y1 >= rbox->y2 || cbox.y2 <= rbox->y1)
|
||||||
continue;
|
continue;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case GTK_DIR_RIGHT:
|
case GTK_DIR_RIGHT:
|
||||||
if (cbox.x1 < rbox->x2)
|
if (cbox.x1 < rbox->x2 - 0.1)
|
||||||
continue;
|
continue;
|
||||||
if (cbox.y1 >= rbox->y2 || cbox.y2 <= rbox->y1)
|
if (cbox.y1 >= rbox->y2 || cbox.y2 <= rbox->y1)
|
||||||
continue;
|
continue;
|
||||||
|
@ -243,6 +243,7 @@ st_label_paint (ClutterActor *actor)
|
|||||||
priv->text_shadow_material = material;
|
priv->text_shadow_material = material;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (priv->text_shadow_material != COGL_INVALID_HANDLE)
|
||||||
_st_paint_shadow_with_opacity (shadow_spec,
|
_st_paint_shadow_with_opacity (shadow_spec,
|
||||||
priv->text_shadow_material,
|
priv->text_shadow_material,
|
||||||
&allocation,
|
&allocation,
|
||||||
|
@ -435,11 +435,12 @@ blur_pixels (guchar *pixels_in,
|
|||||||
guchar *pixels_out;
|
guchar *pixels_out;
|
||||||
float sigma;
|
float sigma;
|
||||||
|
|
||||||
/* we use an approximation of the sigma - blur radius relationship used
|
/* The CSS specification defines (or will define) the blur radius as twice
|
||||||
in Firefox for doing SVG blurs; see
|
* the Gaussian standard deviation. See:
|
||||||
http://mxr.mozilla.org/mozilla-central/source/gfx/thebes/src/gfxBlur.cpp#280
|
*
|
||||||
|
* http://lists.w3.org/Archives/Public/www-style/2010Sep/0002.html
|
||||||
*/
|
*/
|
||||||
sigma = blur / 1.9;
|
sigma = blur / 2.;
|
||||||
|
|
||||||
if ((guint) blur == 0)
|
if ((guint) blur == 0)
|
||||||
{
|
{
|
||||||
@ -604,20 +605,30 @@ _st_create_shadow_material_from_actor (StShadow *shadow_spec,
|
|||||||
{
|
{
|
||||||
CoglHandle buffer, offscreen;
|
CoglHandle buffer, offscreen;
|
||||||
ClutterActorBox box;
|
ClutterActorBox box;
|
||||||
|
CoglColor clear_color;
|
||||||
float width, height;
|
float width, height;
|
||||||
|
|
||||||
clutter_actor_get_allocation_box (actor, &box);
|
clutter_actor_get_allocation_box (actor, &box);
|
||||||
clutter_actor_box_get_size (&box, &width, &height);
|
clutter_actor_box_get_size (&box, &width, &height);
|
||||||
|
|
||||||
|
if (width == 0 || height == 0)
|
||||||
|
return COGL_INVALID_HANDLE;
|
||||||
|
|
||||||
buffer = cogl_texture_new_with_size (width,
|
buffer = cogl_texture_new_with_size (width,
|
||||||
height,
|
height,
|
||||||
COGL_TEXTURE_NO_SLICING,
|
COGL_TEXTURE_NO_SLICING,
|
||||||
COGL_PIXEL_FORMAT_ANY);
|
COGL_PIXEL_FORMAT_ANY);
|
||||||
|
|
||||||
|
if (buffer == COGL_INVALID_HANDLE)
|
||||||
|
return COGL_INVALID_HANDLE;
|
||||||
|
|
||||||
offscreen = cogl_offscreen_new_to_texture (buffer);
|
offscreen = cogl_offscreen_new_to_texture (buffer);
|
||||||
|
|
||||||
if (offscreen != COGL_INVALID_HANDLE)
|
if (offscreen == COGL_INVALID_HANDLE)
|
||||||
{
|
{
|
||||||
CoglColor clear_color;
|
cogl_handle_unref (buffer);
|
||||||
|
return COGL_INVALID_HANDLE;
|
||||||
|
}
|
||||||
|
|
||||||
cogl_color_set_from_4ub (&clear_color, 0, 0, 0, 0);
|
cogl_color_set_from_4ub (&clear_color, 0, 0, 0, 0);
|
||||||
cogl_push_framebuffer (offscreen);
|
cogl_push_framebuffer (offscreen);
|
||||||
@ -628,7 +639,6 @@ _st_create_shadow_material_from_actor (StShadow *shadow_spec,
|
|||||||
cogl_handle_unref (offscreen);
|
cogl_handle_unref (offscreen);
|
||||||
|
|
||||||
shadow_material = _st_create_shadow_material (shadow_spec, buffer);
|
shadow_material = _st_create_shadow_material (shadow_spec, buffer);
|
||||||
}
|
|
||||||
|
|
||||||
cogl_handle_unref (buffer);
|
cogl_handle_unref (buffer);
|
||||||
}
|
}
|
||||||
|
@ -143,7 +143,7 @@ st_texture_cache_init (StTextureCache *self)
|
|||||||
g_free, cogl_handle_unref);
|
g_free, cogl_handle_unref);
|
||||||
self->priv->outstanding_requests = g_hash_table_new_full (g_str_hash, g_str_equal,
|
self->priv->outstanding_requests = g_hash_table_new_full (g_str_hash, g_str_equal,
|
||||||
g_free, NULL);
|
g_free, NULL);
|
||||||
self->priv->thumbnails = gnome_desktop_thumbnail_factory_new (GNOME_DESKTOP_THUMBNAIL_SIZE_NORMAL);
|
self->priv->thumbnails = gnome_desktop_thumbnail_factory_new (GNOME_DESKTOP_THUMBNAIL_SIZE_LARGE);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -777,6 +777,7 @@ typedef struct {
|
|||||||
char *key;
|
char *key;
|
||||||
char *uri;
|
char *uri;
|
||||||
gboolean thumbnail;
|
gboolean thumbnail;
|
||||||
|
gboolean enforced_square;
|
||||||
char *mimetype;
|
char *mimetype;
|
||||||
GtkRecentInfo *recent_info;
|
GtkRecentInfo *recent_info;
|
||||||
char *checksum;
|
char *checksum;
|
||||||
@ -788,15 +789,47 @@ typedef struct {
|
|||||||
} AsyncTextureLoadData;
|
} AsyncTextureLoadData;
|
||||||
|
|
||||||
static CoglHandle
|
static CoglHandle
|
||||||
pixbuf_to_cogl_handle (GdkPixbuf *pixbuf)
|
pixbuf_to_cogl_handle (GdkPixbuf *pixbuf,
|
||||||
|
gboolean add_padding)
|
||||||
{
|
{
|
||||||
return cogl_texture_new_from_data (gdk_pixbuf_get_width (pixbuf),
|
CoglHandle texture, offscreen;
|
||||||
gdk_pixbuf_get_height (pixbuf),
|
CoglColor clear_color;
|
||||||
|
int width, height;
|
||||||
|
guint size;
|
||||||
|
|
||||||
|
width = gdk_pixbuf_get_width (pixbuf);
|
||||||
|
height = gdk_pixbuf_get_height (pixbuf);
|
||||||
|
size = MAX (width, height);
|
||||||
|
|
||||||
|
if (!add_padding || width == height)
|
||||||
|
return cogl_texture_new_from_data (width,
|
||||||
|
height,
|
||||||
COGL_TEXTURE_NONE,
|
COGL_TEXTURE_NONE,
|
||||||
gdk_pixbuf_get_has_alpha (pixbuf) ? COGL_PIXEL_FORMAT_RGBA_8888 : COGL_PIXEL_FORMAT_RGB_888,
|
gdk_pixbuf_get_has_alpha (pixbuf) ? COGL_PIXEL_FORMAT_RGBA_8888 : COGL_PIXEL_FORMAT_RGB_888,
|
||||||
COGL_PIXEL_FORMAT_ANY,
|
COGL_PIXEL_FORMAT_ANY,
|
||||||
gdk_pixbuf_get_rowstride (pixbuf),
|
gdk_pixbuf_get_rowstride (pixbuf),
|
||||||
gdk_pixbuf_get_pixels (pixbuf));
|
gdk_pixbuf_get_pixels (pixbuf));
|
||||||
|
|
||||||
|
texture = cogl_texture_new_with_size (size, size,
|
||||||
|
COGL_TEXTURE_NO_SLICING,
|
||||||
|
COGL_PIXEL_FORMAT_ANY);
|
||||||
|
|
||||||
|
offscreen = cogl_offscreen_new_to_texture (texture);
|
||||||
|
cogl_color_set_from_4ub (&clear_color, 0, 0, 0, 0);
|
||||||
|
cogl_push_framebuffer (offscreen);
|
||||||
|
cogl_clear (&clear_color, COGL_BUFFER_BIT_COLOR);
|
||||||
|
cogl_pop_framebuffer ();
|
||||||
|
cogl_handle_unref (offscreen);
|
||||||
|
|
||||||
|
cogl_texture_set_region (texture,
|
||||||
|
0, 0,
|
||||||
|
(size - width) / 2, (size - height) / 2,
|
||||||
|
width, height,
|
||||||
|
width, height,
|
||||||
|
gdk_pixbuf_get_has_alpha (pixbuf) ? COGL_PIXEL_FORMAT_RGBA_8888 : COGL_PIXEL_FORMAT_RGB_888,
|
||||||
|
gdk_pixbuf_get_rowstride (pixbuf),
|
||||||
|
gdk_pixbuf_get_pixels (pixbuf));
|
||||||
|
return texture;
|
||||||
}
|
}
|
||||||
|
|
||||||
static cairo_surface_t *
|
static cairo_surface_t *
|
||||||
@ -882,7 +915,7 @@ on_pixbuf_loaded (GObject *source,
|
|||||||
if (pixbuf == NULL)
|
if (pixbuf == NULL)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
texdata = pixbuf_to_cogl_handle (pixbuf);
|
texdata = pixbuf_to_cogl_handle (pixbuf, data->enforced_square);
|
||||||
|
|
||||||
g_object_unref (pixbuf);
|
g_object_unref (pixbuf);
|
||||||
|
|
||||||
@ -956,7 +989,7 @@ st_texture_cache_reset_texture (StTextureCachePropertyBind *bind,
|
|||||||
|
|
||||||
if (pixbuf != NULL)
|
if (pixbuf != NULL)
|
||||||
{
|
{
|
||||||
texdata = pixbuf_to_cogl_handle (pixbuf);
|
texdata = pixbuf_to_cogl_handle (pixbuf, FALSE);
|
||||||
g_object_unref (pixbuf);
|
g_object_unref (pixbuf);
|
||||||
|
|
||||||
clutter_texture_set_cogl_texture (bind->texture, texdata);
|
clutter_texture_set_cogl_texture (bind->texture, texdata);
|
||||||
@ -1183,6 +1216,7 @@ load_gicon_with_colors (StTextureCache *cache,
|
|||||||
request->icon = g_object_ref (icon);
|
request->icon = g_object_ref (icon);
|
||||||
request->icon_info = info;
|
request->icon_info = info;
|
||||||
request->width = request->height = size;
|
request->width = request->height = size;
|
||||||
|
request->enforced_square = TRUE;
|
||||||
|
|
||||||
load_icon_pixbuf_async (cache, icon, info, size, colors, NULL, on_pixbuf_loaded, request);
|
load_icon_pixbuf_async (cache, icon, info, size, colors, NULL, on_pixbuf_loaded, request);
|
||||||
}
|
}
|
||||||
@ -1195,6 +1229,8 @@ load_gicon_with_colors (StTextureCache *cache,
|
|||||||
g_slist_free (request->textures);
|
g_slist_free (request->textures);
|
||||||
g_free (request);
|
g_free (request);
|
||||||
g_hash_table_remove (cache->priv->outstanding_requests, key);
|
g_hash_table_remove (cache->priv->outstanding_requests, key);
|
||||||
|
g_object_unref (texture);
|
||||||
|
texture = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
g_free (key);
|
g_free (key);
|
||||||
@ -1216,7 +1252,7 @@ load_gicon_with_colors (StTextureCache *cache,
|
|||||||
* This will load @icon as a full-color icon; if you want a symbolic
|
* This will load @icon as a full-color icon; if you want a symbolic
|
||||||
* icon, you must use st_texture_cache_load_icon_name().
|
* icon, you must use st_texture_cache_load_icon_name().
|
||||||
*
|
*
|
||||||
* Return Value: (transfer none): A new #ClutterActor for the icon
|
* Return Value: (transfer none): A new #ClutterActor for the icon, or %NULL if not found
|
||||||
*/
|
*/
|
||||||
ClutterActor *
|
ClutterActor *
|
||||||
st_texture_cache_load_gicon (StTextureCache *cache,
|
st_texture_cache_load_gicon (StTextureCache *cache,
|
||||||
@ -1245,7 +1281,7 @@ load_from_pixbuf (GdkPixbuf *pixbuf)
|
|||||||
|
|
||||||
clutter_actor_set_size (CLUTTER_ACTOR (texture), width, height);
|
clutter_actor_set_size (CLUTTER_ACTOR (texture), width, height);
|
||||||
|
|
||||||
texdata = pixbuf_to_cogl_handle (pixbuf);
|
texdata = pixbuf_to_cogl_handle (pixbuf, FALSE);
|
||||||
|
|
||||||
set_texture_cogl_texture (texture, texdata);
|
set_texture_cogl_texture (texture, texdata);
|
||||||
|
|
||||||
@ -1461,10 +1497,27 @@ st_texture_cache_load_icon_name (StTextureCache *cache,
|
|||||||
switch (icon_type)
|
switch (icon_type)
|
||||||
{
|
{
|
||||||
case ST_ICON_APPLICATION:
|
case ST_ICON_APPLICATION:
|
||||||
|
themed = g_themed_icon_new (name);
|
||||||
|
texture = load_gicon_with_colors (cache, themed, size, NULL);
|
||||||
|
g_object_unref (themed);
|
||||||
|
if (texture == NULL)
|
||||||
|
{
|
||||||
|
themed = g_themed_icon_new ("application-x-executable");
|
||||||
|
texture = load_gicon_with_colors (cache, themed, size, NULL);
|
||||||
|
g_object_unref (themed);
|
||||||
|
}
|
||||||
|
return CLUTTER_ACTOR (texture);
|
||||||
|
break;
|
||||||
case ST_ICON_DOCUMENT:
|
case ST_ICON_DOCUMENT:
|
||||||
themed = g_themed_icon_new (name);
|
themed = g_themed_icon_new (name);
|
||||||
texture = load_gicon_with_colors (cache, themed, size, NULL);
|
texture = load_gicon_with_colors (cache, themed, size, NULL);
|
||||||
g_object_unref (themed);
|
g_object_unref (themed);
|
||||||
|
if (texture == NULL)
|
||||||
|
{
|
||||||
|
themed = g_themed_icon_new ("x-office-document");
|
||||||
|
texture = load_gicon_with_colors (cache, themed, size, NULL);
|
||||||
|
g_object_unref (themed);
|
||||||
|
}
|
||||||
|
|
||||||
return CLUTTER_ACTOR (texture);
|
return CLUTTER_ACTOR (texture);
|
||||||
break;
|
break;
|
||||||
@ -1482,6 +1535,12 @@ st_texture_cache_load_icon_name (StTextureCache *cache,
|
|||||||
themed = g_themed_icon_new_with_default_fallbacks (name);
|
themed = g_themed_icon_new_with_default_fallbacks (name);
|
||||||
texture = load_gicon_with_colors (cache, themed, size, NULL);
|
texture = load_gicon_with_colors (cache, themed, size, NULL);
|
||||||
g_object_unref (themed);
|
g_object_unref (themed);
|
||||||
|
if (texture == NULL)
|
||||||
|
{
|
||||||
|
themed = g_themed_icon_new ("image-missing");
|
||||||
|
texture = load_gicon_with_colors (cache, themed, size, NULL);
|
||||||
|
g_object_unref (themed);
|
||||||
|
}
|
||||||
|
|
||||||
return CLUTTER_ACTOR (texture);
|
return CLUTTER_ACTOR (texture);
|
||||||
break;
|
break;
|
||||||
@ -1549,7 +1608,7 @@ st_texture_cache_load_uri_sync_to_cogl_texture (StTextureCache *cache,
|
|||||||
if (!pixbuf)
|
if (!pixbuf)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
texdata = pixbuf_to_cogl_handle (pixbuf);
|
texdata = pixbuf_to_cogl_handle (pixbuf, FALSE);
|
||||||
g_object_unref (pixbuf);
|
g_object_unref (pixbuf);
|
||||||
|
|
||||||
if (policy == ST_TEXTURE_CACHE_POLICY_FOREVER)
|
if (policy == ST_TEXTURE_CACHE_POLICY_FOREVER)
|
||||||
@ -1800,7 +1859,7 @@ st_texture_cache_load_from_data (StTextureCache *cache,
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
texdata = pixbuf_to_cogl_handle (pixbuf);
|
texdata = pixbuf_to_cogl_handle (pixbuf, TRUE);
|
||||||
g_object_unref (pixbuf);
|
g_object_unref (pixbuf);
|
||||||
|
|
||||||
set_texture_cogl_texture (texture, texdata);
|
set_texture_cogl_texture (texture, texdata);
|
||||||
@ -1924,6 +1983,7 @@ st_texture_cache_load_thumbnail (StTextureCache *cache,
|
|||||||
data->thumbnail = TRUE;
|
data->thumbnail = TRUE;
|
||||||
data->width = size;
|
data->width = size;
|
||||||
data->height = size;
|
data->height = size;
|
||||||
|
data->enforced_square = TRUE;
|
||||||
data->textures = g_slist_prepend (data->textures, g_object_ref (texture));
|
data->textures = g_slist_prepend (data->textures, g_object_ref (texture));
|
||||||
load_thumbnail_async (cache, uri, mimetype, size, NULL, on_pixbuf_loaded, data);
|
load_thumbnail_async (cache, uri, mimetype, size, NULL, on_pixbuf_loaded, data);
|
||||||
}
|
}
|
||||||
@ -2000,6 +2060,7 @@ st_texture_cache_load_recent_thumbnail (StTextureCache *cache,
|
|||||||
data->recent_info = gtk_recent_info_ref (info);
|
data->recent_info = gtk_recent_info_ref (info);
|
||||||
data->width = size;
|
data->width = size;
|
||||||
data->height = size;
|
data->height = size;
|
||||||
|
data->enforced_square = TRUE;
|
||||||
data->textures = g_slist_prepend (data->textures, g_object_ref (texture));
|
data->textures = g_slist_prepend (data->textures, g_object_ref (texture));
|
||||||
load_recent_thumbnail_async (cache, info, size, NULL, on_pixbuf_loaded, data);
|
load_recent_thumbnail_async (cache, info, size, NULL, on_pixbuf_loaded, data);
|
||||||
}
|
}
|
||||||
|
@ -2518,6 +2518,15 @@ st_theme_node_get_border_image (StThemeNode *node)
|
|||||||
|
|
||||||
char *filename;
|
char *filename;
|
||||||
|
|
||||||
|
/* Support border-image: none; to suppress a previously specified border image */
|
||||||
|
if (term_is_none (term))
|
||||||
|
{
|
||||||
|
if (term->next == NULL)
|
||||||
|
return NULL;
|
||||||
|
else
|
||||||
|
goto next_property;
|
||||||
|
}
|
||||||
|
|
||||||
/* First term must be the URL to the image */
|
/* First term must be the URL to the image */
|
||||||
if (term->type != TERM_URI)
|
if (term->type != TERM_URI)
|
||||||
goto next_property;
|
goto next_property;
|
||||||
|
@ -31,6 +31,7 @@
|
|||||||
#include "config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include <math.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
@ -59,9 +60,6 @@ struct _StTooltipPrivate
|
|||||||
{
|
{
|
||||||
StLabel *label;
|
StLabel *label;
|
||||||
|
|
||||||
gfloat arrow_offset;
|
|
||||||
gboolean actor_below;
|
|
||||||
|
|
||||||
ClutterGeometry *tip_area;
|
ClutterGeometry *tip_area;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -73,6 +71,10 @@ static void st_tooltip_show (ClutterActor *self);
|
|||||||
static void st_tooltip_show_all (ClutterActor *self);
|
static void st_tooltip_show_all (ClutterActor *self);
|
||||||
static void st_tooltip_hide_all (ClutterActor *self);
|
static void st_tooltip_hide_all (ClutterActor *self);
|
||||||
|
|
||||||
|
static void st_tooltip_constrain (StTooltip *tooltip,
|
||||||
|
const ClutterGeometry *geometry,
|
||||||
|
ClutterGeometry *adjusted_geometry);
|
||||||
|
|
||||||
static void
|
static void
|
||||||
st_tooltip_set_property (GObject *gobject,
|
st_tooltip_set_property (GObject *gobject,
|
||||||
guint prop_id,
|
guint prop_id,
|
||||||
@ -208,26 +210,6 @@ st_tooltip_paint (ClutterActor *self)
|
|||||||
clutter_actor_paint (CLUTTER_ACTOR (priv->label));
|
clutter_actor_paint (CLUTTER_ACTOR (priv->label));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
st_tooltip_map (ClutterActor *self)
|
|
||||||
{
|
|
||||||
StTooltipPrivate *priv = ST_TOOLTIP (self)->priv;
|
|
||||||
|
|
||||||
CLUTTER_ACTOR_CLASS (st_tooltip_parent_class)->map (self);
|
|
||||||
|
|
||||||
clutter_actor_map (CLUTTER_ACTOR (priv->label));
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
st_tooltip_unmap (ClutterActor *self)
|
|
||||||
{
|
|
||||||
StTooltipPrivate *priv = ST_TOOLTIP (self)->priv;
|
|
||||||
|
|
||||||
CLUTTER_ACTOR_CLASS (st_tooltip_parent_class)->unmap (self);
|
|
||||||
|
|
||||||
clutter_actor_unmap (CLUTTER_ACTOR (priv->label));
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
st_tooltip_dispose (GObject *self)
|
st_tooltip_dispose (GObject *self)
|
||||||
{
|
{
|
||||||
@ -259,8 +241,6 @@ st_tooltip_class_init (StTooltipClass *klass)
|
|||||||
actor_class->get_preferred_height = st_tooltip_get_preferred_height;
|
actor_class->get_preferred_height = st_tooltip_get_preferred_height;
|
||||||
actor_class->allocate = st_tooltip_allocate;
|
actor_class->allocate = st_tooltip_allocate;
|
||||||
actor_class->paint = st_tooltip_paint;
|
actor_class->paint = st_tooltip_paint;
|
||||||
actor_class->map = st_tooltip_map;
|
|
||||||
actor_class->unmap = st_tooltip_unmap;
|
|
||||||
actor_class->show = st_tooltip_show;
|
actor_class->show = st_tooltip_show;
|
||||||
actor_class->show_all = st_tooltip_show_all;
|
actor_class->show_all = st_tooltip_show_all;
|
||||||
actor_class->hide_all = st_tooltip_hide_all;
|
actor_class->hide_all = st_tooltip_hide_all;
|
||||||
@ -301,17 +281,14 @@ st_tooltip_update_position (StTooltip *tooltip)
|
|||||||
{
|
{
|
||||||
StTooltipPrivate *priv = tooltip->priv;
|
StTooltipPrivate *priv = tooltip->priv;
|
||||||
ClutterGeometry *tip_area = tooltip->priv->tip_area;
|
ClutterGeometry *tip_area = tooltip->priv->tip_area;
|
||||||
|
ClutterGeometry geometry;
|
||||||
|
ClutterGeometry adjusted_geometry;
|
||||||
gfloat tooltip_w, tooltip_h, tooltip_x, tooltip_y;
|
gfloat tooltip_w, tooltip_h, tooltip_x, tooltip_y;
|
||||||
gfloat stage_w, stage_h;
|
|
||||||
ClutterActor *stage;
|
|
||||||
|
|
||||||
/* ensure the tooltip with is not fixed size */
|
|
||||||
clutter_actor_set_size ((ClutterActor*) tooltip, -1, -1);
|
|
||||||
|
|
||||||
/* if no area set, just position ourselves top left */
|
/* if no area set, just position ourselves top left */
|
||||||
if (!priv->tip_area)
|
if (!priv->tip_area)
|
||||||
{
|
{
|
||||||
clutter_actor_set_position ((ClutterActor*) tooltip, 0, 0);
|
clutter_actor_set_anchor_point ((ClutterActor*) tooltip, 0, 0);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -326,47 +303,22 @@ st_tooltip_update_position (StTooltip *tooltip)
|
|||||||
tooltip_x = (int)(tip_area->x + (tip_area->width / 2) - (tooltip_w / 2));
|
tooltip_x = (int)(tip_area->x + (tip_area->width / 2) - (tooltip_w / 2));
|
||||||
tooltip_y = (int)(tip_area->y + tip_area->height);
|
tooltip_y = (int)(tip_area->y + tip_area->height);
|
||||||
|
|
||||||
stage = clutter_actor_get_stage ((ClutterActor *) tooltip);
|
geometry.x = tooltip_x;
|
||||||
if (!stage)
|
geometry.y = tooltip_y;
|
||||||
{
|
geometry.width = ceil (tooltip_w);
|
||||||
return;
|
geometry.height = ceil (tooltip_h);
|
||||||
}
|
|
||||||
clutter_actor_get_size (stage, &stage_w, &stage_h);
|
|
||||||
|
|
||||||
/* make sure the tooltip is not off screen vertically */
|
st_tooltip_constrain (tooltip, &geometry, &adjusted_geometry);
|
||||||
if (tooltip_w > stage_w)
|
|
||||||
{
|
|
||||||
tooltip_x = 0;
|
|
||||||
clutter_actor_set_width ((ClutterActor*) tooltip, stage_w);
|
|
||||||
}
|
|
||||||
else if (tooltip_x < 0)
|
|
||||||
{
|
|
||||||
tooltip_x = 0;
|
|
||||||
}
|
|
||||||
else if (tooltip_x + tooltip_w > stage_w)
|
|
||||||
{
|
|
||||||
tooltip_x = (int)(stage_w) - tooltip_w;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* make sure the tooltip is not off screen horizontally */
|
tooltip_x = adjusted_geometry.x;
|
||||||
if (tooltip_y + tooltip_h > stage_h)
|
tooltip_y = adjusted_geometry.y;
|
||||||
{
|
|
||||||
priv->actor_below = TRUE;
|
|
||||||
|
|
||||||
/* re-query size as may have changed */
|
/* Since we are updating the position out of st_widget_allocate(), we can't
|
||||||
clutter_actor_get_preferred_height ((ClutterActor*) tooltip,
|
* call clutter_actor_set_position(), since that would trigger another
|
||||||
-1, NULL, &tooltip_h);
|
* allocation cycle. Instead, we adjust the anchor position which moves
|
||||||
tooltip_y = tip_area->y - tooltip_h;
|
* the tooltip actor on the screen without changing its allocation
|
||||||
}
|
*/
|
||||||
else
|
clutter_actor_set_anchor_point ((ClutterActor*) tooltip, -tooltip_x, -tooltip_y);
|
||||||
{
|
|
||||||
priv->actor_below = FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* calculate the arrow offset */
|
|
||||||
priv->arrow_offset = tip_area->x + tip_area->width / 2 - tooltip_x;
|
|
||||||
|
|
||||||
clutter_actor_set_position ((ClutterActor*) tooltip, tooltip_x, tooltip_y);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -411,32 +363,6 @@ static void
|
|||||||
st_tooltip_show (ClutterActor *self)
|
st_tooltip_show (ClutterActor *self)
|
||||||
{
|
{
|
||||||
StTooltip *tooltip = ST_TOOLTIP (self);
|
StTooltip *tooltip = ST_TOOLTIP (self);
|
||||||
ClutterActor *parent;
|
|
||||||
ClutterActor *stage;
|
|
||||||
|
|
||||||
parent = clutter_actor_get_parent (self);
|
|
||||||
stage = clutter_actor_get_stage (self);
|
|
||||||
|
|
||||||
if (!stage)
|
|
||||||
{
|
|
||||||
g_warning ("StTooltip is not on any stage.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* make sure we're parented on the stage */
|
|
||||||
if (G_UNLIKELY (parent != stage))
|
|
||||||
{
|
|
||||||
g_object_ref (self);
|
|
||||||
clutter_actor_unparent (self);
|
|
||||||
clutter_actor_set_parent (self, stage);
|
|
||||||
g_object_unref (self);
|
|
||||||
parent = stage;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* raise the tooltip to the top */
|
|
||||||
clutter_container_raise_child (CLUTTER_CONTAINER (stage),
|
|
||||||
CLUTTER_ACTOR (tooltip),
|
|
||||||
NULL);
|
|
||||||
|
|
||||||
st_tooltip_update_position (tooltip);
|
st_tooltip_update_position (tooltip);
|
||||||
|
|
||||||
@ -477,6 +403,7 @@ st_tooltip_set_tip_area (StTooltip *tooltip,
|
|||||||
g_boxed_free (CLUTTER_TYPE_GEOMETRY, tooltip->priv->tip_area);
|
g_boxed_free (CLUTTER_TYPE_GEOMETRY, tooltip->priv->tip_area);
|
||||||
tooltip->priv->tip_area = g_boxed_copy (CLUTTER_TYPE_GEOMETRY, area);
|
tooltip->priv->tip_area = g_boxed_copy (CLUTTER_TYPE_GEOMETRY, area);
|
||||||
|
|
||||||
|
if (clutter_actor_get_stage (CLUTTER_ACTOR (tooltip)))
|
||||||
st_tooltip_update_position (tooltip);
|
st_tooltip_update_position (tooltip);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -496,3 +423,102 @@ st_tooltip_get_tip_area (StTooltip *tooltip)
|
|||||||
|
|
||||||
return tooltip->priv->tip_area;
|
return tooltip->priv->tip_area;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
StTooltipConstrainFunc func;
|
||||||
|
gpointer data;
|
||||||
|
GDestroyNotify notify;
|
||||||
|
} ConstrainFuncClosure;
|
||||||
|
|
||||||
|
static void
|
||||||
|
constrain_func_closure_free (gpointer data)
|
||||||
|
{
|
||||||
|
ConstrainFuncClosure *closure = data;
|
||||||
|
if (closure->notify)
|
||||||
|
closure->notify (closure->data);
|
||||||
|
g_slice_free (ConstrainFuncClosure, data);
|
||||||
|
}
|
||||||
|
|
||||||
|
static GQuark
|
||||||
|
st_tooltip_constrain_func_quark (void)
|
||||||
|
{
|
||||||
|
static GQuark value = 0;
|
||||||
|
if (G_UNLIKELY (value == 0))
|
||||||
|
value = g_quark_from_static_string ("st-tooltip-constrain-func");
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* st_tooltip_set_constrain_func:
|
||||||
|
* @stage: a #ClutterStage
|
||||||
|
* @func: (allow-none): function to be called to constrain tooltip position
|
||||||
|
* @data: (allow-none): user data to pass to @func
|
||||||
|
* @notify: (allow-none): function to be called when @data is no longer needed
|
||||||
|
*
|
||||||
|
* Sets a callback function that will be used to constrain the position
|
||||||
|
* of tooltips within @stage. This can be used, for example, if the stage
|
||||||
|
* spans multiple monitors and tooltips should be positioned not to cross
|
||||||
|
* monitors.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
st_tooltip_set_constrain_func (ClutterStage *stage,
|
||||||
|
StTooltipConstrainFunc func,
|
||||||
|
gpointer data,
|
||||||
|
GDestroyNotify notify)
|
||||||
|
{
|
||||||
|
ConstrainFuncClosure *closure;
|
||||||
|
|
||||||
|
g_return_if_fail (CLUTTER_IS_STAGE (stage));
|
||||||
|
|
||||||
|
if (func)
|
||||||
|
{
|
||||||
|
closure = g_slice_new (ConstrainFuncClosure);
|
||||||
|
closure->func = func;
|
||||||
|
closure->data = data;
|
||||||
|
closure->notify = notify;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
closure = NULL;
|
||||||
|
|
||||||
|
g_object_set_qdata_full (G_OBJECT (stage), st_tooltip_constrain_func_quark (),
|
||||||
|
closure, constrain_func_closure_free);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
st_tooltip_constrain (StTooltip *tooltip,
|
||||||
|
const ClutterGeometry *geometry,
|
||||||
|
ClutterGeometry *adjusted_geometry)
|
||||||
|
{
|
||||||
|
ConstrainFuncClosure *closure;
|
||||||
|
|
||||||
|
ClutterActor *stage = clutter_actor_get_stage (CLUTTER_ACTOR (tooltip));
|
||||||
|
|
||||||
|
*adjusted_geometry = *geometry;
|
||||||
|
|
||||||
|
if (stage == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
|
closure = g_object_get_qdata (G_OBJECT (stage), st_tooltip_constrain_func_quark ());
|
||||||
|
if (closure)
|
||||||
|
{
|
||||||
|
closure->func (tooltip, geometry, adjusted_geometry, closure->data);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ClutterActor *parent;
|
||||||
|
gfloat parent_w, parent_h;
|
||||||
|
|
||||||
|
parent = clutter_actor_get_parent ((ClutterActor *) tooltip);
|
||||||
|
clutter_actor_get_size (parent, &parent_w, &parent_h);
|
||||||
|
|
||||||
|
/* make sure the tooltip is not off parent horizontally */
|
||||||
|
if (adjusted_geometry->x < 0)
|
||||||
|
adjusted_geometry->x = 0;
|
||||||
|
else if (adjusted_geometry->x + adjusted_geometry->width > parent_w)
|
||||||
|
adjusted_geometry->x = (int)(parent_w) - adjusted_geometry->width;
|
||||||
|
|
||||||
|
/* make sure the tooltip is not off parent vertically */
|
||||||
|
if (adjusted_geometry->y + adjusted_geometry->height > parent_h)
|
||||||
|
adjusted_geometry->y = parent_h - adjusted_geometry->height;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -68,6 +68,24 @@ void st_tooltip_set_tip_area (StTooltip *tooltip,
|
|||||||
const ClutterGeometry *area);
|
const ClutterGeometry *area);
|
||||||
const ClutterGeometry* st_tooltip_get_tip_area (StTooltip *tooltip);
|
const ClutterGeometry* st_tooltip_get_tip_area (StTooltip *tooltip);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* StTooltipConstrainFunc:
|
||||||
|
* @tooltip: the #StTooltip that is being positioned
|
||||||
|
* @geometry: size and position of the tooltip without any constraints
|
||||||
|
* @adjusted_geometry: (out): new position of the tooltip.
|
||||||
|
* The width and height fields will be ignored.
|
||||||
|
* @data: (closure): user data passed to st_tooltip_set_constrain_func()
|
||||||
|
*/
|
||||||
|
typedef void (*StTooltipConstrainFunc) (StTooltip *tooltip,
|
||||||
|
const ClutterGeometry *geometry,
|
||||||
|
ClutterGeometry *adjusted_geometry,
|
||||||
|
gpointer data);
|
||||||
|
|
||||||
|
void st_tooltip_set_constrain_func (ClutterStage *stage,
|
||||||
|
StTooltipConstrainFunc func,
|
||||||
|
gpointer data,
|
||||||
|
GDestroyNotify notify);
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
||||||
#endif /* __ST_TOOLTIP_H__ */
|
#endif /* __ST_TOOLTIP_H__ */
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user