Compare commits

...

25 commits
0.11.1 ... main

Author SHA1 Message Date
Philip Withnall 7c615a46b9 Merge branch 'hide-private-structs' into 'main'
build: Hide private structs from generated GIR files

See merge request pwithnall/malcontent!163
2023-12-20 11:04:46 +00:00
Philip Withnall 8ca426f631 build: Hide private structs from generated GIR files
Otherwise the fields in `MctAppFilter` become visible to introspected
languages, which was not the intention.

Spotted in
https://gitlab.freedesktop.org/pwithnall/malcontent/-/issues/65.

Signed-off-by: Philip Withnall <pwithnall@gnome.org>
2023-12-20 11:02:43 +00:00
Philip Withnall de7a645548 Merge branch 'sathieu-main-patch-63945' into 'main'
Add AppInfo support to malcontent-client check-app-filter

See merge request pwithnall/malcontent!157
2023-12-07 10:10:53 +00:00
Mathieu Parent cdaa32ae4e Add AppInfo support to malcontent-client check-app-filter 2023-12-07 10:10:53 +00:00
Philip Withnall a7e6f0e973 Merge branch 'fix-appdata' into 'main'
data: Update appdata

See merge request pwithnall/malcontent!162
2023-11-21 09:42:49 +00:00
Sabri Ünal 6c561cd93c data: Update appdata
- Update the donation URL.
- Add the cvs-browser URL.

These URLs are visible on Flathub and GNOME Software.

For more information: https://www.freedesktop.org/software/appstream/docs/chap-Metadata.html#tag-url"
2023-11-20 04:18:08 +03:00
Philip Withnall 4508c2ca1d Merge branch 'l10n-sv' into 'main'
Update Swedish translation

See merge request pwithnall/malcontent!161
2023-11-13 12:04:01 +00:00
Anders Jonsson 8d7b560795 Update Swedish translation 2023-11-11 14:11:07 +01:00
Philip Withnall 5bb3c24b08 Merge branch 'main' into 'main'
update ru.po

See merge request pwithnall/malcontent!160
2023-11-01 15:08:46 +00:00
Ser82-png 086b0ede78 update ru.po 2023-10-29 01:04:15 +10:00
Philip Withnall b3e6666fe3 Merge branch 'cs-update' into 'main'
Update Czech translation

See merge request pwithnall/malcontent!159
2023-10-24 10:04:15 +00:00
AsciiWolf c11596e3da Update Czech translation 2023-10-23 23:04:48 +02:00
Philip Withnall c764487abf Merge branch '53-carousel-focus' into 'main'
ui: Add explicit focus outline to carousel items

Closes #53

See merge request pwithnall/malcontent!156
2023-10-13 13:58:45 +00:00
Philip Withnall 51bd3a668d ui: Add explicit focus outline to carousel items
Since they’re custom widgets, they need custom CSS to define a focus
outline, and can’t rely on GTK providing it for them.

Ideally we’d be using the same `$focus_border_color` as GTK does, and
adjusting it for dark and high-contrast themes, but GTK doesn’t export
that colour so we have to work around it.

Signed-off-by: Philip Withnall <pwithnall@endlessos.org>

Fixes: #53
2023-10-13 14:51:25 +01:00
Philip Withnall cbad81565e Merge branch '31-app-list-search' into 'main'
restrict-applications-dialog: Add support for searching the app list

Closes #31

See merge request pwithnall/malcontent!155
2023-10-13 12:31:20 +00:00
Philip Withnall 73d8343a3e restrict-applications-dialog: Add support for searching the app list
This is a type-ahead search which filters the app list by app name.

It’s always visible because search is a very obvious interaction the
user might want to do to find an app in the app list. That’s why
`GtkSearchBar` is not being used here.

Signed-off-by: Philip Withnall <pwithnall@endlessos.org>

Fixes: #31
2023-10-13 13:24:37 +01:00
Philip Withnall 69253a2b2c build: Post-release version bump
We’re about to add new API, so bump the version number in preparation.

Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
2023-10-13 11:34:29 +01:00
Philip Withnall 4a1cc8a830 user-controls: Fix a minor string leak
Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
2023-10-13 11:32:13 +01:00
Philip Withnall a58c660dca restrict-applications-selector: Add more spacing around placeholder label
This makes it look nicer.

Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
2023-10-13 11:25:48 +01:00
Philip Withnall 13c8a88e17 restrict-applications-selector: Fix display of placeholder
The `GtkListBox` already correctly works out when to show/hide the
placeholder; we don’t need to do that ourselves. It actually breaks
things if we hide the placeholder, since `GtkListBox` then doesn’t
re-show it.

Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
2023-10-13 11:24:50 +01:00
Philip Withnall 537d4bf791 restrict-applications-selector: Move GListStore to UI file
This simplifies the code a little and will allow binding to it in an
upcoming commit.

It introduces no functional changes.

Signed-off-by: Philip Withnall <pwithnall@endlessos.org>

Helps: #31
2023-10-13 11:23:31 +01:00
Philip Withnall d4951a333f Merge branch '56-string-tweak' into 'main'
user-controls: Tweak a string to improve understandability

Closes #56

See merge request pwithnall/malcontent!154
2023-10-12 13:39:46 +00:00
Philip Withnall f763d71cd2 user-controls: Tweak a string to improve understandability
Signed-off-by: Philip Withnall <pwithnall@endlessos.org>

Fixes: #56
2023-10-12 11:48:30 +01:00
Philip Withnall 2f67afec78 Merge branch 'update_pt_BR' into 'main'
Update pt_BR translation

See merge request pwithnall/malcontent!153
2023-07-20 12:33:22 +00:00
Matheus Polkorny b4c6e9d8ef Update pt_BR translation 2023-07-07 23:34:31 +00:00
18 changed files with 413 additions and 311 deletions

View file

