Compare commits
24 Commits
Author | SHA1 | Date | |
---|---|---|---|
f3b8f0bf12 | |||
c3ac059464 | |||
9d791ac9fa | |||
ae8dc11c55 | |||
8c0a2a1284 | |||
6d4e229d1d | |||
53b25fa5af | |||
84509886f7 | |||
d14548eb01 | |||
63b6ed8d57 | |||
e1b4c32c4d | |||
4ea72130e0 | |||
54db777874 | |||
4d12feff3e | |||
3c8c5a5570 | |||
6e4f54c351 | |||
a91c1caf42 | |||
90f14d0762 | |||
77f2e3abde | |||
a02019cf9e | |||
a341b74aeb | |||
9e0a5fa3a9 | |||
49856d4961 | |||
4db34fca36 |
22
NEWS
22
NEWS
@ -1,3 +1,25 @@
|
||||
3.16.4
|
||||
======
|
||||
* Fix screen freezes when a notification is pushed [Carlos; #755425]
|
||||
* Fix icons getting cut off in dash [Florian; #745649]
|
||||
* Misc. bug fixes [Bastien, Ray, Florian; #752779, #752438, #752739, #651503,
|
||||
#753181]
|
||||
|
||||
Contributors:
|
||||
Emmanuele Bassi, Carlos Garnacho, Florian Müllner, Bastien Nocera, Ray Strode
|
||||
|
||||
Translations:
|
||||
Pedro Albuquerque [pt], Jiri Grönroos [fi]
|
||||
|
||||
3.16.3
|
||||
======
|
||||
* Handle touch events in OSK on wayland [Rui; #750287]
|
||||
* Misc. bug fixes [Florian, Rui, Ray; #749383, #749529, #750714, #751517,
|
||||
#751541]
|
||||
|
||||
Contributors:
|
||||
Rui Matos, Florian Müllner, Ray Strode
|
||||
|
||||
3.16.2
|
||||
======
|
||||
* Make event highlight in calendar more prominent [Jakub; #747715]
|
||||
|
@ -1,5 +1,5 @@
|
||||
AC_PREREQ(2.63)
|
||||
AC_INIT([gnome-shell],[3.16.2],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell])
|
||||
AC_INIT([gnome-shell],[3.16.4],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell])
|
||||
|
||||
AC_CONFIG_HEADERS([config.h])
|
||||
AC_CONFIG_SRCDIR([src/shell-global.c])
|
||||
|
@ -401,7 +401,7 @@ const AuthPrompt = new Lang.Class({
|
||||
},
|
||||
|
||||
updateSensitivity: function(sensitive) {
|
||||
this._updateNextButtonSensitivity(sensitive);
|
||||
this._updateNextButtonSensitivity(sensitive && this._entry.text.length > 0);
|
||||
this._entry.reactive = sensitive;
|
||||
this._entry.clutter_text.editable = sensitive;
|
||||
},
|
||||
@ -432,8 +432,9 @@ const AuthPrompt = new Lang.Class({
|
||||
let oldStatus = this.verificationStatus;
|
||||
this.verificationStatus = AuthPromptStatus.NOT_VERIFYING;
|
||||
this.cancelButton.reactive = true;
|
||||
this.nextButton.label = _("Next");
|
||||
|
||||
if (oldStatus == AuthPromptStatus.VERIFYING)
|
||||
if (this._userVerifier)
|
||||
this._userVerifier.cancel();
|
||||
|
||||
this._queryingService = null;
|
||||
@ -488,6 +489,7 @@ const AuthPrompt = new Lang.Class({
|
||||
|
||||
finish: function(onComplete) {
|
||||
if (!this._userVerifier.hasPendingMessages) {
|
||||
this._userVerifier.clear();
|
||||
onComplete();
|
||||
return;
|
||||
}
|
||||
@ -495,12 +497,13 @@ const AuthPrompt = new Lang.Class({
|
||||
let signalId = this._userVerifier.connect('no-more-messages',
|
||||
Lang.bind(this, function() {
|
||||
this._userVerifier.disconnect(signalId);
|
||||
this._userVerifier.clear();
|
||||
onComplete();
|
||||
}));
|
||||
},
|
||||
|
||||
cancel: function() {
|
||||
if (this.verificationStatus == AuthPromptStatus.NOT_VERIFYING || this.verificationStatus == AuthPromptStatus.VERIFICATION_SUCCEEDED) {
|
||||
if (this.verificationStatus == AuthPromptStatus.VERIFICATION_SUCCEEDED) {
|
||||
return;
|
||||
}
|
||||
this.reset();
|
||||
|
@ -584,7 +584,14 @@ const LoginDialog = new Lang.Class({
|
||||
// try a different layout, or if we have what extra space we
|
||||
// can hand out
|
||||
if (bannerAllocation) {
|
||||
let leftOverYSpace = dialogHeight - bannerHeight - authPromptHeight - logoHeight;
|
||||
let bannerSpace;
|
||||
|
||||
if (authPromptAllocation)
|
||||
bannerSpace = authPromptAllocation.y1 - bannerAllocation.y1;
|
||||
else
|
||||
bannerSpace = 0;
|
||||
|
||||
let leftOverYSpace = bannerSpace - bannerHeight;
|
||||
|
||||
if (leftOverYSpace > 0) {
|
||||
// First figure out how much left over space is up top
|
||||
@ -867,7 +874,7 @@ const LoginDialog = new Lang.Class({
|
||||
},
|
||||
|
||||
_loginScreenSessionActivated: function() {
|
||||
if (this._authPrompt.verificationStatus != AuthPrompt.AuthPromptStatus.VERIFICATION_SUCCEEDED)
|
||||
if (this.actor.opacity == 255 && this._authPrompt.verificationStatus == AuthPrompt.AuthPromptStatus.NOT_VERIFYING)
|
||||
return;
|
||||
|
||||
Tweener.addTween(this.actor,
|
||||
@ -884,7 +891,8 @@ const LoginDialog = new Lang.Class({
|
||||
},
|
||||
onUpdateScope: this,
|
||||
onComplete: function() {
|
||||
this._authPrompt.reset();
|
||||
if (this._authPrompt.verificationStatus != AuthPrompt.AuthPromptStatus.NOT_VERIFYING)
|
||||
this._authPrompt.reset();
|
||||
},
|
||||
onCompleteScope: this });
|
||||
},
|
||||
|
@ -500,6 +500,11 @@ const AllView = new Lang.Class({
|
||||
|
||||
_loadApps: function() {
|
||||
let apps = Gio.AppInfo.get_all().filter(function(appInfo) {
|
||||
try {
|
||||
let id = appInfo.get_id(); // catch invalid file encodings
|
||||
} catch(e) {
|
||||
return false;
|
||||
}
|
||||
return appInfo.should_show();
|
||||
}).map(function(app) {
|
||||
return app.get_id();
|
||||
@ -753,7 +758,8 @@ const AllView = new Lang.Class({
|
||||
let fadeOffset = Math.min(this._grid.topPadding,
|
||||
this._grid.bottomPadding);
|
||||
this._scrollView.update_fade_effect(fadeOffset, 0);
|
||||
this._scrollView.get_effect('fade').fade_edges = true;
|
||||
if (fadeOffset > 0)
|
||||
this._scrollView.get_effect('fade').fade_edges = true;
|
||||
|
||||
if (this._availWidth != availWidth || this._availHeight != availHeight || oldNPages != this._grid.nPages()) {
|
||||
this._adjustment.value = 0;
|
||||
@ -1060,7 +1066,7 @@ const AppSearchProvider = new Lang.Class({
|
||||
|
||||
getInitialResultSet: function(terms, callback, cancellable) {
|
||||
let query = terms.join(' ');
|
||||
let groups = Gio.DesktopAppInfo.search(query);
|
||||
let groups = Shell.AppSystem.search(query);
|
||||
let usage = Shell.AppUsage.get_default();
|
||||
let results = [];
|
||||
groups.forEach(function(group) {
|
||||
@ -1289,7 +1295,10 @@ const FolderIcon = new Lang.Class({
|
||||
if (!_listsIntersect(folderCategories, appCategories))
|
||||
return;
|
||||
|
||||
addAppId(appInfo.get_id());
|
||||
try {
|
||||
addAppId(appInfo.get_id()); // catch invalid file encodings
|
||||
} catch(e) {
|
||||
}
|
||||
});
|
||||
|
||||
this.actor.visible = this.view.getAllItems().length > 0;
|
||||
|
@ -1229,7 +1229,7 @@ const NotificationMessage = new Lang.Class({
|
||||
this._closed = true;
|
||||
this.notification.destroy(MessageTray.NotificationDestroyedReason.DISMISSED);
|
||||
}));
|
||||
notification.connect('destroy', Lang.bind(this,
|
||||
this._destroyId = notification.connect('destroy', Lang.bind(this,
|
||||
function() {
|
||||
if (!this._closed)
|
||||
this.close();
|
||||
@ -1260,6 +1260,10 @@ const NotificationMessage = new Lang.Class({
|
||||
if (this._updatedId)
|
||||
this.notification.disconnect(this._updatedId);
|
||||
this._updatedId = 0;
|
||||
|
||||
if (this._destroyId)
|
||||
this.notification.disconnect(this._destroyId);
|
||||
this._destroyId = 0;
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -644,15 +644,14 @@ const Dash = new Lang.Class({
|
||||
let firstIcon = firstButton._delegate.icon;
|
||||
|
||||
let minHeight, natHeight;
|
||||
let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
|
||||
|
||||
// Enforce the current icon size during the size request
|
||||
firstIcon.setIconSize(this.iconSize);
|
||||
firstIcon.icon.ensure_style();
|
||||
let [currentWidth, currentHeight] = firstIcon.icon.get_size();
|
||||
firstIcon.icon.set_size(this.iconSize * scaleFactor, this.iconSize * scaleFactor);
|
||||
[minHeight, natHeight] = firstButton.get_preferred_height(-1);
|
||||
|
||||
let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
|
||||
let iconSizes = baseIconSizes.map(function(s) {
|
||||
return s * scaleFactor;
|
||||
});
|
||||
firstIcon.icon.set_size(currentWidth, currentHeight);
|
||||
|
||||
// Subtract icon padding and box spacing from the available height
|
||||
availHeight -= iconChildren.length * (natHeight - this.iconSize * scaleFactor) +
|
||||
@ -660,6 +659,10 @@ const Dash = new Lang.Class({
|
||||
|
||||
let availSize = availHeight / iconChildren.length;
|
||||
|
||||
let iconSizes = baseIconSizes.map(function(s) {
|
||||
return s * scaleFactor;
|
||||
});
|
||||
|
||||
let newIconSize = baseIconSizes[0];
|
||||
for (let i = 0; i < iconSizes.length; i++) {
|
||||
if (iconSizes[i] < availSize)
|
||||
|
@ -24,9 +24,6 @@ const KEYBOARD_TYPE = 'keyboard-type';
|
||||
const A11Y_APPLICATIONS_SCHEMA = 'org.gnome.desktop.a11y.applications';
|
||||
const SHOW_KEYBOARD = 'screen-keyboard-enabled';
|
||||
|
||||
const CURSOR_BUS_NAME = 'org.gnome.SettingsDaemon.Cursor';
|
||||
const CURSOR_OBJECT_PATH = '/org/gnome/SettingsDaemon/Cursor';
|
||||
|
||||
const CARIBOU_BUS_NAME = 'org.gnome.Caribou.Daemon';
|
||||
const CARIBOU_OBJECT_PATH = '/org/gnome/Caribou/Daemon';
|
||||
|
||||
@ -114,6 +111,35 @@ const Key = new Lang.Class({
|
||||
key.release();
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
}));
|
||||
button.connect('touch-event', Lang.bind(this,
|
||||
function (actor, event) {
|
||||
let device = event.get_device();
|
||||
let sequence = event.get_event_sequence();
|
||||
|
||||
// We only handle touch events here on wayland. On X11
|
||||
// we do get emulated pointer events, which already works
|
||||
// for single-touch cases. Besides, the X11 passive touch grab
|
||||
// set up by Mutter will make us see first the touch events
|
||||
// and later the pointer events, so it will look like two
|
||||
// unrelated series of events, we want to avoid double handling
|
||||
// in these cases.
|
||||
if (!Meta.is_wayland_compositor())
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
|
||||
if (!this._touchPressed &&
|
||||
event.type() == Clutter.EventType.TOUCH_BEGIN) {
|
||||
device.sequence_grab(sequence, actor);
|
||||
this._touchPressed = true;
|
||||
key.press();
|
||||
} else if (this._touchPressed &&
|
||||
event.type() == Clutter.EventType.TOUCH_END &&
|
||||
device.sequence_get_grabbed_actor(sequence) == actor) {
|
||||
device.sequence_ungrab(sequence);
|
||||
this._touchPressed = false;
|
||||
key.release();
|
||||
}
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
}));
|
||||
|
||||
return button;
|
||||
},
|
||||
@ -178,9 +204,6 @@ const Keyboard = new Lang.Class({
|
||||
this._keyboardSettings.connect('changed', Lang.bind(this, this._sync));
|
||||
this._a11yApplicationsSettings = new Gio.Settings({ schema_id: A11Y_APPLICATIONS_SCHEMA });
|
||||
this._a11yApplicationsSettings.connect('changed', Lang.bind(this, this._sync));
|
||||
this._watchNameId = Gio.bus_watch_name(Gio.BusType.SESSION, CURSOR_BUS_NAME, 0,
|
||||
Lang.bind(this, this._sync),
|
||||
Lang.bind(this, this._sync));
|
||||
this._daemonProxy = null;
|
||||
this._lastDeviceId = null;
|
||||
|
||||
|
@ -837,6 +837,7 @@ const LayoutManager = new Lang.Class({
|
||||
// need to connect to 'destroy' too.
|
||||
|
||||
this._trackedActors.push(actorData);
|
||||
this._updateActorVisibility(actorData);
|
||||
this._queueUpdateRegions();
|
||||
},
|
||||
|
||||
@ -855,25 +856,23 @@ const LayoutManager = new Lang.Class({
|
||||
this._queueUpdateRegions();
|
||||
},
|
||||
|
||||
_updateActorVisibility: function(actorData) {
|
||||
if (!actorData.trackFullscreen)
|
||||
return;
|
||||
|
||||
let monitor = this.findMonitorForActor(actorData.actor);
|
||||
actorData.actor.visible = !(global.window_group.visible &&
|
||||
monitor &&
|
||||
monitor.inFullscreen);
|
||||
},
|
||||
|
||||
_updateVisibility: function() {
|
||||
let windowsVisible = Main.sessionMode.hasWindows && !this._inOverview;
|
||||
|
||||
global.window_group.visible = windowsVisible;
|
||||
global.top_window_group.visible = windowsVisible;
|
||||
|
||||
for (let i = 0; i < this._trackedActors.length; i++) {
|
||||
let actorData = this._trackedActors[i], visible;
|
||||
if (!actorData.trackFullscreen)
|
||||
continue;
|
||||
|
||||
if (!windowsVisible)
|
||||
visible = true;
|
||||
else if (this.findMonitorForActor(actorData.actor).inFullscreen)
|
||||
visible = false;
|
||||
else
|
||||
visible = true;
|
||||
actorData.actor.visible = visible;
|
||||
}
|
||||
this._trackedActors.forEach(Lang.bind(this, this._updateActorVisibility));
|
||||
},
|
||||
|
||||
getWorkAreaForMonitor: function(monitorIndex) {
|
||||
|
@ -167,6 +167,10 @@ const WindowMenuManager = new Lang.Class({
|
||||
menu.connect('activate', function() {
|
||||
window.check_alive(global.get_current_time());
|
||||
});
|
||||
let destroyId = window.connect('unmanaged',
|
||||
function() {
|
||||
menu.close();
|
||||
});
|
||||
|
||||
this._sourceActor.set_size(rect.width, rect.height);
|
||||
this._sourceActor.set_position(rect.x, rect.y);
|
||||
@ -180,6 +184,7 @@ const WindowMenuManager = new Lang.Class({
|
||||
|
||||
this._sourceActor.hide();
|
||||
menu.destroy();
|
||||
window.disconnect(destroyId);
|
||||
}));
|
||||
}
|
||||
});
|
||||
|
357
po/fi.po
357
po/fi.po
@ -26,8 +26,8 @@ msgstr ""
|
||||
"Project-Id-Version: gnome-shell\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||
"shell&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2015-03-04 12:55+0000\n"
|
||||
"PO-Revision-Date: 2015-03-04 22:01+0200\n"
|
||||
"POT-Creation-Date: 2015-10-05 08:39+0000\n"
|
||||
"PO-Revision-Date: 2015-10-05 17:38+0300\n"
|
||||
"Last-Translator: Jiri Grönroos <jiri.gronroos+l10n@iki.fi>\n"
|
||||
"Language-Team: suomi <gnome-fi-laatu@lists.sourceforge.net>\n"
|
||||
"Language: fi\n"
|
||||
@ -45,8 +45,6 @@ msgid "System"
|
||||
msgstr "Järjestelmä"
|
||||
|
||||
#: ../data/50-gnome-shell-system.xml.in.h:2
|
||||
#| msgid "%d new notification"
|
||||
#| msgid_plural "%d new notifications"
|
||||
msgid "Show the notification list"
|
||||
msgstr "Näytä ilmoitusluettelo"
|
||||
|
||||
@ -235,7 +233,6 @@ msgid "Keybinding to toggle the visibility of the notification list"
|
||||
msgstr "Viestialueen näyttämiseen/piilottamiseen tarkoitettu pikanäppäin"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:26
|
||||
#| msgid "Keybinding to toggle the visibility of the message tray."
|
||||
msgid "Keybinding to toggle the visibility of the notification list."
|
||||
msgstr "Ilmoitusluettelon näyttämiseen/piilottamiseen tarkoitettu pikanäppäin."
|
||||
|
||||
@ -324,59 +321,67 @@ msgstr ""
|
||||
"liikkumisen"
|
||||
|
||||
#: ../data/org.gnome.Shell.PortalHelper.desktop.in.h:1
|
||||
#| msgid "Network error"
|
||||
msgid "Network Login"
|
||||
msgstr "Verkkokirjautuminen"
|
||||
|
||||
#: ../js/extensionPrefs/main.js:123
|
||||
#: ../js/extensionPrefs/main.js:122
|
||||
#, javascript-format
|
||||
msgid "There was an error loading the preferences dialog for %s:"
|
||||
msgstr "Kohteen %s asetusikkunaa ladataessa tapahtui virhe:"
|
||||
|
||||
#: ../js/extensionPrefs/main.js:155
|
||||
#: ../js/extensionPrefs/main.js:154
|
||||
msgid "GNOME Shell Extensions"
|
||||
msgstr "GNOME Shell -laajennukset"
|
||||
|
||||
#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:143
|
||||
#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:145
|
||||
#: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:452
|
||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
|
||||
#: ../js/ui/status/network.js:916
|
||||
msgid "Cancel"
|
||||
msgstr "Peru"
|
||||
|
||||
#: ../js/gdm/authPrompt.js:169 ../js/gdm/authPrompt.js:217
|
||||
#: ../js/gdm/authPrompt.js:169 ../js/gdm/authPrompt.js:215
|
||||
#: ../js/gdm/authPrompt.js:435
|
||||
msgid "Next"
|
||||
msgstr "Seuraava"
|
||||
|
||||
#: ../js/gdm/authPrompt.js:213 ../js/ui/shellMountOperation.js:403
|
||||
#: ../js/gdm/authPrompt.js:211 ../js/ui/shellMountOperation.js:403
|
||||
#: ../js/ui/unlockDialog.js:59
|
||||
msgid "Unlock"
|
||||
msgstr "Avaa lukitus"
|
||||
|
||||
#: ../js/gdm/authPrompt.js:215
|
||||
#: ../js/gdm/authPrompt.js:213
|
||||
msgctxt "button"
|
||||
msgid "Sign In"
|
||||
msgstr "Kirjaudu sisään"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:276
|
||||
#: ../js/gdm/loginDialog.js:281
|
||||
msgid "Choose Session"
|
||||
msgstr "Valitse istunto"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:417
|
||||
#. translators: this message is shown below the user list on the
|
||||
#. login screen. It can be activated to reveal an entry for
|
||||
#. manually entering the username.
|
||||
#: ../js/gdm/loginDialog.js:431
|
||||
msgid "Not listed?"
|
||||
msgstr "Ei luettelossa?"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:826
|
||||
#. Translators: this message is shown below the username entry field
|
||||
#. to clue the user in on how to login to the local network realm
|
||||
#: ../js/gdm/loginDialog.js:847
|
||||
#, javascript-format
|
||||
msgid "(e.g., user or %s)"
|
||||
msgstr "(esim. käyttäjä tai %s)"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:831 ../js/ui/components/networkAgent.js:269
|
||||
#: ../js/ui/components/networkAgent.js:287
|
||||
#. TTLS and PEAP are actually much more complicated, but this complication
|
||||
#. is not visible here since we only care about phase2 authentication
|
||||
#. (and don't even care of which one)
|
||||
#: ../js/gdm/loginDialog.js:852 ../js/ui/components/networkAgent.js:271
|
||||
#: ../js/ui/components/networkAgent.js:289
|
||||
msgid "Username: "
|
||||
msgstr "Käyttäjänimi: "
|
||||
|
||||
#: ../js/gdm/loginDialog.js:1166
|
||||
#: ../js/gdm/loginDialog.js:1181
|
||||
msgid "Login Window"
|
||||
msgstr "Kirjautumisikkuna"
|
||||
|
||||
@ -384,6 +389,11 @@ msgstr "Kirjautumisikkuna"
|
||||
msgid "Authentication error"
|
||||
msgstr "Tunnistautumisvirhe"
|
||||
|
||||
#. We don't show fingerprint messages directly since it's
|
||||
#. not the main auth service. Instead we use the messages
|
||||
#. as a cue to display our own message.
|
||||
#. Translators: this message is shown below the password entry field
|
||||
#. to indicate the user can swipe their finger instead
|
||||
#: ../js/gdm/util.js:473
|
||||
msgid "(or swipe finger)"
|
||||
msgstr "(tai pyyhkäise sormella)"
|
||||
@ -392,6 +402,8 @@ msgstr "(tai pyyhkäise sormella)"
|
||||
msgid "Command not found"
|
||||
msgstr "Komentoa ei löydy"
|
||||
|
||||
#. Replace "Error invoking GLib.shell_parse_argv: " with
|
||||
#. something nicer
|
||||
#: ../js/misc/util.js:152
|
||||
msgid "Could not parse command:"
|
||||
msgstr "Komentoa ei voi jäsentää:"
|
||||
@ -401,101 +413,107 @@ msgstr "Komentoa ei voi jäsentää:"
|
||||
msgid "Execution of “%s” failed:"
|
||||
msgstr "Kohteen ”%s” suorittaminen epäonnistui:"
|
||||
|
||||
#. Translators: Time in 24h format */
|
||||
#. Translators: Time in 24h format
|
||||
#: ../js/misc/util.js:191
|
||||
msgid "%H∶%M"
|
||||
msgstr "%H∶%M"
|
||||
|
||||
#. Translators: this is the word "Yesterday" followed by a
|
||||
#. time string in 24h format. i.e. "Yesterday, 14:30" */
|
||||
#. time string in 24h format. i.e. "Yesterday, 14:30"
|
||||
#: ../js/misc/util.js:197
|
||||
#, no-c-format
|
||||
msgid "Yesterday, %H∶%M"
|
||||
msgstr "Eilen, %H∶%M"
|
||||
|
||||
#. Translators: this is the week day name followed by a time
|
||||
#. string in 24h format. i.e. "Monday, 14:30" */
|
||||
#. string in 24h format. i.e. "Monday, 14:30"
|
||||
#: ../js/misc/util.js:203
|
||||
#, no-c-format
|
||||
msgid "%A, %H∶%M"
|
||||
msgstr "%A, %H∶%M"
|
||||
|
||||
#. Translators: this is the month name and day number
|
||||
#. followed by a time string in 24h format.
|
||||
#. i.e. "May 25, 14:30" */
|
||||
#. i.e. "May 25, 14:30"
|
||||
#: ../js/misc/util.js:209
|
||||
#, no-c-format
|
||||
msgid "%B %d, %H∶%M"
|
||||
msgstr "%e. %Bta, %H∶%M"
|
||||
|
||||
#. Translators: this is the month name, day number, year
|
||||
#. number followed by a time string in 24h format.
|
||||
#. i.e. "May 25 2012, 14:30" */
|
||||
#. i.e. "May 25 2012, 14:30"
|
||||
#: ../js/misc/util.js:215
|
||||
#, no-c-format
|
||||
msgid "%B %d %Y, %H∶%M"
|
||||
msgstr "%e. %Bta %Y, %H∶%M"
|
||||
|
||||
#. Translators: Time in 12h format */
|
||||
#. Translators: Time in 12h format
|
||||
#: ../js/misc/util.js:220
|
||||
msgid "%l∶%M %p"
|
||||
msgstr "%l∶%M %p"
|
||||
|
||||
#. Translators: this is the word "Yesterday" followed by a
|
||||
#. time string in 12h format. i.e. "Yesterday, 2:30 pm" */
|
||||
#. time string in 12h format. i.e. "Yesterday, 2:30 pm"
|
||||
#: ../js/misc/util.js:226
|
||||
#, no-c-format
|
||||
msgid "Yesterday, %l∶%M %p"
|
||||
msgstr "Eilen, %l∶%M %p"
|
||||
|
||||
#. Translators: this is the week day name followed by a time
|
||||
#. string in 12h format. i.e. "Monday, 2:30 pm" */
|
||||
#. string in 12h format. i.e. "Monday, 2:30 pm"
|
||||
#: ../js/misc/util.js:232
|
||||
#, no-c-format
|
||||
msgid "%A, %l∶%M %p"
|
||||
msgstr "%A, %l∶%M %p"
|
||||
|
||||
#. Translators: this is the month name and day number
|
||||
#. followed by a time string in 12h format.
|
||||
#. i.e. "May 25, 2:30 pm" */
|
||||
#. i.e. "May 25, 2:30 pm"
|
||||
#: ../js/misc/util.js:238
|
||||
#| msgid "%a %b %e, %l:%M %p"
|
||||
#, no-c-format
|
||||
msgid "%B %d, %l∶%M %p"
|
||||
msgstr "%B %d, %l∶%M %p"
|
||||
|
||||
#. Translators: this is the month name, day number, year
|
||||
#. number followed by a time string in 12h format.
|
||||
#. i.e. "May 25 2012, 2:30 pm"*/
|
||||
#. i.e. "May 25 2012, 2:30 pm"
|
||||
#: ../js/misc/util.js:244
|
||||
#| msgid "%a %b %e, %l:%M %p"
|
||||
#, no-c-format
|
||||
msgid "%B %d %Y, %l∶%M %p"
|
||||
msgstr "%B %d %Y, %l∶%M %p"
|
||||
|
||||
#. TRANSLATORS: this is the title of the wifi captive portal login
|
||||
#. * window, until we know the title of the actual login page */
|
||||
#. * window, until we know the title of the actual login page
|
||||
#: ../js/portalHelper/main.js:85
|
||||
msgid "Web Authentication Redirect"
|
||||
msgstr "Verkkotunnistautumisen uudelleenohjaus"
|
||||
|
||||
#: ../js/ui/appDisplay.js:791
|
||||
#: ../js/ui/appDisplay.js:794
|
||||
msgid "Frequently used applications will appear here"
|
||||
msgstr "Usein käytetyt sovellukset ilmestyvät tänne"
|
||||
|
||||
#: ../js/ui/appDisplay.js:911
|
||||
#: ../js/ui/appDisplay.js:914
|
||||
msgid "Frequent"
|
||||
msgstr "Käytetyimmät"
|
||||
|
||||
#: ../js/ui/appDisplay.js:918
|
||||
#: ../js/ui/appDisplay.js:921
|
||||
msgid "All"
|
||||
msgstr "Kaikki"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1849
|
||||
#: ../js/ui/appDisplay.js:1853
|
||||
msgid "New Window"
|
||||
msgstr "Uusi ikkuna"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1877 ../js/ui/dash.js:289
|
||||
#: ../js/ui/appDisplay.js:1881 ../js/ui/dash.js:289
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Poista suosikeista"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1883
|
||||
#: ../js/ui/appDisplay.js:1887
|
||||
msgid "Add to Favorites"
|
||||
msgstr "Lisää suosikkeihin"
|
||||
|
||||
#: ../js/ui/appDisplay.js:1893
|
||||
#: ../js/ui/appDisplay.js:1897
|
||||
msgid "Show Details"
|
||||
msgstr "Näytä tiedot"
|
||||
|
||||
@ -509,8 +527,8 @@ msgstr "%s on lisätty suosikkeihin."
|
||||
msgid "%s has been removed from your favorites."
|
||||
msgstr "%s on poistettu suosikeista."
|
||||
|
||||
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:649
|
||||
#: ../js/ui/status/system.js:337
|
||||
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:650
|
||||
#: ../js/ui/status/system.js:334
|
||||
msgid "Settings"
|
||||
msgstr "Asetukset"
|
||||
|
||||
@ -518,106 +536,105 @@ msgstr "Asetukset"
|
||||
msgid "Change Background…"
|
||||
msgstr "Muuta työpöydän taustaa…"
|
||||
|
||||
#. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). */
|
||||
#: ../js/ui/calendar.js:49
|
||||
#. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday).
|
||||
#: ../js/ui/calendar.js:53
|
||||
msgctxt "calendar-no-work"
|
||||
msgid "06"
|
||||
msgstr "06"
|
||||
|
||||
#. Translators: Shown in calendar event list for all day events
|
||||
#. * Keep it short, best if you can use less then 10 characters
|
||||
#. */
|
||||
#: ../js/ui/calendar.js:78
|
||||
msgctxt "event list time"
|
||||
msgid "All Day"
|
||||
msgstr "Koko päivä"
|
||||
|
||||
#. Translators: Calendar grid abbreviation for Sunday.
|
||||
#. *
|
||||
#. * NOTE: These grid abbreviations are always shown together
|
||||
#. * and in order, e.g. "S M T W T F S".
|
||||
#. */
|
||||
#: ../js/ui/calendar.js:93
|
||||
#.
|
||||
#: ../js/ui/calendar.js:82
|
||||
msgctxt "grid sunday"
|
||||
msgid "S"
|
||||
msgstr "S"
|
||||
|
||||
#. Translators: Calendar grid abbreviation for Monday */
|
||||
#: ../js/ui/calendar.js:95
|
||||
#. Translators: Calendar grid abbreviation for Monday
|
||||
#: ../js/ui/calendar.js:84
|
||||
msgctxt "grid monday"
|
||||
msgid "M"
|
||||
msgstr "M"
|
||||
|
||||
#. Translators: Calendar grid abbreviation for Tuesday */
|
||||
#: ../js/ui/calendar.js:97
|
||||
#. Translators: Calendar grid abbreviation for Tuesday
|
||||
#: ../js/ui/calendar.js:86
|
||||
msgctxt "grid tuesday"
|
||||
msgid "T"
|
||||
msgstr "T"
|
||||
|
||||
#. Translators: Calendar grid abbreviation for Wednesday */
|
||||
#: ../js/ui/calendar.js:99
|
||||
#. Translators: Calendar grid abbreviation for Wednesday
|
||||
#: ../js/ui/calendar.js:88
|
||||
msgctxt "grid wednesday"
|
||||
msgid "W"
|
||||
msgstr "K"
|
||||
|
||||
#. Translators: Calendar grid abbreviation for Thursday */
|
||||
#: ../js/ui/calendar.js:101
|
||||
#. Translators: Calendar grid abbreviation for Thursday
|
||||
#: ../js/ui/calendar.js:90
|
||||
msgctxt "grid thursday"
|
||||
msgid "T"
|
||||
msgstr "T"
|
||||
|
||||
#. Translators: Calendar grid abbreviation for Friday */
|
||||
#: ../js/ui/calendar.js:103
|
||||
#. Translators: Calendar grid abbreviation for Friday
|
||||
#: ../js/ui/calendar.js:92
|
||||
msgctxt "grid friday"
|
||||
msgid "F"
|
||||
msgstr "P"
|
||||
|
||||
#. Translators: Calendar grid abbreviation for Saturday */
|
||||
#: ../js/ui/calendar.js:105
|
||||
#. Translators: Calendar grid abbreviation for Saturday
|
||||
#: ../js/ui/calendar.js:94
|
||||
msgctxt "grid saturday"
|
||||
msgid "S"
|
||||
msgstr "L"
|
||||
|
||||
#: ../js/ui/calendar.js:572
|
||||
#: ../js/ui/calendar.js:564
|
||||
msgid "Previous month"
|
||||
msgstr "Edellinen kuukausi"
|
||||
|
||||
#: ../js/ui/calendar.js:582
|
||||
#: ../js/ui/calendar.js:574
|
||||
msgid "Next month"
|
||||
msgstr "Seuraava kuukausi"
|
||||
|
||||
#: ../js/ui/calendar.js:789
|
||||
#: ../js/ui/calendar.js:781
|
||||
msgid "Week %V"
|
||||
msgstr "Viikko %V"
|
||||
|
||||
#: ../js/ui/calendar.js:1245
|
||||
#. Translators: Shown in calendar event list for all day events
|
||||
#. * Keep it short, best if you can use less then 10 characters
|
||||
#.
|
||||
#: ../js/ui/calendar.js:1187
|
||||
msgctxt "event list time"
|
||||
msgid "All Day"
|
||||
msgstr "Koko päivä"
|
||||
|
||||
#: ../js/ui/calendar.js:1289
|
||||
msgid "Clear section"
|
||||
msgstr "Tyhjennä osio"
|
||||
|
||||
#: ../js/ui/calendar.js:1437
|
||||
#: ../js/ui/calendar.js:1516
|
||||
msgid "Events"
|
||||
msgstr "Tapahtumat"
|
||||
|
||||
#: ../js/ui/calendar.js:1445
|
||||
#: ../js/ui/calendar.js:1525
|
||||
msgctxt "calendar heading"
|
||||
msgid "%A, %B %d"
|
||||
msgstr "%A, %e. %Bta"
|
||||
|
||||
#: ../js/ui/calendar.js:1449
|
||||
#: ../js/ui/calendar.js:1529
|
||||
msgctxt "calendar heading"
|
||||
msgid "%A, %B %d, %Y"
|
||||
msgstr "%A, %e. %Bta %Y"
|
||||
|
||||
#: ../js/ui/calendar.js:1541
|
||||
#: ../js/ui/calendar.js:1614
|
||||
msgid "Notifications"
|
||||
msgstr "Ilmoitukset"
|
||||
|
||||
#: ../js/ui/calendar.js:1681
|
||||
#| msgid "Notifications"
|
||||
#: ../js/ui/calendar.js:1765
|
||||
msgid "No Notifications"
|
||||
msgstr "Ei ilmoituksia"
|
||||
|
||||
#: ../js/ui/calendar.js:1684
|
||||
#: ../js/ui/calendar.js:1768
|
||||
msgid "No Events"
|
||||
msgstr "Ei tapahtumia"
|
||||
|
||||
@ -642,79 +659,95 @@ msgstr "Salasana:"
|
||||
msgid "Type again:"
|
||||
msgstr "Uudelleen:"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:138 ../js/ui/status/network.js:277
|
||||
#: ../js/ui/components/networkAgent.js:140 ../js/ui/status/network.js:277
|
||||
#: ../js/ui/status/network.js:359 ../js/ui/status/network.js:919
|
||||
msgid "Connect"
|
||||
msgstr "Yhdistä"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:231
|
||||
#: ../js/ui/components/networkAgent.js:243
|
||||
#: ../js/ui/components/networkAgent.js:271
|
||||
#: ../js/ui/components/networkAgent.js:291
|
||||
#: ../js/ui/components/networkAgent.js:301
|
||||
#. Cisco LEAP
|
||||
#: ../js/ui/components/networkAgent.js:233
|
||||
#: ../js/ui/components/networkAgent.js:245
|
||||
#: ../js/ui/components/networkAgent.js:273
|
||||
#: ../js/ui/components/networkAgent.js:293
|
||||
#: ../js/ui/components/networkAgent.js:303
|
||||
msgid "Password: "
|
||||
msgstr "Salasana: "
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:236
|
||||
#. static WEP
|
||||
#: ../js/ui/components/networkAgent.js:238
|
||||
msgid "Key: "
|
||||
msgstr "Avain: "
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:275
|
||||
#: ../js/ui/components/networkAgent.js:277
|
||||
msgid "Identity: "
|
||||
msgstr "Henkilöllisyys: "
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:277
|
||||
#: ../js/ui/components/networkAgent.js:279
|
||||
msgid "Private key password: "
|
||||
msgstr "Salaisen avaimen salasana: "
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:289
|
||||
#: ../js/ui/components/networkAgent.js:291
|
||||
msgid "Service: "
|
||||
msgstr "Palvelu: "
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:318
|
||||
#: ../js/ui/components/networkAgent.js:320
|
||||
#: ../js/ui/components/networkAgent.js:658
|
||||
msgid "Authentication required by wireless network"
|
||||
msgstr "Langaton verkko vaatii tunnistautumisen"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:319
|
||||
#: ../js/ui/components/networkAgent.js:321
|
||||
#: ../js/ui/components/networkAgent.js:659
|
||||
#, javascript-format
|
||||
msgid ""
|
||||
"Passwords or encryption keys are required to access the wireless network "
|
||||
"“%s”."
|
||||
msgstr "Langaton verkko \"%s\" vaatii salasanan tai salausavaimia."
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:323
|
||||
#: ../js/ui/components/networkAgent.js:325
|
||||
#: ../js/ui/components/networkAgent.js:662
|
||||
msgid "Wired 802.1X authentication"
|
||||
msgstr "Kiinteän 802.1X-yhteyden tunnistautuminen"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:325
|
||||
#: ../js/ui/components/networkAgent.js:327
|
||||
msgid "Network name: "
|
||||
msgstr "Verkon nimi: "
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:330
|
||||
#: ../js/ui/components/networkAgent.js:332
|
||||
#: ../js/ui/components/networkAgent.js:666
|
||||
msgid "DSL authentication"
|
||||
msgstr "DSL-tunnistautuminen"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:337
|
||||
#: ../js/ui/components/networkAgent.js:339
|
||||
#: ../js/ui/components/networkAgent.js:672
|
||||
msgid "PIN code required"
|
||||
msgstr "PIN-koodi vaaditaan"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:338
|
||||
#: ../js/ui/components/networkAgent.js:340
|
||||
#: ../js/ui/components/networkAgent.js:673
|
||||
msgid "PIN code is needed for the mobile broadband device"
|
||||
msgstr "Mobiililaajakaista vaatii PIN-koodin"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:339
|
||||
#: ../js/ui/components/networkAgent.js:341
|
||||
msgid "PIN: "
|
||||
msgstr "PIN: "
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:345
|
||||
#: ../js/ui/components/networkAgent.js:348
|
||||
#: ../js/ui/components/networkAgent.js:679
|
||||
msgid "Mobile broadband network password"
|
||||
msgstr "Mobiililaajakaistan verkkosalasana"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:346
|
||||
#: ../js/ui/components/networkAgent.js:349
|
||||
#: ../js/ui/components/networkAgent.js:663
|
||||
#: ../js/ui/components/networkAgent.js:667
|
||||
#: ../js/ui/components/networkAgent.js:680
|
||||
#, javascript-format
|
||||
msgid "A password is required to connect to “%s”."
|
||||
msgstr "Salasana vaaditaan kohteeseen \"%s\" yhdistämiseksi."
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:647 ../js/ui/status/network.js:1657
|
||||
msgid "Network Manager"
|
||||
msgstr "Verkon hallinta"
|
||||
|
||||
#: ../js/ui/components/polkitAgent.js:54
|
||||
msgid "Authentication Required"
|
||||
msgstr "Tunnistautuminen vaaditaan"
|
||||
@ -730,14 +763,14 @@ msgstr "Tunnistaudu"
|
||||
#. Translators: "that didn't work" refers to the fact that the
|
||||
#. * requested authentication was not gained; this can happen
|
||||
#. * because of an authentication error (like invalid password),
|
||||
#. * for instance. */
|
||||
#. * for instance.
|
||||
#: ../js/ui/components/polkitAgent.js:271 ../js/ui/shellMountOperation.js:383
|
||||
msgid "Sorry, that didn't work. Please try again."
|
||||
msgstr "Tunnistautuminen epäonnistui. Yritä uudelleen."
|
||||
|
||||
#. Translators: this is the other person changing their old IM name to their new
|
||||
#. IM name. */
|
||||
#: ../js/ui/components/telepathyClient.js:772
|
||||
#. IM name.
|
||||
#: ../js/ui/components/telepathyClient.js:757
|
||||
#, javascript-format
|
||||
msgid "%s is now known as %s"
|
||||
msgstr "%s on nyt nimeltään %s"
|
||||
@ -750,24 +783,24 @@ msgstr "Ikkunat"
|
||||
msgid "Show Applications"
|
||||
msgstr "Näytä sovellukset"
|
||||
|
||||
#: ../js/ui/dash.js:451
|
||||
#. Translators: this is the name of the dock/favorites area on
|
||||
#. the left of the overview
|
||||
#: ../js/ui/dash.js:449
|
||||
msgid "Dash"
|
||||
msgstr "Pikavalikko"
|
||||
|
||||
#. Translators: This is the date format to use when the calendar popup is
|
||||
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
|
||||
#. */
|
||||
#.
|
||||
#: ../js/ui/dateMenu.js:73
|
||||
#| msgid "%A %B %e, %Y"
|
||||
msgid "%B %e %Y"
|
||||
msgstr "%e. %b %Y"
|
||||
|
||||
#. Translators: This is the accessible name of the date button shown
|
||||
#. * below the time in the shell; it should combine the weekday and the
|
||||
#. * date, e.g. "Tuesday February 17 2015".
|
||||
#. */
|
||||
#.
|
||||
#: ../js/ui/dateMenu.js:80
|
||||
#| msgid "%A %B %e, %Y"
|
||||
msgid "%A %B %e %Y"
|
||||
msgstr "%A, %e. %Bta %Y"
|
||||
|
||||
@ -776,7 +809,6 @@ msgid "Add world clocks…"
|
||||
msgstr "Lisää maailmankelloja…"
|
||||
|
||||
#: ../js/ui/dateMenu.js:161
|
||||
#| msgid "Open Clocks"
|
||||
msgid "World Clocks"
|
||||
msgstr "Maailmankellot"
|
||||
|
||||
@ -902,13 +934,13 @@ msgstr ""
|
||||
msgid "Other users are logged in."
|
||||
msgstr "Muita käyttäjiä on kirjautuneena."
|
||||
|
||||
#. Translators: Remote here refers to a remote session, like a ssh login */
|
||||
#. Translators: Remote here refers to a remote session, like a ssh login
|
||||
#: ../js/ui/endSessionDialog.js:640
|
||||
#, javascript-format
|
||||
msgid "%s (remote)"
|
||||
msgstr "%s (etä)"
|
||||
|
||||
#. Translators: Console here refers to a tty like a VT console */
|
||||
#. Translators: Console here refers to a tty like a VT console
|
||||
#: ../js/ui/endSessionDialog.js:643
|
||||
#, javascript-format
|
||||
msgid "%s (console)"
|
||||
@ -923,15 +955,25 @@ msgstr "Asenna"
|
||||
msgid "Download and install “%s” from extensions.gnome.org?"
|
||||
msgstr "Ladataanko ja asennetaanko ”%s” sivustolta extensions.gnome.org?"
|
||||
|
||||
#: ../js/ui/keyboard.js:706 ../js/ui/status/keyboard.js:576
|
||||
#: ../js/ui/keyboard.js:741 ../js/ui/status/keyboard.js:713
|
||||
msgid "Keyboard"
|
||||
msgstr "Näppäimistö"
|
||||
|
||||
#. translators: 'Hide' is a verb
|
||||
#: ../js/ui/legacyTray.js:66
|
||||
#| msgid "Hide Text"
|
||||
msgid "Hide tray"
|
||||
msgstr "Piilota palkki"
|
||||
|
||||
#: ../js/ui/legacyTray.js:107
|
||||
msgid "Status Icons"
|
||||
msgstr "Tilakuvakkeet"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:643
|
||||
msgid "No extensions installed"
|
||||
msgstr "Laajennuksia ei asennettu"
|
||||
|
||||
#. Translators: argument is an extension UUID. */
|
||||
#. Translators: argument is an extension UUID.
|
||||
#: ../js/ui/lookingGlass.js:697
|
||||
#, javascript-format
|
||||
msgid "%s has not emitted any errors."
|
||||
@ -951,7 +993,7 @@ msgid "Enabled"
|
||||
msgstr "Käytössä"
|
||||
|
||||
#. Translators: this is for a network device that cannot be activated
|
||||
#. because it's disabled by rfkill (airplane mode) */
|
||||
#. because it's disabled by rfkill (airplane mode)
|
||||
#. translators:
|
||||
#. * The device has been disabled
|
||||
#: ../js/ui/lookingGlass.js:719 ../js/ui/status/location.js:179
|
||||
@ -979,7 +1021,7 @@ msgstr "Näytä lähde"
|
||||
msgid "Web Page"
|
||||
msgstr "Verkkosivusto"
|
||||
|
||||
#: ../js/ui/messageTray.js:2131
|
||||
#: ../js/ui/messageTray.js:1506
|
||||
msgid "System Information"
|
||||
msgstr "Järjestelmän tiedot"
|
||||
|
||||
@ -994,26 +1036,31 @@ msgstr "Yleisnäkymä"
|
||||
#. Translators: this is the text displayed
|
||||
#. in the search entry when no search is
|
||||
#. active; it should not exceed ~30
|
||||
#. characters. */
|
||||
#. characters.
|
||||
#: ../js/ui/overview.js:246
|
||||
msgid "Type to search…"
|
||||
msgstr "Kirjoita hakeaksesi…"
|
||||
|
||||
#: ../js/ui/panel.js:351
|
||||
#: ../js/ui/panel.js:352
|
||||
msgid "Quit"
|
||||
msgstr "Lopeta"
|
||||
|
||||
#. Translators: If there is no suitable word for "Activities"
|
||||
#. in your language, you can use the word for "Overview". */
|
||||
#: ../js/ui/panel.js:403
|
||||
#. in your language, you can use the word for "Overview".
|
||||
#: ../js/ui/panel.js:404
|
||||
msgid "Activities"
|
||||
msgstr "Toiminnot"
|
||||
|
||||
#: ../js/ui/panel.js:754
|
||||
#: ../js/ui/panel.js:755
|
||||
msgid "Top Bar"
|
||||
msgstr "Yläpalkki"
|
||||
|
||||
#: ../js/ui/popupMenu.js:288
|
||||
#. Translators: this MUST be either "toggle-switch-us"
|
||||
#. (for toggle switches containing the English words
|
||||
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
||||
#. switches containing "◯" and "|"). Other values will
|
||||
#. simply result in invisible toggle switches.
|
||||
#: ../js/ui/popupMenu.js:289
|
||||
msgid "toggle-switch-us"
|
||||
msgstr "toggle-switch-intl"
|
||||
|
||||
@ -1030,7 +1077,7 @@ msgid "Restarting…"
|
||||
msgstr "Käynnistetään uudelleen…"
|
||||
|
||||
#. Translators: This is a time format for a date in
|
||||
#. long format */
|
||||
#. long format
|
||||
#: ../js/ui/screenShield.js:85
|
||||
msgid "%A, %B %d"
|
||||
msgstr "%A, %e. %Bta"
|
||||
@ -1049,27 +1096,34 @@ msgid_plural "%d new notifications"
|
||||
msgstr[0] "%d uusi ilmoitus"
|
||||
msgstr[1] "%d uutta ilmoitusta"
|
||||
|
||||
#: ../js/ui/screenShield.js:432 ../js/ui/status/system.js:345
|
||||
#: ../js/ui/screenShield.js:432 ../js/ui/status/system.js:342
|
||||
msgid "Lock"
|
||||
msgstr "Lukitse"
|
||||
|
||||
#: ../js/ui/screenShield.js:668
|
||||
#: ../js/ui/screenShield.js:684
|
||||
msgid "GNOME needs to lock the screen"
|
||||
msgstr "Gnomen täytyy lukita näyttö"
|
||||
|
||||
#: ../js/ui/screenShield.js:795 ../js/ui/screenShield.js:1271
|
||||
#. We could not become modal, so we can't activate the
|
||||
#. screenshield. The user is probably very upset at this
|
||||
#. point, but any application using global grabs is broken
|
||||
#. Just tell him to stop using this app
|
||||
#.
|
||||
#. XXX: another option is to kick the user into the gdm login
|
||||
#. screen, where we're not affected by grabs
|
||||
#: ../js/ui/screenShield.js:805 ../js/ui/screenShield.js:1271
|
||||
msgid "Unable to lock"
|
||||
msgstr "Lukitus epäonnistui"
|
||||
|
||||
#: ../js/ui/screenShield.js:796 ../js/ui/screenShield.js:1272
|
||||
#: ../js/ui/screenShield.js:806 ../js/ui/screenShield.js:1272
|
||||
msgid "Lock was blocked by an application"
|
||||
msgstr "Lukitus estettiin sovelluksen toimesta"
|
||||
|
||||
#: ../js/ui/search.js:609
|
||||
#: ../js/ui/search.js:617
|
||||
msgid "Searching…"
|
||||
msgstr "Etsitään…"
|
||||
|
||||
#: ../js/ui/search.js:611
|
||||
#: ../js/ui/search.js:619
|
||||
msgid "No results."
|
||||
msgstr "Ei tuloksia."
|
||||
|
||||
@ -1133,14 +1187,16 @@ msgstr "Kimmonäppäimet"
|
||||
msgid "Mouse Keys"
|
||||
msgstr "Hiirinäppäimet"
|
||||
|
||||
#: ../js/ui/status/accessibility.js:144
|
||||
#: ../js/ui/status/accessibility.js:167
|
||||
msgid "High Contrast"
|
||||
msgstr "Korkea kontrasti"
|
||||
|
||||
#: ../js/ui/status/accessibility.js:193
|
||||
#: ../js/ui/status/accessibility.js:202
|
||||
msgid "Large Text"
|
||||
msgstr "Suuri tekstin koko"
|
||||
|
||||
#. The Bluetooth menu only appears when Bluetooth is in use,
|
||||
#. so just statically build it with a "Turn Off" menu item.
|
||||
#: ../js/ui/status/bluetooth.js:49
|
||||
msgid "Bluetooth"
|
||||
msgstr "Bluetooth"
|
||||
@ -1171,7 +1227,7 @@ msgstr "Ei yhdistetty"
|
||||
msgid "Brightness"
|
||||
msgstr "Kirkkaus"
|
||||
|
||||
#: ../js/ui/status/keyboard.js:599
|
||||
#: ../js/ui/status/keyboard.js:736
|
||||
msgid "Show Keyboard Layout"
|
||||
msgstr "Näytä näppäimistön asettelu"
|
||||
|
||||
@ -1209,7 +1265,7 @@ msgid "Connected"
|
||||
msgstr "Yhdistetty"
|
||||
|
||||
#. Translators: this is for network devices that are physically present but are not
|
||||
#. under NetworkManager's control (and thus cannot be used in the menu) */
|
||||
#. under NetworkManager's control (and thus cannot be used in the menu)
|
||||
#: ../js/ui/status/network.js:463
|
||||
msgid "Unmanaged"
|
||||
msgstr "Ei hallinnassa"
|
||||
@ -1222,19 +1278,19 @@ msgstr "Katkaistaan yhteyttä"
|
||||
msgid "Connecting"
|
||||
msgstr "Yhdistetään"
|
||||
|
||||
#. Translators: this is for network connections that require some kind of key or password */
|
||||
#. Translators: this is for network connections that require some kind of key or password
|
||||
#: ../js/ui/status/network.js:474
|
||||
msgid "Authentication required"
|
||||
msgstr "tunnistautuminen vaaditaan"
|
||||
|
||||
#. Translators: this is for devices that require some kind of firmware or kernel
|
||||
#. module, which is missing */
|
||||
#. module, which is missing
|
||||
#: ../js/ui/status/network.js:482
|
||||
msgid "Firmware missing"
|
||||
msgstr "Laiteohjelmisto puuttuu"
|
||||
|
||||
#. Translators: this is for a network device that cannot be activated (for example it
|
||||
#. is disabled by rfkill, or it has no coverage */
|
||||
#. is disabled by rfkill, or it has no coverage
|
||||
#: ../js/ui/status/network.js:486
|
||||
msgid "Unavailable"
|
||||
msgstr "Ei tavoitettavissa"
|
||||
@ -1319,7 +1375,7 @@ msgstr "Yhteyspiste aktiivisena"
|
||||
msgid "connecting..."
|
||||
msgstr "yhdistetään…"
|
||||
|
||||
#. Translators: this is for network connections that require some kind of key or password */
|
||||
#. Translators: this is for network connections that require some kind of key or password
|
||||
#: ../js/ui/status/network.js:1413
|
||||
msgid "authentication required"
|
||||
msgstr "tunnistautuminen vaaditaan"
|
||||
@ -1340,10 +1396,6 @@ msgstr "VPN-asetukset"
|
||||
msgid "VPN"
|
||||
msgstr "VPN"
|
||||
|
||||
#: ../js/ui/status/network.js:1657
|
||||
msgid "Network Manager"
|
||||
msgstr "Verkon hallinta"
|
||||
|
||||
#: ../js/ui/status/network.js:1697
|
||||
msgid "Activation of network connection failed"
|
||||
msgstr "Verkkoyhteyden aktivointi epäonnistui"
|
||||
@ -1356,15 +1408,19 @@ msgstr "Virranhallinta"
|
||||
msgid "Fully Charged"
|
||||
msgstr "Ladattu täyteen"
|
||||
|
||||
#. 0 is reported when UPower does not have enough data
|
||||
#. to estimate battery life
|
||||
#: ../js/ui/status/power.js:72 ../js/ui/status/power.js:78
|
||||
msgid "Estimating…"
|
||||
msgstr "Arvioidaan…"
|
||||
|
||||
#. Translators: this is <hours>:<minutes> Remaining (<percentage>)
|
||||
#: ../js/ui/status/power.js:86
|
||||
#, javascript-format
|
||||
msgid "%d∶%02d Remaining (%d%%)"
|
||||
msgstr "%d∶%02d jäljellä (%d%%)"
|
||||
|
||||
#. Translators: this is <hours>:<minutes> Until Full (<percentage>)
|
||||
#: ../js/ui/status/power.js:91
|
||||
#, javascript-format
|
||||
msgid "%d∶%02d Until Full (%d%%)"
|
||||
@ -1378,6 +1434,9 @@ msgstr "UPS"
|
||||
msgid "Battery"
|
||||
msgstr "Akku"
|
||||
|
||||
#. The menu only appears when airplane mode is on, so just
|
||||
#. statically build it as if it was on, rather than dynamically
|
||||
#. changing the menu contents.
|
||||
#: ../js/ui/status/rfkill.js:88
|
||||
msgid "Airplane Mode"
|
||||
msgstr "Lentokonetila"
|
||||
@ -1386,23 +1445,23 @@ msgstr "Lentokonetila"
|
||||
msgid "On"
|
||||
msgstr "Päällä"
|
||||
|
||||
#: ../js/ui/status/system.js:317
|
||||
#: ../js/ui/status/system.js:314
|
||||
msgid "Switch User"
|
||||
msgstr "Vaihda käyttäjää"
|
||||
|
||||
#: ../js/ui/status/system.js:322
|
||||
#: ../js/ui/status/system.js:319
|
||||
msgid "Log Out"
|
||||
msgstr "Kirjaudu ulos"
|
||||
|
||||
#: ../js/ui/status/system.js:341
|
||||
#: ../js/ui/status/system.js:338
|
||||
msgid "Orientation Lock"
|
||||
msgstr "Kiertolukitus"
|
||||
|
||||
#: ../js/ui/status/system.js:349
|
||||
#: ../js/ui/status/system.js:346
|
||||
msgid "Suspend"
|
||||
msgstr "Valmiustila"
|
||||
|
||||
#: ../js/ui/status/system.js:352
|
||||
#: ../js/ui/status/system.js:349
|
||||
msgid "Power Off"
|
||||
msgstr "Sammuta"
|
||||
|
||||
@ -1445,7 +1504,7 @@ msgstr "Haluatko säilyttää nämä näyttöasetukset?"
|
||||
|
||||
#. Translators: this and the following message should be limited in lenght,
|
||||
#. to avoid ellipsizing the labels.
|
||||
#. */
|
||||
#.
|
||||
#: ../js/ui/windowManager.js:84
|
||||
msgid "Revert Settings"
|
||||
msgstr "Palauta asetukset"
|
||||
@ -1462,8 +1521,8 @@ msgstr[0] "Asetusmuutokset palautetaan %d sekunnissa"
|
||||
msgstr[1] "Asetusmuutokset palautetaan %d sekunnissa"
|
||||
|
||||
#. Translators: This represents the size of a window. The first number is
|
||||
#. * the width of the window and the second is the height. */
|
||||
#: ../js/ui/windowManager.js:599
|
||||
#. * the width of the window and the second is the height.
|
||||
#: ../js/ui/windowManager.js:613
|
||||
#, javascript-format
|
||||
msgid "%d x %d"
|
||||
msgstr "%d x %d"
|
||||
@ -1534,28 +1593,28 @@ msgstr[1] "%u sisääntuloa"
|
||||
msgid "System Sounds"
|
||||
msgstr "Järjestelmän äänet"
|
||||
|
||||
#: ../src/main.c:373
|
||||
#: ../src/main.c:372
|
||||
msgid "Print version"
|
||||
msgstr "Tulosta versio"
|
||||
|
||||
#: ../src/main.c:379
|
||||
#: ../src/main.c:378
|
||||
msgid "Mode used by GDM for login screen"
|
||||
msgstr "GDM:n kirjautumisruudussa käyttämä tila"
|
||||
|
||||
#: ../src/main.c:385
|
||||
#: ../src/main.c:384
|
||||
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/main.c:391
|
||||
#: ../src/main.c:390
|
||||
msgid "List possible modes"
|
||||
msgstr "Listaa mahdolliset tilat"
|
||||
|
||||
#: ../src/shell-app.c:247
|
||||
#: ../src/shell-app.c:239
|
||||
msgctxt "program"
|
||||
msgid "Unknown"
|
||||
msgstr "Tuntematon"
|
||||
|
||||
#: ../src/shell-app.c:488
|
||||
#: ../src/shell-app.c:480
|
||||
#, c-format
|
||||
msgid "Failed to launch “%s”"
|
||||
msgstr "Sovelluksen ”%s” käynnistäminen epäonnistui"
|
||||
|
@ -181,7 +181,6 @@ shell_prefs_init (void)
|
||||
|
||||
g_object_get (G_OBJECT (settings), "schema-id", &schema_id, NULL);
|
||||
|
||||
keys = g_settings_list_keys (settings);
|
||||
for (keys = k = g_settings_list_keys (settings); *k; k++)
|
||||
meta_prefs_override_preference_schema (*k, schema_id);
|
||||
|
||||
|
@ -83,12 +83,18 @@ scan_startup_wm_class_to_id (ShellAppSystem *self)
|
||||
for (l = apps; l != NULL; l = l->next)
|
||||
{
|
||||
GAppInfo *info = l->data;
|
||||
const char *startup_wm_class, *id;
|
||||
const char *startup_wm_class, *id, *old_id;
|
||||
|
||||
id = g_app_info_get_id (info);
|
||||
startup_wm_class = g_desktop_app_info_get_startup_wm_class (G_DESKTOP_APP_INFO (info));
|
||||
|
||||
if (startup_wm_class != NULL)
|
||||
if (startup_wm_class == NULL)
|
||||
continue;
|
||||
|
||||
/* In case multiple .desktop files set the same StartupWMClass, prefer
|
||||
* the one where ID and StartupWMClass match */
|
||||
old_id = g_hash_table_lookup (priv->startup_wm_class_to_id, startup_wm_class);
|
||||
if (old_id == NULL || strcmp (id, startup_wm_class) == 0)
|
||||
g_hash_table_insert (priv->startup_wm_class_to_id,
|
||||
g_strdup (startup_wm_class), g_strdup (id));
|
||||
}
|
||||
@ -377,3 +383,28 @@ shell_app_system_get_running (ShellAppSystem *self)
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* shell_app_system_search:
|
||||
* @search_string: the search string to use
|
||||
*
|
||||
* Wrapper around g_desktop_app_info_search() that replaces results that
|
||||
* don't validate as UTF-8 with the empty string.
|
||||
*
|
||||
* Returns: (array zero-terminated=1) (element-type GStrv) (transfer full): a
|
||||
* list of strvs. Free each item with g_strfreev() and free the outer
|
||||
* list with g_free().
|
||||
*/
|
||||
char ***
|
||||
shell_app_system_search (const char *search_string)
|
||||
{
|
||||
char ***results = g_desktop_app_info_search (search_string);
|
||||
char ***groups, **ids;
|
||||
|
||||
for (groups = results; *groups; groups++)
|
||||
for (ids = *groups; *ids; ids++)
|
||||
if (!g_utf8_validate (*ids, -1, NULL))
|
||||
**ids = '\0';
|
||||
|
||||
return results;
|
||||
}
|
||||
|
@ -48,5 +48,6 @@ ShellApp *shell_app_system_lookup_desktop_wmclass (ShellAppSystem *s
|
||||
const char *wmclass);
|
||||
|
||||
GSList *shell_app_system_get_running (ShellAppSystem *self);
|
||||
char ***shell_app_system_search (const char *search_string);
|
||||
|
||||
#endif /* __SHELL_APP_SYSTEM_H__ */
|
||||
|
@ -144,8 +144,6 @@ st_generic_accessible_class_init (StGenericAccessibleClass *klass)
|
||||
* Emitted when atk_value_set_current_value() is called on
|
||||
* @self. Right now we only care about doubles, so the value is
|
||||
* directly returned by the signal.
|
||||
*
|
||||
* Return value: value of the current element.
|
||||
*/
|
||||
st_generic_accessible_signals[SET_CURRENT_VALUE] =
|
||||
g_signal_new ("set-current-value",
|
||||
|
Reference in New Issue
Block a user