@ -55,11 +55,18 @@ struct _MctRestrictApplicationsDialog
MctRestrictApplicationsSelector *selector;
AdwPreferencesGroup *group;
GtkSearchEntry *search_entry;
MctAppFilter *app_filter; /* (owned) (not nullable) */
gchar *user_display_name; /* (owned) (nullable) */
};
static void search_entry_stop_search_cb (GtkSearchEntry *search_entry,
gpointer user_data);
static gboolean focus_search_cb (GtkWidget *widget,
GVariant *arguments,
gpointer user_data);
G_DEFINE_TYPE (MctRestrictApplicationsDialog, mct_restrict_applications_dialog, ADW_TYPE_PREFERENCES_WINDOW)
typedef enum
@ -140,6 +147,19 @@ mct_restrict_applications_dialog_dispose (GObject *object)
G_OBJECT_CLASS (mct_restrict_applications_dialog_parent_class)->dispose (object);
}
static void
mct_restrict_applications_dialog_map (GtkWidget *widget)
{
MctRestrictApplicationsDialog *self = (MctRestrictApplicationsDialog *)widget;
GTK_WIDGET_CLASS (mct_restrict_applications_dialog_parent_class)->map (widget);
/* Clear and focus the search entry, in case the dialogue is being shown for
* a second time. */
gtk_editable_set_text (GTK_EDITABLE (self->search_entry), "");
gtk_widget_grab_focus (GTK_WIDGET (self->search_entry));
}
static void
mct_restrict_applications_dialog_class_init (MctRestrictApplicationsDialogClass *klass)
{
@ -151,6 +171,8 @@ mct_restrict_applications_dialog_class_init (MctRestrictApplicationsDialogClass
object_class->set_property = mct_restrict_applications_dialog_set_property;
object_class->dispose = mct_restrict_applications_dialog_dispose;
widget_class->map = mct_restrict_applications_dialog_map;
/**
* MctRestrictApplicationsDialog:app-filter: (not nullable)
*
@ -197,6 +219,15 @@ mct_restrict_applications_dialog_class_init (MctRestrictApplicationsDialogClass
gtk_widget_class_bind_template_child (widget_class, MctRestrictApplicationsDialog, selector);
gtk_widget_class_bind_template_child (widget_class, MctRestrictApplicationsDialog, group);
gtk_widget_class_bind_template_child (widget_class, MctRestrictApplicationsDialog, search_entry);
gtk_widget_class_bind_template_callback (widget_class, search_entry_stop_search_cb);
gtk_widget_class_add_binding (widget_class,
GDK_KEY_f, GDK_CONTROL_MASK,
focus_search_cb,
NULL);
}
static void
@ -206,6 +237,8 @@ mct_restrict_applications_dialog_init (MctRestrictApplicationsDialog *self)
g_type_ensure (MCT_TYPE_RESTRICT_APPLICATIONS_SELECTOR);
gtk_widget_init_template (GTK_WIDGET (self));
gtk_search_entry_set_key_capture_widget (self->search_entry, GTK_WIDGET (self));
}
static void
@ -225,6 +258,25 @@ update_description (MctRestrictApplicationsDialog *self)
adw_preferences_group_set_description (self->group, description);
}
static void
search_entry_stop_search_cb (GtkSearchEntry *search_entry,
gpointer user_data)
{
/* Clear the search text as the search filtering is bound to that. */
gtk_editable_set_text (GTK_EDITABLE (search_entry), "");
}
static gboolean
focus_search_cb (GtkWidget *widget,
GVariant *arguments,
gpointer user_data)
{
MctRestrictApplicationsDialog *self = MCT_RESTRICT_APPLICATIONS_DIALOG (widget);
gtk_widget_grab_focus (GTK_WIDGET (self->search_entry));
return TRUE;
}
/**
* mct_restrict_applications_dialog_new:
* @app_filter: (transfer none): the initial app filter configuration to show

View file

@ -14,7 +14,21 @@
<!-- Translated dynamically: -->
<property name="description">Restrict {username} from using the following installed applications.</property>
<child>
<object class="MctRestrictApplicationsSelector" id="selector" />
<object class="GtkBox">
<property name="orientation">vertical</property>
<property name="spacing">12</property>
<child>
<object class="GtkSearchEntry" id="search_entry">
<property name="placeholder-text" translatable="yes">Search for applications…</property>
<signal name="stop-search" handler="search_entry_stop_search_cb" />
</object>
</child>
<child>
<object class="MctRestrictApplicationsSelector" id="selector">
<property name="search" bind-source="search_entry" bind-property="text" />
</object>
</child>
</object>
</child>
</object>
</child>

View file

@ -41,6 +41,7 @@ static void app_info_changed_cb (GAppInfoMonitor *monitor,
static void reload_apps (MctRestrictApplicationsSelector *self);
static GtkWidget *create_row_for_app_cb (gpointer item,
gpointer user_data);
static char *app_info_dup_name (GAppInfo *app_info);
/**
* MctRestrictApplicationsSelector:
@ -54,6 +55,11 @@ static GtkWidget *create_row_for_app_cb (gpointer item,
* #MctAppFilterBuilder using
* mct_restrict_applications_selector_build_app_filter().
*
* Search terms may be applied using #MctRestrictApplicationsSelector:search.
* These will filter the list of displayed apps so that only ones matching the
* search terms (by name, using UTF-8 normalisation and casefolding) will be
* displayed.
*
* Since: 0.5.0
*/
struct _MctRestrictApplicationsSelector
@ -61,10 +67,11 @@ struct _MctRestrictApplicationsSelector
GtkBox parent_instance;
GtkListBox *listbox;
GtkLabel *placeholder;
GList *cached_apps; /* (nullable) (owned) (element-type GAppInfo) */
GListStore *apps; /* (owned) */
GListStore *apps;
GtkFilterListModel *filtered_apps;
GtkStringFilter *search_filter;
GAppInfoMonitor *app_info_monitor; /* (owned) */
gulong app_info_monitor_changed_id;
GHashTable *blocklisted_apps; /* (owned) (element-type GAppInfo) */
@ -75,6 +82,8 @@ struct _MctRestrictApplicationsSelector
FlatpakInstallation *user_installation; /* (owned) */
GtkCssProvider *css_provider; /* (owned) */
gchar *search; /* (nullable) (owned) */
};
G_DEFINE_TYPE (MctRestrictApplicationsSelector, mct_restrict_applications_selector, GTK_TYPE_BOX)
@ -82,9 +91,10 @@ G_DEFINE_TYPE (MctRestrictApplicationsSelector, mct_restrict_applications_select
typedef enum
{
PROP_APP_FILTER = 1,
PROP_SEARCH,
} MctRestrictApplicationsSelectorProperty;
static GParamSpec *properties[PROP_APP_FILTER + 1];
static GParamSpec *properties[PROP_SEARCH + 1];
enum {
SIGNAL_CHANGED,
@ -125,6 +135,9 @@ mct_restrict_applications_selector_get_property (GObject *object,
case PROP_APP_FILTER:
g_value_set_boxed (value, self->app_filter);
break;
case PROP_SEARCH:
g_value_set_string (value, self->search);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@ -144,6 +157,9 @@ mct_restrict_applications_selector_set_property (GObject *object,
case PROP_APP_FILTER:
mct_restrict_applications_selector_set_app_filter (self, g_value_get_boxed (value));
break;
case PROP_SEARCH:
mct_restrict_applications_selector_set_search (self, g_value_get_string (value));
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@ -156,7 +172,6 @@ mct_restrict_applications_selector_dispose (GObject *object)
MctRestrictApplicationsSelector *self = (MctRestrictApplicationsSelector *)object;
g_clear_pointer (&self->blocklisted_apps, g_hash_table_unref);
g_clear_object (&self->apps);
g_clear_list (&self->cached_apps, g_object_unref);
if (self->app_info_monitor != NULL && self->app_info_monitor_changed_id != 0)
@ -169,6 +184,7 @@ mct_restrict_applications_selector_dispose (GObject *object)
g_clear_object (&self->system_installation);
g_clear_object (&self->user_installation);
g_clear_object (&self->css_provider);
g_clear_pointer (&self->search, g_free);
G_OBJECT_CLASS (mct_restrict_applications_selector_parent_class)->dispose (object);
}
@ -203,6 +219,23 @@ mct_restrict_applications_selector_class_init (MctRestrictApplicationsSelectorCl
G_PARAM_STATIC_STRINGS |
G_PARAM_EXPLICIT_NOTIFY);
/**
* MctRestrictApplicationsSelector:search: (nullable)
*
* Search terms to filter the displayed list of apps by, or %NULL to not
* filter the search.
*
* Since: 0.12.0
*/
properties[PROP_SEARCH] =
g_param_spec_string ("search",
"Search",
"Search terms to filter the displayed list of apps by.",
NULL,
G_PARAM_READWRITE |
G_PARAM_STATIC_STRINGS |
G_PARAM_EXPLICIT_NOTIFY);
g_object_class_install_properties (object_class, G_N_ELEMENTS (properties), properties);
/**
@ -224,34 +257,30 @@ mct_restrict_applications_selector_class_init (MctRestrictApplicationsSelectorCl
gtk_widget_class_set_template_from_resource (widget_class, "/org/freedesktop/MalcontentUi/ui/restrict-applications-selector.ui");
gtk_widget_class_bind_template_child (widget_class, MctRestrictApplicationsSelector, listbox);
gtk_widget_class_bind_template_child (widget_class, MctRestrictApplicationsSelector, placeholder);
gtk_widget_class_bind_template_child (widget_class, MctRestrictApplicationsSelector, apps);
gtk_widget_class_bind_template_child (widget_class, MctRestrictApplicationsSelector, filtered_apps);
gtk_widget_class_bind_template_child (widget_class, MctRestrictApplicationsSelector, search_filter);
gtk_widget_class_bind_template_callback (widget_class, app_info_dup_name);
}
static void
mct_restrict_applications_selector_init (MctRestrictApplicationsSelector *self)
{
guint n_apps;
gtk_widget_init_template (GTK_WIDGET (self));
self->apps = g_list_store_new (G_TYPE_APP_INFO);
self->cached_apps = NULL;
self->app_info_monitor = g_app_info_monitor_get ();
self->app_info_monitor_changed_id =
g_signal_connect (self->app_info_monitor, "changed",
(GCallback) app_info_changed_cb, self);
gtk_list_box_bind_model (self->listbox,
G_LIST_MODEL (self->apps),
G_LIST_MODEL (self->filtered_apps),
create_row_for_app_cb,
self,
NULL);
/* Hide placeholder if not empty */
n_apps = g_list_model_get_n_items (G_LIST_MODEL (self->apps));
gtk_widget_set_visible (GTK_WIDGET (self->placeholder), n_apps != 0);
self->blocklisted_apps = g_hash_table_new_full (g_direct_hash,
g_direct_equal,
g_object_unref,
@ -368,6 +397,12 @@ create_row_for_app_cb (gpointer item,
return row;
}
static char *
app_info_dup_name (GAppInfo *app_info)
{
return g_strdup (g_app_info_get_name (app_info));
}
static gint
compare_app_info_cb (gconstpointer a,
gconstpointer b,
@ -776,7 +811,7 @@ mct_restrict_applications_selector_set_app_filter (MctRestrictApplicationsSelect
self->app_filter = mct_app_filter_ref (app_filter);
/* Update the status of each app row. */
n_apps = g_list_model_get_n_items (G_LIST_MODEL (self->apps));
n_apps = g_list_model_get_n_items (G_LIST_MODEL (self->filtered_apps));
for (guint i = 0; i < n_apps; i++)
{
@ -795,3 +830,50 @@ mct_restrict_applications_selector_set_app_filter (MctRestrictApplicationsSelect
g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_APP_FILTER]);
}
/**
* mct_restrict_applications_selector_get_search:
* @self: an #MctRestrictApplicationsSelector
*
* Get the value of #MctRestrictApplicationsSelector:search.
*
* Returns: current search terms, or %NULL if no search filtering is active
* Since: 0.12.0
*/
const gchar *
mct_restrict_applications_selector_get_search (MctRestrictApplicationsSelector *self)
{
g_return_val_if_fail (MCT_IS_RESTRICT_APPLICATIONS_SELECTOR (self), NULL);
return self->search;
}
/**
* mct_restrict_applications_selector_set_search:
* @self: an #MctRestrictApplicationsSelector
* @search: (nullable): search terms, or %NULL to not filter the app list
*
* Set the value of #MctRestrictApplicationsSelector:search, or clear it to
* %NULL.
*
* Since: 0.12.0
*/
void
mct_restrict_applications_selector_set_search (MctRestrictApplicationsSelector *self,
const gchar *search)
{
g_return_if_fail (MCT_IS_RESTRICT_APPLICATIONS_SELECTOR (self));
/* Squash empty search terms down to nothing. */
if (search != NULL && *search == '\0')
search = NULL;
if (g_strcmp0 (search, self->search) == 0)
return;
g_clear_pointer (&self->search, g_free);
self->search = g_strdup (search);
gtk_string_filter_set_search (self->search_filter, self->search);
g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_SEARCH]);
}

View file

@ -41,4 +41,8 @@ void mct_restrict_applications_selector_set_app_filter (MctRestrictAppl
void mct_restrict_applications_selector_build_app_filter (MctRestrictApplicationsSelector *self,
MctAppFilterBuilder *builder);
const gchar *mct_restrict_applications_selector_get_search (MctRestrictApplicationsSelector *self);
void mct_restrict_applications_selector_set_search (MctRestrictApplicationsSelector *self,
const gchar *search);
G_END_DECLS

View file

@ -9,8 +9,10 @@
<property name="selection-mode">none</property>
<child type="placeholder">
<object class="GtkLabel" id="placeholder">
<object class="GtkLabel">
<property name="label" translatable="yes">No applications found to restrict.</property>
<property name="margin-top">12</property>
<property name="margin-bottom">12</property>
</object>
</child>
@ -20,4 +22,19 @@
</object>
</child>
</template>
<object class="GListStore" id="apps">
<property name="item-type">GAppInfo</property>
</object>
<object class="GtkFilterListModel" id="filtered_apps">
<property name="model">apps</property>
<property name="filter">search_filter</property>
</object>
<object class="GtkStringFilter" id="search_filter">
<property name="expression">
<closure type="gchararray" function="app_info_dup_name" />
</property>
</object>
</interface>

View file

@ -702,6 +702,7 @@ mct_user_controls_finalize (GObject *object)
g_clear_object (&self->user);
g_clear_pointer (&self->user_locale, g_free);
g_clear_pointer (&self->user_display_name, g_free);
g_clear_pointer (&self->description, g_free);
if (self->permission != NULL && self->permission_allowed_id != 0)
{

View file

@ -99,7 +99,7 @@
<property name="title" translatable="yes">Application _Suitability</property>
<property name="use_underline">True</property>
<property name="activatable_widget">oars_button</property>
<property name="subtitle" translatable="yes">Restricts browsing or installation of applications to applications suitable for certain ages or above.</property>
<property name="subtitle" translatable="yes">Restricts the browsing or installation of applications unsuitable for this age or younger.</property>
<property name="subtitle_lines">0</property>
<property name="focusable">False</property>
<child>

View file

@ -48,6 +48,7 @@ typedef enum
struct _MctAppFilter
{
/*< private >*/
gint ref_count;
uid_t user_id;

View file

@ -66,7 +66,7 @@ pkgconfig.generate(libmalcontent,
)
libmalcontent_gir = gnome.generate_gir(libmalcontent,
sources: libmalcontent_sources + libmalcontent_headers + libmalcontent_private_headers + enums,
sources: libmalcontent_sources + libmalcontent_headers + enums,
nsversion: libmalcontent_api_version,
namespace: 'Malcontent',
symbol_prefix: 'mct_',

View file

@ -50,6 +50,7 @@ typedef enum
struct _MctSessionLimits
{
/*< private >*/
gint ref_count;
uid_t user_id;

View file

@ -297,6 +297,7 @@ def command_check_app_filter(user, arg, quiet=False, interactive=True):
# when passing flatpak IDs as argument
is_maybe_content_type = not is_maybe_flatpak_id and is_valid_content_type(arg)
is_maybe_path = os.path.exists(arg)
is_maybe_desktop_file = arg.endswith('.desktop')
recognised_types = sum([is_maybe_flatpak_id, is_maybe_flatpak_ref,
is_maybe_content_type, is_maybe_path])
@ -320,6 +321,11 @@ def command_check_app_filter(user, arg, quiet=False, interactive=True):
# Content type
is_allowed = app_filter.is_content_type_allowed(arg)
noun = 'Content type'
elif is_maybe_path and is_maybe_desktop_file
path = os.path.abspath(arg)
app_info = Gio.DesktopAppInfo.new_from_filename(path)
is_allowed = app_filter.is_appinfo_allowed(app_info)
noun = 'Desktop file'
elif is_maybe_path:
path = os.path.abspath(arg)
is_allowed = app_filter.is_path_allowed(path)

View file

@ -28,3 +28,12 @@ carousel-item {
border: none;
color: @theme_fg_color;
}
carousel-item:focus:focus-visible avatar {
/* this should actually be $focus_border_color from
* gtk/theme/Default/_colors.scss, but we have to simplify the theming slightly */
outline-color: @theme_selected_bg_color;
outline-offset: -2px;
outline-width: 2px;
outline-style: solid;
}

View file

@ -31,7 +31,8 @@
<launchable type="desktop-id">org.freedesktop.MalcontentControl.desktop</launchable>
<url type="homepage">https://gitlab.freedesktop.org/pwithnall/malcontent</url>
<url type="bugtracker">https://gitlab.freedesktop.org/pwithnall/malcontent/issues</url>
<url type="donation">http://www.gnome.org/friends/</url>
<url type="donation">https://www.gnome.org/donate/</url>
<url type="vcs-browser">https://gitlab.freedesktop.org/pwithnall/malcontent</url>
<url type="translate">https://wiki.gnome.org/TranslationProject/LocalisationGuide</url>
<update_contact>philip_at_tecnocode.co.uk</update_contact>
<compulsory_for_desktop>GNOME</compulsory_for_desktop>

View file

@ -1,5 +1,5 @@
project('malcontent', 'c',
version : '0.11.1',
version : '0.12.0',
meson_version : '>= 0.59.0',
license: ['LGPL-2.1-or-later', 'GPL-2.0-or-later'],
default_options : [

162
po/cs.po
View file

@ -8,8 +8,8 @@ msgstr ""
"Project-Id-Version: malcontent\n"
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/pwithnall/malcontent/"
"issues\n"
"POT-Creation-Date: 2021-09-18 12:41+0000\n"
"PO-Revision-Date: 2021-10-02 00:36+0200\n"
"POT-Creation-Date: 2023-10-13 16:18+0000\n"
"PO-Revision-Date: 2023-10-23 23:04+0200\n"
"Last-Translator: Daniel Rusek <mail@asciiwolf.com>\n"
"Language-Team: none\n"
"Language: cs\n"
@ -17,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
"X-Generator: Poedit 3.0\n"
"X-Generator: Poedit 3.4\n"
#: accounts-service/com.endlessm.ParentalControls.policy.in:4
msgid "Change your own app filter"
@ -164,78 +164,36 @@ msgstr "Limit sezení pro uživatele %u má nerozpoznaný typ %u"
msgid "Session limit for user %u has invalid daily schedule %u%u"
msgstr "Limit sezení pro uživatele %u má neplatný denní rozvrh %u%u"
#. TRANSLATORS: This is the formatting of English and localized name
#. of the rating e.g. "Adults Only (solo adultos)"
#: libmalcontent-ui/gs-content-rating.c:75
#, c-format
msgid "%s (%s)"
msgstr "%s (%s)"
#: libmalcontent-ui/gs-content-rating.c:209
msgid "General"
msgstr "Obecné"
#: libmalcontent-ui/gs-content-rating.c:218
msgid "ALL"
msgstr "VŠECHNY"
#: libmalcontent-ui/gs-content-rating.c:222
#: libmalcontent-ui/gs-content-rating.c:485
msgid "Adults Only"
msgstr "pouze dospělé"
#: libmalcontent-ui/gs-content-rating.c:224
#: libmalcontent-ui/gs-content-rating.c:484
msgid "Mature"
msgstr "plnoleté"
#: libmalcontent-ui/gs-content-rating.c:226
#: libmalcontent-ui/gs-content-rating.c:483
msgid "Teen"
msgstr "mládež"
#: libmalcontent-ui/gs-content-rating.c:228
#: libmalcontent-ui/gs-content-rating.c:482
msgid "Everyone 10+"
msgstr "všechny 10+"
#: libmalcontent-ui/gs-content-rating.c:230
#: libmalcontent-ui/gs-content-rating.c:481
msgid "Everyone"
msgstr "všechny"
#: libmalcontent-ui/gs-content-rating.c:232
#: libmalcontent-ui/gs-content-rating.c:480
msgid "Early Childhood"
msgstr "malé děti"
#. Translators: the placeholder is a users full name
#: libmalcontent-ui/restrict-applications-dialog.c:222
#: libmalcontent-ui/restrict-applications-dialog.c:256
#, c-format
msgid "Restrict %s from using the following installed applications."
msgstr "Omezit uživateli %s použití následujících nainstalovaných aplikací."
#: libmalcontent-ui/restrict-applications-dialog.ui:6
#: libmalcontent-ui/restrict-applications-dialog.ui:12
msgid "Restrict Applications"
msgstr "Omezit aplikace"
#: libmalcontent-ui/restrict-applications-selector.ui:24
#: libmalcontent-ui/restrict-applications-dialog.ui:22
msgid "Search for applications…"
msgstr "Hledat aplikace…"
#: libmalcontent-ui/restrict-applications-selector.ui:13
msgid "No applications found to restrict."
msgstr "Nenalezeny žádné aplikace k omezení."
#. Translators: this is the full name for an unknown user account.
#: libmalcontent-ui/user-controls.c:207 libmalcontent-ui/user-controls.c:218
#: libmalcontent-ui/user-controls.c:198 libmalcontent-ui/user-controls.c:209
msgid "unknown"
msgstr "neznámé"
#: libmalcontent-ui/user-controls.c:312 libmalcontent-ui/user-controls.c:397
#: libmalcontent-ui/user-controls.c:669
#: libmalcontent-ui/user-controls.c:303 libmalcontent-ui/user-controls.c:388
#: libmalcontent-ui/user-controls.c:641
msgid "All Ages"
msgstr "libovolný věk"
#. Translators: The placeholder is a users display name.
#: libmalcontent-ui/user-controls.c:477
#: libmalcontent-ui/user-controls.c:470
#, c-format
msgid ""
"Prevents %s from running web browsers. Limited web content may still be "
@ -245,48 +203,48 @@ msgstr ""
"obsah může být stále dostupný v jiných aplikacích."
#. Translators: The placeholder is a users display name.
#: libmalcontent-ui/user-controls.c:482
#: libmalcontent-ui/user-controls.c:475
#, c-format
msgid "Prevents specified applications from being used by %s."
msgstr "Zabraňuje v používání určených aplikací uživatelem %s."
#. Translators: The placeholder is a users display name.
#: libmalcontent-ui/user-controls.c:487
#: libmalcontent-ui/user-controls.c:480
#, c-format
msgid "Prevents %s from installing applications."
msgstr "Zabraňuje uživateli %s v instalaci aplikací."
#: libmalcontent-ui/user-controls.ui:16
#: libmalcontent-ui/user-controls.ui:25
msgid "Application Usage Restrictions"
msgstr "Omezení použití aplikací"
#: libmalcontent-ui/user-controls.ui:67
#: libmalcontent-ui/user-controls.ui:28
msgid "Restrict _Web Browsers"
msgstr "Omezit _webové prohlížeče"
#: libmalcontent-ui/user-controls.ui:151
#: libmalcontent-ui/user-controls.ui:51
msgid "_Restrict Applications"
msgstr "Omezit _aplikace"
#: libmalcontent-ui/user-controls.ui:230
#: libmalcontent-ui/user-controls.ui:73
msgid "Software Installation Restrictions"
msgstr "Omezení instalace softwaru"
#: libmalcontent-ui/user-controls.ui:280
#: libmalcontent-ui/user-controls.ui:77
msgid "Restrict Application _Installation"
msgstr "Omezit _instalaci aplikací"
#: libmalcontent-ui/user-controls.ui:365
#: libmalcontent-ui/user-controls.ui:99
msgid "Application _Suitability"
msgstr "Vhodno_st aplikací"
#: libmalcontent-ui/user-controls.ui:387
#: libmalcontent-ui/user-controls.ui:102
msgid ""
"Restricts browsing or installation of applications to applications suitable "
"for certain ages or above."
"Restricts the browsing or installation of applications unsuitable for this "
"age or younger."
msgstr ""
"Omezí prohlížení nebo instalaci aplikací na aplikace vhodné pro určitý věk "
"nebo výše."
"Omezí prohlížení nebo instalaci aplikací nevhodných pro tento věk nebo "
"mladší."
#. Translators: This documents the --user command line option to malcontent-control:
#: malcontent-control/application.c:102
@ -298,44 +256,44 @@ msgstr "Uživatel ke zvolení v UI"
msgid "USERNAME"
msgstr "UŽIVATEL"
#: malcontent-control/application.c:115
#: malcontent-control/application.c:116
msgid "— view and edit parental controls"
msgstr "— zobrazit a upravit rodičovskou kontrolu"
#. Translators: This is the title of the main window
#. Translators: the name of the application as it appears in a software center
#: malcontent-control/application.c:122 malcontent-control/main.ui:12
#: malcontent-control/application.c:123 malcontent-control/main.ui:17
#: malcontent-control/org.freedesktop.MalcontentControl.appdata.xml.in:9
#: malcontent-control/org.freedesktop.MalcontentControl.desktop.in:3
msgid "Parental Controls"
msgstr "Rodičovská kontrola"
#: malcontent-control/application.c:308
#: malcontent-control/application.c:309
msgid "Copyright © 2019, 2020 Endless Mobile, Inc."
msgstr "Copyright © 2019, 2020 Endless Mobile, Inc."
#. Translators: this should be "translated" to the
#. names of people who have translated Malcontent into
#. this language, one per line.
#: malcontent-control/application.c:313
#: malcontent-control/application.c:314
msgid "translator-credits"
msgstr "Daniel Rusek <mail@asciiwolf.com>"
#. Translators: "Malcontent" is the brand name of this
#. project, so should not be translated.
#: malcontent-control/application.c:319
#: malcontent-control/application.c:320
msgid "Malcontent Website"
msgstr "Webové stránky"
#: malcontent-control/application.c:337
#: malcontent-control/application.c:341
msgid "The help contents could not be displayed"
msgstr "Obsah nápovědy nemohl být zobrazen"
#: malcontent-control/application.c:374
#: malcontent-control/application.c:388
msgid "Failed to load user data from the system"
msgstr "Selhalo načtení uživatelských dat ze systému"
#: malcontent-control/application.c:376
#: malcontent-control/application.c:390
msgid "Please make sure that the AccountsService is installed and enabled."
msgstr "Ověřte prosím, že je AccountsService nainstalováno a povoleno."
@ -348,7 +306,7 @@ msgstr "Ověřte prosím, že je AccountsService nainstalováno a povoleno."
#. * further!
#. * https://gitlab.freedesktop.org/pwithnall/malcontent/-/issues/new
#.
#: malcontent-control/application.c:407
#: malcontent-control/application.c:421
#, c-format
msgid ""
"Its recommended that restrictions are set as part of an ongoing "
@ -359,29 +317,29 @@ msgstr ""
"konverzace s %s. <a href='https://www.jaknainternet.cz/page/1201/ochrana-"
"deti-na-internetu/'>Přečtěte si návod</a> na to, co je třeba vzít v úvahu."
#: malcontent-control/carousel.ui:48
#: malcontent-control/carousel.ui:38
msgid "Previous Page"
msgstr "Předchozí stránka"
#: malcontent-control/carousel.ui:74
#: malcontent-control/carousel.ui:57
msgid "Next Page"
msgstr "Následující stránka"
#: malcontent-control/main.ui:115
#: malcontent-control/main.ui:87
msgid "Permission Required"
msgstr "Vyžadováno oprávnění"
#: malcontent-control/main.ui:129
#: malcontent-control/main.ui:88
msgid ""
"Permission is required to view and change user parental controls settings."
msgstr ""
"Pro zobrazení a změnu rodičovské kontroly uživatele je nutné oprávnění."
#: malcontent-control/main.ui:184
#: malcontent-control/main.ui:110
msgid "No Standard User Accounts"
msgstr "Žádný běžný uživatelský účet"
#: malcontent-control/main.ui:199
#: malcontent-control/main.ui:111
msgid ""
"Parental controls can only be applied to standard user\n"
"accounts. These can be created in the user settings."
@ -389,19 +347,19 @@ msgstr ""
"Rodičovská kontrola může být aplikována pouze na standardní uživatelské\n"
"účty. Ty mohou být vytvořeny v nastavení uživatelů."
#: malcontent-control/main.ui:212
#: malcontent-control/main.ui:115
msgid "_User Settings"
msgstr "Nastavení _uživatelů"
#: malcontent-control/main.ui:242
#: malcontent-control/main.ui:138
msgid "Loading…"
msgstr "Načítá se…"
#: malcontent-control/main.ui:305
#: malcontent-control/main.ui:171
msgid "_Help"
msgstr "_Nápověda"
#: malcontent-control/main.ui:309
#: malcontent-control/main.ui:175
msgid "_About Parental Controls"
msgstr "O _aplikaci Rodičovská kontrola"
@ -426,7 +384,7 @@ msgstr ""
msgid "Main window"
msgstr "Hlavní okno"
#: malcontent-control/org.freedesktop.MalcontentControl.appdata.xml.in:38
#: malcontent-control/org.freedesktop.MalcontentControl.appdata.xml.in:39
msgid "The GNOME Project"
msgstr "Projekt GNOME"
@ -474,6 +432,34 @@ msgstr "Uživatel %s nemá žádný zbývající čas"
msgid "Error setting time limit on login session: %s"
msgstr "Chyba při nastavení časového limitu na přihlašovací sezení: %s"
#, c-format
#~ msgid "%s (%s)"
#~ msgstr "%s (%s)"
#~ msgid "General"
#~ msgstr "Obecné"
#~ msgid "ALL"
#~ msgstr "VŠECHNY"
#~ msgid "Adults Only"
#~ msgstr "pouze dospělé"
#~ msgid "Mature"
#~ msgstr "plnoleté"
#~ msgid "Teen"
#~ msgstr "mládež"
#~ msgid "Everyone 10+"
#~ msgstr "všechny 10+"
#~ msgid "Everyone"
#~ msgstr "všechny"
#~ msgid "Early Childhood"
#~ msgstr "malé děti"
#~ msgid "No cartoon violence"
#~ msgstr "Žádné kreslené násilí"

View file

@ -404,10 +404,18 @@ msgstr ""
msgid "Create _Child User"
msgstr "_Criar usuário filho"
#: malcontent-control/main.ui:182
msgid "No Standard User Accounts"
msgstr "Não há conta de usuário padrão"
#: malcontent-control/main.ui:202
msgid "Loading…"
msgstr "Carregando…"
#: malcontent-control/main.ui:210
msgid "_User Settings"
msgstr "Configurações do _Usuário"
#: malcontent-control/main.ui:265
msgid "_Help"
msgstr "Aj_uda"

160
po/ru.po
View file

@ -8,17 +8,17 @@ msgstr ""
"Project-Id-Version: malcontent\n"
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/pwithnall/malcontent/"
"issues\n"
"POT-Creation-Date: 2022-06-04 15:25+0000\n"
"PO-Revision-Date: 2022-06-19 20:05+1000\n"
"POT-Creation-Date: 2023-10-13 16:18+0000\n"
"PO-Revision-Date: 2023-10-29 01:03+1000\n"
"Last-Translator: Ser82-png <asvmail.as@gmail.com>\n"
"Language-Team: none\n"
"Language: ru\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
"X-Generator: Poedit 2.3\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
"X-Generator: Poedit 3.0.1\n"
#: accounts-service/com.endlessm.ParentalControls.policy.in:4
msgid "Change your own app filter"
@ -177,78 +177,36 @@ msgstr ""
"Ограничение сеанса для пользователя %u имеет недопустимое ежедневное "
"расписание %u%u"
#. TRANSLATORS: This is the formatting of English and localized name
#. of the rating e.g. "Adults Only (solo adultos)"
#: libmalcontent-ui/gs-content-rating.c:75
#, c-format
msgid "%s (%s)"
msgstr "%s (%s)"
#: libmalcontent-ui/gs-content-rating.c:209
msgid "General"
msgstr "Общие"
#: libmalcontent-ui/gs-content-rating.c:218
msgid "ALL"
msgstr "ВСЕ"
#: libmalcontent-ui/gs-content-rating.c:222
#: libmalcontent-ui/gs-content-rating.c:485
msgid "Adults Only"
msgstr "Только для взрослых"
#: libmalcontent-ui/gs-content-rating.c:224
#: libmalcontent-ui/gs-content-rating.c:484
msgid "Mature"
msgstr "Для повзрослевшых"
#: libmalcontent-ui/gs-content-rating.c:226
#: libmalcontent-ui/gs-content-rating.c:483
msgid "Teen"
msgstr "Для подростков"
#: libmalcontent-ui/gs-content-rating.c:228
#: libmalcontent-ui/gs-content-rating.c:482
msgid "Everyone 10+"
msgstr "Для всех старше 10"
#: libmalcontent-ui/gs-content-rating.c:230
#: libmalcontent-ui/gs-content-rating.c:481
msgid "Everyone"
msgstr "Для всех"
#: libmalcontent-ui/gs-content-rating.c:232
#: libmalcontent-ui/gs-content-rating.c:480
msgid "Early Childhood"
msgstr "Для маленьких"
#. Translators: the placeholder is a users full name
#: libmalcontent-ui/restrict-applications-dialog.c:222
#: libmalcontent-ui/restrict-applications-dialog.c:256
#, c-format
msgid "Restrict %s from using the following installed applications."
msgstr "Запретить %s использовать следующие установленные приложения."
#: libmalcontent-ui/restrict-applications-dialog.ui:6
#: libmalcontent-ui/restrict-applications-dialog.ui:12
msgid "Restrict Applications"
msgstr "Ограничение доступа к приложениям"
#: libmalcontent-ui/restrict-applications-selector.ui:24
#: libmalcontent-ui/restrict-applications-dialog.ui:22
msgid "Search for applications…"
msgstr "Поиск приложений…"
#: libmalcontent-ui/restrict-applications-selector.ui:13
msgid "No applications found to restrict."
msgstr "Не найдено приложений, доступ к которым ограничен."
#. Translators: this is the full name for an unknown user account.
#: libmalcontent-ui/user-controls.c:207 libmalcontent-ui/user-controls.c:218
#: libmalcontent-ui/user-controls.c:198 libmalcontent-ui/user-controls.c:209
msgid "unknown"
msgstr "неизвестный"
#: libmalcontent-ui/user-controls.c:312 libmalcontent-ui/user-controls.c:397
#: libmalcontent-ui/user-controls.c:669
#: libmalcontent-ui/user-controls.c:303 libmalcontent-ui/user-controls.c:388
#: libmalcontent-ui/user-controls.c:641
msgid "All Ages"
msgstr "Все возрастные группы"
#. Translators: The placeholder is a users display name.
#: libmalcontent-ui/user-controls.c:477
#: libmalcontent-ui/user-controls.c:470
#, c-format
msgid ""
"Prevents %s from running web browsers. Limited web content may still be "
@ -258,48 +216,48 @@ msgstr ""
"доступен в других приложениях."
#. Translators: The placeholder is a users display name.
#: libmalcontent-ui/user-controls.c:482
#: libmalcontent-ui/user-controls.c:475
#, c-format
msgid "Prevents specified applications from being used by %s."
msgstr "Запретить %s использование указанных приложений."
#. Translators: The placeholder is a users display name.
#: libmalcontent-ui/user-controls.c:487
#: libmalcontent-ui/user-controls.c:480
#, c-format
msgid "Prevents %s from installing applications."
msgstr "Запретить %s устанавливать приложения."
#: libmalcontent-ui/user-controls.ui:16
#: libmalcontent-ui/user-controls.ui:25
msgid "Application Usage Restrictions"
msgstr "Ограничения на использование приложений"
#: libmalcontent-ui/user-controls.ui:68
#: libmalcontent-ui/user-controls.ui:28
msgid "Restrict _Web Browsers"
msgstr "Ограничить доступ к _Веб-браузерам"
#: libmalcontent-ui/user-controls.ui:152
#: libmalcontent-ui/user-controls.ui:51
msgid "_Restrict Applications"
msgstr "_Ограничить доступ к приложениям"
#: libmalcontent-ui/user-controls.ui:231
#: libmalcontent-ui/user-controls.ui:73
msgid "Software Installation Restrictions"
msgstr "Ограничения на установку программного обеспечения"
#: libmalcontent-ui/user-controls.ui:282
#: libmalcontent-ui/user-controls.ui:77
msgid "Restrict Application _Installation"
msgstr "Ограничить _установку приложений"
#: libmalcontent-ui/user-controls.ui:367
#: libmalcontent-ui/user-controls.ui:99
msgid "Application _Suitability"
msgstr "_Пригодность приложений"
#: libmalcontent-ui/user-controls.ui:389
#: libmalcontent-ui/user-controls.ui:102
msgid ""
"Restricts browsing or installation of applications to applications suitable "
"for certain ages or above."
"Restricts the browsing or installation of applications unsuitable for this "
"age or younger."
msgstr ""
"Ограничить просмотр или установку приложений в соответствии с распределением "
"доступности по возрастным группам."
"Ограничить просмотр или установку приложений неподходящих для этой "
"возрастной группы."
#. Translators: This documents the --user command line option to malcontent-control:
#: malcontent-control/application.c:102
@ -317,7 +275,7 @@ msgstr "— просмотр и редактирование родительс
#. Translators: This is the title of the main window
#. Translators: the name of the application as it appears in a software center
#: malcontent-control/application.c:123 malcontent-control/main.ui:12
#: malcontent-control/application.c:123 malcontent-control/main.ui:17
#: malcontent-control/org.freedesktop.MalcontentControl.appdata.xml.in:9
#: malcontent-control/org.freedesktop.MalcontentControl.desktop.in:3
msgid "Parental Controls"
@ -332,7 +290,7 @@ msgstr "Copyright © 2019, 2020 Endless Mobile, Inc."
#. this language, one per line.
#: malcontent-control/application.c:314
msgid "translator-credits"
msgstr "Ser82-png <asvmail.as@gmail.com>, 2022"
msgstr "Ser82-png <asvmail.as@gmail.com>, 2022-2023"
#. Translators: "Malcontent" is the brand name of this
#. project, so should not be translated.
@ -340,15 +298,15 @@ msgstr "Ser82-png <asvmail.as@gmail.com>, 2022"
msgid "Malcontent Website"
msgstr "Веб-сайт Malcontent"
#: malcontent-control/application.c:338
#: malcontent-control/application.c:341
msgid "The help contents could not be displayed"
msgstr "Содержание справки не может быть отображено"
#: malcontent-control/application.c:375
#: malcontent-control/application.c:388
msgid "Failed to load user data from the system"
msgstr "Не удалось загрузить пользовательские данные из системы"
#: malcontent-control/application.c:377
#: malcontent-control/application.c:390
msgid "Please make sure that the AccountsService is installed and enabled."
msgstr "Убедитесь, что служба AccountsService установлена и включена."
@ -361,7 +319,7 @@ msgstr "Убедитесь, что служба AccountsService установл
#. * further!
#. * https://gitlab.freedesktop.org/pwithnall/malcontent/-/issues/new
#.
#: malcontent-control/application.c:408
#: malcontent-control/application.c:421
#, c-format
msgid ""
"Its recommended that restrictions are set as part of an ongoing "
@ -372,30 +330,30 @@ msgstr ""
"href='https://www.commonsensemedia.org/privacy-and-internet-"
"safety'>Ознакомьтесь с инструкцией</a> о том, что нужно учитывать."
#: malcontent-control/carousel.ui:48
#: malcontent-control/carousel.ui:38
msgid "Previous Page"
msgstr "Предыдущая страница"
#: malcontent-control/carousel.ui:74
#: malcontent-control/carousel.ui:57
msgid "Next Page"
msgstr "Следующая страница"
#: malcontent-control/main.ui:115
#: malcontent-control/main.ui:87
msgid "Permission Required"
msgstr "Требуется разрешение"
#: malcontent-control/main.ui:129
#: malcontent-control/main.ui:88
msgid ""
"Permission is required to view and change user parental controls settings."
msgstr ""
"Требуется разрешение для просмотра и изменения настроек родительского "
"контроля пользователя."
#: malcontent-control/main.ui:184
#: malcontent-control/main.ui:110
msgid "No Standard User Accounts"
msgstr "Нет обычных учётных записей пользователей"
#: malcontent-control/main.ui:199
#: malcontent-control/main.ui:111
msgid ""
"Parental controls can only be applied to standard user\n"
"accounts. These can be created in the user settings."
@ -403,19 +361,19 @@ msgstr ""
"Родительский контроль может быть применен только к обычным учётным\n"
"записям пользователей. Такие записи можно создать в настройках пользователя."
#: malcontent-control/main.ui:212
#: malcontent-control/main.ui:115
msgid "_User Settings"
msgstr "Настройки _пользователя"
#: malcontent-control/main.ui:242
#: malcontent-control/main.ui:138
msgid "Loading…"
msgstr "Загрузка…"
#: malcontent-control/main.ui:305
#: malcontent-control/main.ui:171
msgid "_Help"
msgstr "_Справка"
#: malcontent-control/main.ui:309
#: malcontent-control/main.ui:175
msgid "_About Parental Controls"
msgstr "_О родительском контроле"
@ -454,7 +412,7 @@ msgid ""
"usage;usage limit;kid;child;"
msgstr ""
"parental controls;screen time;app restrictions;web browser restrictions;oars;"
"usage;usage limit;kid;child;родительский контроль;ребенок;"
"usage;usage limit;kid;child;родительский контроль;ребенок;ограничение;"
#: malcontent-control/org.freedesktop.MalcontentControl.policy.in:9
msgid "Manage parental controls"
@ -494,6 +452,34 @@ msgstr "У пользователя «%s» не осталось времени"
msgid "Error setting time limit on login session: %s"
msgstr "Ошибка установки ограничения времени на сеанс входа в систему: %s"
#, c-format
#~ msgid "%s (%s)"
#~ msgstr "%s (%s)"
#~ msgid "General"
#~ msgstr "Общие"
#~ msgid "ALL"
#~ msgstr "ВСЕ"
#~ msgid "Adults Only"
#~ msgstr "Только для взрослых"
#~ msgid "Mature"
#~ msgstr "Для повзрослевшых"
#~ msgid "Teen"
#~ msgstr "Для подростков"
#~ msgid "Everyone 10+"
#~ msgstr "Для всех старше 10"
#~ msgid "Everyone"
#~ msgstr "Для всех"
#~ msgid "Early Childhood"
#~ msgstr "Для маленьких"
#~ msgid "No cartoon violence"
#~ msgstr "Отсутствуют сцены мультипликационного насилия"

164
po/sv.po
View file

@ -1,16 +1,16 @@
# Swedish translations for malcontent package.
# Copyright (C) 2020 THE malcontent'S COPYRIGHT HOLDER
# Copyright © 2020-2023 malcontent's COPYRIGHT HOLDER
# This file is distributed under the same license as the malcontent package.
# Automatically generated, 2020.
# Anders Jonsson <anders.jonsson@norsjovallen.se>, 2020.
# Anders Jonsson <anders.jonsson@norsjovallen.se>, 2020, 2023.
#
msgid ""
msgstr ""
"Project-Id-Version: malcontent\n"
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/pwithnall/malcontent/"
"issues\n"
"POT-Creation-Date: 2020-12-09 03:28+0000\n"
"PO-Revision-Date: 2020-12-17 18:28+0100\n"
"POT-Creation-Date: 2023-10-13 16:18+0000\n"
"PO-Revision-Date: 2023-10-20 21:11+0200\n"
"Last-Translator: Anders Jonsson <anders.jonsson@norsjovallen.se>\n"
"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
"Language: sv\n"
@ -18,7 +18,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 2.4.2\n"
"X-Generator: Poedit 3.4\n"
#: accounts-service/com.endlessm.ParentalControls.policy.in:4
msgid "Change your own app filter"
@ -165,79 +165,36 @@ msgstr "Sessionsgräns för användare %u har en okänd typ ”%u”"
msgid "Session limit for user %u has invalid daily schedule %u%u"
msgstr "Sessionsgräns för användare %u har ett ogiltigt dagsschema %u%u"
#. TRANSLATORS: This is the formatting of English and localized name
#. of the rating e.g. "Adults Only (solo adultos)"
#: libmalcontent-ui/gs-content-rating.c:75
#, c-format
msgid "%s (%s)"
msgstr "%s (%s)"
# Alla åldrar i MDA-systemet
#: libmalcontent-ui/gs-content-rating.c:209
msgid "General"
msgstr "Alla"
#: libmalcontent-ui/gs-content-rating.c:218
msgid "ALL"
msgstr "ALLA"
#: libmalcontent-ui/gs-content-rating.c:222
#: libmalcontent-ui/gs-content-rating.c:485
msgid "Adults Only"
msgstr "Endast för vuxna"
#: libmalcontent-ui/gs-content-rating.c:224
#: libmalcontent-ui/gs-content-rating.c:484
msgid "Mature"
msgstr "Mogen"
#: libmalcontent-ui/gs-content-rating.c:226
#: libmalcontent-ui/gs-content-rating.c:483
msgid "Teen"
msgstr "Tonåring"
#: libmalcontent-ui/gs-content-rating.c:228
#: libmalcontent-ui/gs-content-rating.c:482
msgid "Everyone 10+"
msgstr "Alla över 10 år"
#: libmalcontent-ui/gs-content-rating.c:230
#: libmalcontent-ui/gs-content-rating.c:481
msgid "Everyone"
msgstr "Alla"
#: libmalcontent-ui/gs-content-rating.c:232
#: libmalcontent-ui/gs-content-rating.c:480
msgid "Early Childhood"
msgstr "Tidig barndom"
#. Translators: the placeholder is a users full name
#: libmalcontent-ui/restrict-applications-dialog.c:222
#: libmalcontent-ui/restrict-applications-dialog.c:256
#, c-format
msgid "Restrict %s from using the following installed applications."
msgstr "Begränsa %s från att använda följande installerade program."
#: libmalcontent-ui/restrict-applications-dialog.ui:6
#: libmalcontent-ui/restrict-applications-dialog.ui:12
msgid "Restrict Applications"
msgstr "Begränsa program"
#: libmalcontent-ui/restrict-applications-selector.ui:24
#: libmalcontent-ui/restrict-applications-dialog.ui:22
msgid "Search for applications…"
msgstr "Sök efter program…"
#: libmalcontent-ui/restrict-applications-selector.ui:13
msgid "No applications found to restrict."
msgstr "Inga program att begränsa hittades."
#. Translators: this is the full name for an unknown user account.
#: libmalcontent-ui/user-controls.c:207 libmalcontent-ui/user-controls.c:218
#: libmalcontent-ui/user-controls.c:198 libmalcontent-ui/user-controls.c:209
msgid "unknown"
msgstr "okänd"
#: libmalcontent-ui/user-controls.c:312 libmalcontent-ui/user-controls.c:397
#: libmalcontent-ui/user-controls.c:669
#: libmalcontent-ui/user-controls.c:303 libmalcontent-ui/user-controls.c:388
#: libmalcontent-ui/user-controls.c:641
msgid "All Ages"
msgstr "Alla åldrar"
#. Translators: The placeholder is a users display name.
#: libmalcontent-ui/user-controls.c:477
#: libmalcontent-ui/user-controls.c:470
#, c-format
msgid ""
"Prevents %s from running web browsers. Limited web content may still be "
@ -247,48 +204,48 @@ msgstr ""
"fortfarande finnas tillgängligt i andra program."
#. Translators: The placeholder is a users display name.
#: libmalcontent-ui/user-controls.c:482
#: libmalcontent-ui/user-controls.c:475
#, c-format
msgid "Prevents specified applications from being used by %s."
msgstr "Förhindrar angivna program från att användas av %s."
#. Translators: The placeholder is a users display name.
#: libmalcontent-ui/user-controls.c:487
#: libmalcontent-ui/user-controls.c:480
#, c-format
msgid "Prevents %s from installing applications."
msgstr "Förhindrar %s från att installera program."
#: libmalcontent-ui/user-controls.ui:16
#: libmalcontent-ui/user-controls.ui:25
msgid "Application Usage Restrictions"
msgstr "Begränsningar av programanvändning"
#: libmalcontent-ui/user-controls.ui:67
#: libmalcontent-ui/user-controls.ui:28
msgid "Restrict _Web Browsers"
msgstr "Begränsa _webbläsare"
#: libmalcontent-ui/user-controls.ui:151
#: libmalcontent-ui/user-controls.ui:51
msgid "_Restrict Applications"
msgstr "_Begränsa program"
#: libmalcontent-ui/user-controls.ui:230
#: libmalcontent-ui/user-controls.ui:73
msgid "Software Installation Restrictions"
msgstr "Begränsningar av programvaruinstallation"
#: libmalcontent-ui/user-controls.ui:280
#: libmalcontent-ui/user-controls.ui:77
msgid "Restrict Application _Installation"
msgstr "Begränsa _installation av program"
#: libmalcontent-ui/user-controls.ui:365
#: libmalcontent-ui/user-controls.ui:99
msgid "Application _Suitability"
msgstr "_Lämplighet för program"
#: libmalcontent-ui/user-controls.ui:387
#: libmalcontent-ui/user-controls.ui:102
msgid ""
"Restricts browsing or installation of applications to applications suitable "
"for certain ages or above."
"Restricts the browsing or installation of applications unsuitable for this "
"age or younger."
msgstr ""
"Begränsar bläddring bland eller installation av program till program som är "
"lämpliga för vissa åldrar och uppåt."
"Begränsar bläddring bland eller installation av program som är olämpliga för "
"denna ålder och yngre."
#. Translators: This documents the --user command line option to malcontent-control:
#: malcontent-control/application.c:102
@ -300,44 +257,44 @@ msgstr "Användare att välja i användargränssnittet"
msgid "USERNAME"
msgstr "ANVÄNDARNAMN"
#: malcontent-control/application.c:115
#: malcontent-control/application.c:116
msgid "— view and edit parental controls"
msgstr "— visa och redigera föräldrakontroller"
#. Translators: This is the title of the main window
#. Translators: the name of the application as it appears in a software center
#: malcontent-control/application.c:122 malcontent-control/main.ui:12
#: malcontent-control/application.c:123 malcontent-control/main.ui:17
#: malcontent-control/org.freedesktop.MalcontentControl.appdata.xml.in:9
#: malcontent-control/org.freedesktop.MalcontentControl.desktop.in:3
msgid "Parental Controls"
msgstr "Föräldrakontroller"
#: malcontent-control/application.c:308
#: malcontent-control/application.c:309
msgid "Copyright © 2019, 2020 Endless Mobile, Inc."
msgstr "Copyright © 2019, 2020 Endless Mobile, Inc."
#. Translators: this should be "translated" to the
#. names of people who have translated Malcontent into
#. this language, one per line.
#: malcontent-control/application.c:313
#: malcontent-control/application.c:314
msgid "translator-credits"
msgstr "Anders Jonsson <anders.jonsson@norsjovallen.se>"
#. Translators: "Malcontent" is the brand name of this
#. project, so should not be translated.
#: malcontent-control/application.c:319
#: malcontent-control/application.c:320
msgid "Malcontent Website"
msgstr "Webbplats för Malcontent"
#: malcontent-control/application.c:337
#: malcontent-control/application.c:341
msgid "The help contents could not be displayed"
msgstr "Hjälpinnehållet kunde inte visas"
#: malcontent-control/application.c:374
#: malcontent-control/application.c:388
msgid "Failed to load user data from the system"
msgstr "Misslyckades med att läsa in användardata från systemet"
#: malcontent-control/application.c:376
#: malcontent-control/application.c:390
msgid "Please make sure that the AccountsService is installed and enabled."
msgstr "Försäkra dig om att AccountsService är installerat och aktiverat."
@ -350,7 +307,7 @@ msgstr "Försäkra dig om att AccountsService är installerat och aktiverat."
#. * further!
#. * https://gitlab.freedesktop.org/pwithnall/malcontent/-/issues/new
#.
#: malcontent-control/application.c:407
#: malcontent-control/application.c:421
#, c-format
msgid ""
"Its recommended that restrictions are set as part of an ongoing "
@ -362,30 +319,30 @@ msgstr ""
"internet-safety'>Du kan läsa denna guide</a> (på engelska) om vad som finns "
"att ta i beaktande."
#: malcontent-control/carousel.ui:48
#: malcontent-control/carousel.ui:38
msgid "Previous Page"
msgstr "Föregående sida"
#: malcontent-control/carousel.ui:74
#: malcontent-control/carousel.ui:57
msgid "Next Page"
msgstr "Nästa sida"
#: malcontent-control/main.ui:115
#: malcontent-control/main.ui:87
msgid "Permission Required"
msgstr "Behörighet krävs"
#: malcontent-control/main.ui:129
#: malcontent-control/main.ui:88
msgid ""
"Permission is required to view and change user parental controls settings."
msgstr ""
"Behörighet krävs för att visa och ändra inställningar för föräldrakontroll "
"för användare."
#: malcontent-control/main.ui:182
#: malcontent-control/main.ui:110
msgid "No Standard User Accounts"
msgstr "Inga standardanvändarkonton"
#: malcontent-control/main.ui:197
#: malcontent-control/main.ui:111
msgid ""
"Parental controls can only be applied to standard user\n"
"accounts. These can be created in the user settings."
@ -394,19 +351,19 @@ msgstr ""
"standardanvändarkonton. Dessa kan skapas i\n"
"användarinställningarna."
#: malcontent-control/main.ui:210
#: malcontent-control/main.ui:115
msgid "_User Settings"
msgstr "_Användarinställningar"
#: malcontent-control/main.ui:238
#: malcontent-control/main.ui:138
msgid "Loading…"
msgstr "Läser in…"
#: malcontent-control/main.ui:301
#: malcontent-control/main.ui:171
msgid "_Help"
msgstr "_Hjälp"
#: malcontent-control/main.ui:305
#: malcontent-control/main.ui:175
msgid "_About Parental Controls"
msgstr "_Om Föräldrakontroller"
@ -431,12 +388,12 @@ msgstr ""
msgid "Main window"
msgstr "Huvudfönster"
#: malcontent-control/org.freedesktop.MalcontentControl.appdata.xml.in:38
#: malcontent-control/org.freedesktop.MalcontentControl.appdata.xml.in:39
msgid "The GNOME Project"
msgstr "GNOME-projektet"
#. Translators: Search terms to find this application. Do NOT translate or localise the semicolons! The list MUST also end with a semicolon!
#: malcontent-control/org.freedesktop.MalcontentControl.desktop.in:13
#: malcontent-control/org.freedesktop.MalcontentControl.desktop.in:14
msgid ""
"parental controls;screen time;app restrictions;web browser restrictions;oars;"
"usage;usage limit;kid;child;"
@ -478,26 +435,3 @@ msgstr "Användaren ”%s” har ingen återstående tid"
#, c-format
msgid "Error setting time limit on login session: %s"
msgstr "Fel vid inställning av tidsgräns på inloggningssession: %s"
#~ msgid "Not allowed to query session limits data for user %u"
#~ msgstr "Ej tillåtet att efterfråga sessionsgränsdata för användare %u"
#~ msgid "Applications installed by %s will not appear for other users."
#~ msgstr "Program installerade av %s kommer inte visas för andra användare."
# Systeminstallation ej tillåtet, användaren kan bara installera åt sig själv
#~ msgid "Restrict Application Installation for _Others"
#~ msgstr "Begränsa installation av program åt _andra"
#~ msgid "No Child Users Configured"
#~ msgstr "Inga barnanvändare konfigurerade"
#~ msgid ""
#~ "No child users are currently set up on the system. Create one before "
#~ "setting up their parental controls."
#~ msgstr ""
#~ "Inga barnanvändare har konfigurerats på systemet. Skapa en innan du "
#~ "konfigurerar deras föräldrakontroller."
#~ msgid "Create _Child User"
#~ msgstr "Skapa _barnanvändare"