diff options
author | Saulo Moraes <s.moraes@samsung.com> | 2017-09-19 10:20:43 -0300 |
---|---|---|
committer | Saulo Aldighieri Moraes <s.moraes@samsung.com> | 2017-09-19 10:21:03 -0300 |
commit | b480fa9f5cc75492da87597666932b96c93bc750 (patch) | |
tree | 1623d5719d13b0f5be6ecd5ef41b0da8edbfd884 | |
parent | 0f4721c49418111f6ff3ca8f58a328315e95bd13 (diff) | |
download | privacy-setting-b480fa9f5cc75492da87597666932b96c93bc750.tar.gz privacy-setting-b480fa9f5cc75492da87597666932b96c93bc750.tar.bz2 privacy-setting-b480fa9f5cc75492da87597666932b96c93bc750.zip |
Adding DLP feature
Change-Id: I52dfd0a7610b40febc8a9b739a3c4629bfd7c8cd
81 files changed, 20786 insertions, 10 deletions
diff --git a/common/include/common_ctxpopup.h b/common/include/common_ctxpopup.h new file mode 100644 index 0000000..eaea655 --- /dev/null +++ b/common/include/common_ctxpopup.h @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2017 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/** + * @file common_ctxpopup.h + * @version 1.0 + * @brief Helper functions that encapsulate ctxpopup menus creation and deletion. + * @see https://developer.tizen.org/development/guides/native-application/user-interface/efl/ui-components/mobile-ui-components/ctxpopup + */ + +#ifndef __UI_PRIVACY_SETTING_COMMON_CTXPOPUP_H_ +#define __UI_PRIVACY_SETTING_COMMON_CTXPOPUP_H_ + +#include "common_utils.h" +#include <Elementary.h> + +/** + * @brief create a ctxpopup object + * @param[in] ad app_data + * + * @return the ctxpopup object + */ +Evas_Object *create_ctxpop(struct app_data_s *ad); + +/** + * @brief delete a ctxpopup object + * @param[in] ctxpopup the ctxpopup to delete + * + */ +void delete_ctxpopup(Evas_Object *ctxpopup); + +#endif diff --git a/common/include/common_edit_field.h b/common/include/common_edit_field.h new file mode 100644 index 0000000..cf7f714 --- /dev/null +++ b/common/include/common_edit_field.h @@ -0,0 +1,114 @@ +/* + * Copyright (c) 2017 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/** + * @file common_edit_field.h + * @version 1.0 + * @brief Helper functions that encapsulate text entry objects. + */ + +#ifndef __UI_PRIVACY_SETTING_COMMON_EDIT_FIELD_H_ +#define __UI_PRIVACY_SETTING_COMMON_EDIT_FIELD_H_ + +#include <efl_extension.h> +#include <stdbool.h> + +typedef void dlp_edit_field; + +typedef struct { + Evas_Smart_Cb changed_cb; + void *data; +} dlp_edit_field_changed_cb_s; + +/** + * @brief get the text from an edit_field entry + * @param[in] edit_field an edit_field struct + * + * @return the text from the entry + */ +const char *get_text_from_edit_field(dlp_edit_field *edit_field); + +/** + * @brief get the edit field (layout element) from an edit_field struct + * @param[in] edit_field an edit_field struct + * + * @return the layout object + */ +Evas_Object *get_evas_edit_field(dlp_edit_field *edit_field); + +/** + * @brief check if the text is empty for an edit_field + * @param[in] edit_field the edit_field struct + * + * @return true if the text is empty + */ +bool is_edit_field_empty(dlp_edit_field *edit_field); + +/** + * @brief create and add an edit_field widget to a grid widget + * @param[in] rule_grid a grid widget for the container + * @param[in] text the text to set in the edit_field entry + * @param[in] editable true if the text can be edited + * @param[in] limit_size filter limit size (may be NULL) + * @param[in] col the start column to attach the entry field + * @param[in] row the start row to attach the entry field + * @param[in] col_span the column width for the entry field + * @param[in] row_span the row height for the entry field + * @param[in] changed_cb_data a callback for when the entry data is changed + * + * @return the new edit_field struct + * @see free_edit_field() + */ +dlp_edit_field *add_edit_field_to_grid( + Evas_Object *rule_grid, + const char *text, + bool editable, + const Elm_Entry_Filter_Limit_Size *limit_size, + int col, + int row, + int col_span, + int row_span, + dlp_edit_field_changed_cb_s *changed_cb_data); + +/** + * @brief create an edit_field widget and struct + * @param[in] parent a container widget to hold the entry_field + * @param[in] guide_text the guide text to set for the edit_field entry + * @param[in] text the text to set in the edit_field entry + * @param[in] multiline true if the entry widget can hold multiline text + * @param[in] editable true if the text can be edited + * @param[in] limit_size maximum number of characters or bytes allowed (may be NULL) + * @param[in] changed_cb_data a callback for when the entry data is changed + * + * @return the new edit_field struct + * @see free_edit_field() + */ +dlp_edit_field *create_edit_field( + Evas_Object *parent, + const char *guide_text, + const char* text, + bool multiline, + bool editable, + const Elm_Entry_Filter_Limit_Size *limit_size, + dlp_edit_field_changed_cb_s *changed_cb); + +/** + * @brief free an edit_field struct + * @param[in] edit_field an edit_field struct + * + */ +void free_edit_field(dlp_edit_field *edit_field); + +#endif diff --git a/common/include/common_popup.h b/common/include/common_popup.h new file mode 100644 index 0000000..430e284 --- /dev/null +++ b/common/include/common_popup.h @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2017 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/** + * @file common_popup.h + * @version 1.0 + * @brief Helper functions for the two button popup + */ + +#ifndef __UI_PRIVACY_SETTING_COMMON_POPUP_H_ +#define __UI_PRIVACY_SETTING_COMMON_POPUP_H_ + +#include <efl_extension.h> + +/** + * @brief destroy a popup object + * @param[in] popup The popup object to destroy + * + */ +void destroy_popup(Evas_Object *popup); + +/** + * @brief create a two button popup object + * @param[in] parent The parent widget + * @param[in] popup_title The title text + * @param[in] popup_text The text to display in the popup + * @param[in] button1_label The button text for button1 + * @param[in] button1_cb The callback function for when button1 is clicked + * @param[in] button2_label The button text for button2 + * @param[in] button2_cb The callback function for when button2 is clicked + * @param[in] dismiss_popup_cb The callback function for when the popup is dismissed + * @param[in] data User data to be passed to the callback funtions + * + * @return the ctxpopup object + * @see destroy_popup() + */Evas_Object* create_two_buttons_popup( + Evas_Object *parent, + const char *popup_title, + const char *popup_text, + const char *button1_label, + Evas_Smart_Cb button1_cb, + const char *button2_label, + Evas_Smart_Cb button2_cb, + Evas_Smart_Cb dismiss_popup_cb, + void* data); + +#endif diff --git a/common/include/common_utils.h b/common/include/common_utils.h index 0eace1f..4e05bea 100644 --- a/common/include/common_utils.h +++ b/common/include/common_utils.h @@ -1,4 +1,4 @@ -/** +/* * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -13,11 +13,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -/* - * @file common_utils.h +/** + * @file common_utils.h * @author Yunjin Lee (yunjin-.lee@samsung.com) * @version 1.0 - * @brief + * @brief Miscelleneous utility functions for the privacy-setting interface */ #ifndef __UI_PRIVACY_SETTING_COMMON_UTILS_H_ @@ -62,8 +62,69 @@ extern "C" { Evas_Object *common_genlist_add(Evas_Object *parent); + +/** + * @brief add a back button to the screen + * @param[in] ad pointer to app_data struct + * + * @return the button object + */ Evas_Object *common_back_btn_add(struct app_data_s *ad); +/** + * @brief Adds a button to a naviframe + * @param[in] nf The naviframe to which the button will be added + * @param[in] nf_it The naviframe part in which the button will be displayed + * @param[in] left_side If true, button will be diplayed on the screen's left. If false, button will be displayed on the screen's right + * @param[in] text The text to be displayed on the button + * @param[in] btn_clicked_cb The callback to be called when the button is pressed + * @param[in] data The data to be passed to the callback + * @return a pointer to the added button + */ +Evas_Object *common_naviframe_btn_add( + Evas_Object *nf, + Elm_Object_Item *nf_it, + const bool left_side, + const char* text, + Evas_Smart_Cb btn_clicked_cb, + void* data); + +/** + * @brief add a check button to the screen + * @param[in] parent parent widget to add to + * + * @return the checkbutton object + */ +Evas_Object *common_create_check(Evas_Object *parent); + +/** + * @brief display a toast message + * @param[in] text the text to display + * @param[in] obj the parent object + * + */ +void show_toast_notification(const char *text, Evas_Object *obj); + +/** + * @brief Frees a DLP rule structure + * @param[in] rule pointer to a valid get_custom_rule_s structure + */ +void free_dlp_rule(void *rule); + +/** + * @brief Frees a DLP pattern structure + * @param[in] pattern pointer to a valid pattern_s structure + */ +void free_dlp_pattern(void *pattern); + +/** + * @brief get the patterns that are currently in use by some custom rule + * @param[out] patterns_not_in_use_list a list of ints containing the IDs of the patterns currently in use by some custom rule + * + * @return true if the function succeeds, false if otherwise +*/ +bool get_pattern_ids_in_use_list(GList **patterns_not_in_use_list); + #ifdef _cplusplus } #endif diff --git a/common/src/common_ctxpopup.c b/common/src/common_ctxpopup.c new file mode 100644 index 0000000..a2b6d88 --- /dev/null +++ b/common/src/common_ctxpopup.c @@ -0,0 +1,67 @@ +/** + * Copyright (c) 2017 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/** + * @file common_ctxpopup.c + * @version 1.0 + * @brief Helper functions that encapsulate ctxpopup menus creation and deletion. + */ + +#include "common_ctxpopup.h" +#include <efl_extension.h> + +static void _dismiss_menu_cb(void *data, Evas_Object *obj, void *event_info) +{ + delete_ctxpopup(obj); +} + +void move_menu_popup(Evas_Object *app_win, Evas_Object *ctxpopup) +{ + Evas_Coord w, h; + int pos = -1; + + elm_win_screen_size_get(app_win, NULL, NULL, &w, &h); + pos = elm_win_rotation_get(app_win); + + switch (pos) { + case 0: + case 180: + evas_object_move(ctxpopup, 0, h); + break; + case 90: + evas_object_move(ctxpopup, 0, w); + break; + case 270: + evas_object_move(ctxpopup, h, w); + break; + } +} + +void delete_ctxpopup(Evas_Object *ctxpopup) +{ + evas_object_del(ctxpopup); +} + +Evas_Object *create_ctxpop(struct app_data_s *ad) +{ + Evas_Object *ctxpopup = elm_ctxpopup_add(ad->nf); + elm_object_style_set(ctxpopup, "more/default"); + elm_ctxpopup_auto_hide_disabled_set(ctxpopup, EINA_TRUE); + eext_object_event_callback_add(ctxpopup, EEXT_CALLBACK_BACK, _dismiss_menu_cb, NULL); + evas_object_smart_callback_add(ctxpopup, "dismissed", _dismiss_menu_cb, NULL); + move_menu_popup(ad->win, ctxpopup); + evas_object_show(ctxpopup); + return ctxpopup; +} diff --git a/common/src/common_edit_field.c b/common/src/common_edit_field.c new file mode 100644 index 0000000..854dd21 --- /dev/null +++ b/common/src/common_edit_field.c @@ -0,0 +1,169 @@ +/* + * Copyright (c) 2017 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/** + * @file common_edit_field.c + * @version 1.0 + * @brief Helper functions that encapsulate text entry objects. + */ + +#include "common_utils.h" + +#include "common_edit_field.h" + +typedef struct { + Evas_Object *edit_field; + Evas_Object *entry; + dlp_edit_field_changed_cb_s *changed_cb; +} dlp_edit_field_data_s; + +static void _edit_field_focused_cb(void *data, Evas_Object *obj, void *event_info) +{ + Evas_Object *edit_field = (Evas_Object *)data; + elm_object_signal_emit(edit_field, "elm,state,focused", ""); + + if (!elm_entry_is_empty(obj)) + elm_object_signal_emit(edit_field, "elm,action,show,button", ""); +} + +static void _edit_field_unfocused_cb(void *data, Evas_Object *obj, void *event_info) +{ + Evas_Object *edit_field = (Evas_Object *)data; + elm_object_signal_emit(edit_field, "elm,state,unfocused", ""); + elm_object_signal_emit(edit_field, elm_entry_is_empty(obj) ? "elm,action,hide,button" : "elm,action,show,button", ""); +} + +static void _edit_field_changed_cb(void *data, Evas_Object *obj, void *event_info) +{ + dlp_edit_field_data_s *edit_field = data; + elm_object_signal_emit(edit_field->edit_field, elm_entry_is_empty(obj) ? "elm,action,hide,button" : "elm,action,show,button", ""); + if (NULL != edit_field->changed_cb) + edit_field->changed_cb->changed_cb(edit_field->changed_cb->data, obj, event_info); +} + +static void _edit_field_clear_button_clicked_cb(void *data, Evas_Object *obj, void *event_info) +{ + Evas_Object *entry = (Evas_Object *)data; + elm_entry_entry_set(entry, ""); +} + +const char *get_text_from_edit_field(dlp_edit_field *edit_field) +{ + if (NULL == edit_field) { + LOGE("Invalid parameter"); + return NULL; + } + dlp_edit_field_data_s *data = edit_field; + Evas_Object *entry = elm_object_part_content_get(data->edit_field, "elm.swallow.content"); + return elm_entry_entry_get(entry); +} + +Evas_Object *get_evas_edit_field(dlp_edit_field *edit_field) +{ + if (NULL == edit_field) { + LOGE("Invalid parameter"); + return NULL; + } + dlp_edit_field_data_s *data = edit_field; + return data->edit_field; +} + +bool is_edit_field_empty(dlp_edit_field *edit_field) +{ + if (NULL == edit_field) { + LOGW("NULL parameter"); + return true; + } + dlp_edit_field_data_s *data = edit_field; + return elm_entry_is_empty(data->entry) ? true : false; +} + +dlp_edit_field *add_edit_field_to_grid( + Evas_Object *rule_grid, + const char *text, + bool editable, + const Elm_Entry_Filter_Limit_Size *limit_size, + int col, + int row, + int col_span, + int row_span, + dlp_edit_field_changed_cb_s *changed_cb_data) +{ + dlp_edit_field *edit_field = create_edit_field(rule_grid, "", text, false, editable, limit_size, changed_cb_data); + elm_grid_pack(rule_grid, get_evas_edit_field(edit_field), col, row, col_span, row_span); + return edit_field; +} + +dlp_edit_field *create_edit_field( + Evas_Object *parent, + const char *guide_text, + const char* text, + bool multiline, + bool editable, + const Elm_Entry_Filter_Limit_Size *limit_size, + dlp_edit_field_changed_cb_s *changed_cb) +{ + if (NULL == parent) { + LOGE("Invalid parameter"); + return NULL; + } + + dlp_edit_field_data_s *data = malloc(sizeof(dlp_edit_field_data_s)); + if (NULL == data) { + LOGE("Failed to allocate memory"); + return NULL; + } + data->edit_field = elm_layout_add(parent); + data->entry = elm_entry_add(data->edit_field); + data->changed_cb = changed_cb; + + elm_layout_theme_set(data->edit_field, "layout", "application", "default"); + evas_object_size_hint_weight_set(data->edit_field, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(data->edit_field, EVAS_HINT_FILL, 0); + evas_object_show(data->edit_field); + + elm_entry_single_line_set(data->entry, !(Eina_Bool)multiline); + elm_entry_scrollable_set(data->entry, EINA_TRUE); + if (NULL != limit_size) + elm_entry_markup_filter_append(data->entry, elm_entry_filter_limit_size, (void *)limit_size); + + if (editable) { + elm_entry_editable_set(data->entry, EINA_TRUE); + elm_layout_theme_set(data->edit_field, "layout", "editfield", multiline ? "multiline" : "singleline"); + + evas_object_smart_callback_add(data->entry, "focused", _edit_field_focused_cb, data->edit_field); + evas_object_smart_callback_add(data->entry, "unfocused", _edit_field_unfocused_cb, data->edit_field); + evas_object_smart_callback_add(data->entry, "changed", _edit_field_changed_cb, data); + evas_object_smart_callback_add(data->entry, "preedit,changed", _edit_field_changed_cb, data->edit_field); + + Evas_Object *clear_button = elm_button_add(data->edit_field); + elm_object_style_set(clear_button, "editfield_clear"); + evas_object_smart_callback_add(clear_button, "clicked", _edit_field_clear_button_clicked_cb, data->entry); + elm_object_part_content_set(data->edit_field, "elm.swallow.button", clear_button); + } else + elm_entry_editable_set(data->entry, EINA_FALSE); + + elm_entry_entry_set(data->entry, text); + elm_object_part_text_set(data->entry, "elm.guide", guide_text); + elm_object_part_content_set(data->edit_field, "elm.swallow.content", data->entry); + evas_object_show(data->edit_field); + + return data; +} + +void free_edit_field(dlp_edit_field *edit_field) +{ + free((dlp_edit_field_data_s *)edit_field); +} diff --git a/common/src/common_popup.c b/common/src/common_popup.c new file mode 100644 index 0000000..47c390c --- /dev/null +++ b/common/src/common_popup.c @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2017 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/** + * @file common_popup.c + * @version 1.0 + * @brief Helper functions for the two button popup + */ + +#include <efl_extension.h> +#include "common_popup.h" + +void destroy_popup(Evas_Object *popup) +{ + elm_popup_dismiss(popup); + evas_object_del(popup); +} + +void add_button_to_popup(Evas_Object *popup, void *data, const char* button_text, const char* button_part, Evas_Smart_Cb button_callback) +{ + Evas_Object *button = elm_button_add(popup); + elm_object_style_set(button, "popup"); + elm_object_text_set(button, button_text); + elm_object_part_content_set(popup, button_part, button); + evas_object_smart_callback_add(button, "clicked", button_callback, data); +} + +Evas_Object* create_two_buttons_popup(Evas_Object *parent, const char *popup_title, const char *popup_text, + const char *button1_label, Evas_Smart_Cb button1_cb, const char *button2_label, + Evas_Smart_Cb button2_cb, Evas_Smart_Cb dismiss_popup_cb, void* data) +{ + /* Create the popup */ + Evas_Object *popup = elm_popup_add(parent); + elm_popup_align_set(popup, ELM_NOTIFY_ALIGN_FILL, 1.0); + evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + + /* Add title and text to popup */ + elm_object_part_text_set(popup, "title,text", popup_title); + elm_object_text_set(popup, popup_text); + + /* Add "OK" and "Cancel" buttons to popup */ + add_button_to_popup(popup, data, button1_label, "button1", button1_cb); + add_button_to_popup(popup, data, button2_label, "button2", button2_cb); + + /* Add callback to popup dismiss popup when user press the hardware back key */ + eext_object_event_callback_add(popup, EEXT_CALLBACK_BACK, dismiss_popup_cb, data); + + /* Display popup */ + evas_object_show(popup); + + return popup; +} diff --git a/common/src/common_utils.c b/common/src/common_utils.c index 9acd88f..bacb394 100644 --- a/common/src/common_utils.c +++ b/common/src/common_utils.c @@ -13,11 +13,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -/* +/** * @file common_utils.c - * @author Yunjin Lee (yunjin-.lee@samsung.com) - * @version 1.0 - * @brief + * @author Yunjin Lee (yunjin-.lee@samsung.com) + * @version 1.0 + * @brief Miscelleneous utility functions for the privacy-setting interface */ #include <efl_extension.h> @@ -55,3 +55,119 @@ Evas_Object *common_back_btn_add(struct app_data_s *ad) return btn; } + +/** + * @brief Adds a button to a naviframe + * @param[in] nf The naviframe to which the button will be added + * @param[in] nf_it The naviframe part in which the button will be displayed + * @param[in] left_side If true, button will be diplayed on the screen's left. If false, button will be displayed on the screen's right + * @param[in] text The text to be displayed on the button + * @param[in] btn_clicked_cb The callback to be called when the button is pressed + * @param[in] data The data to be passed to the callback + * @return a pointer to the added button + */ +Evas_Object *common_naviframe_btn_add( + Evas_Object *nf, + Elm_Object_Item *nf_it, + const bool left_side, + const char* text, + Evas_Smart_Cb btn_clicked_cb, + void* data) +{ + Evas_Object *btn = elm_button_add(nf); + elm_object_style_set(btn, left_side ? "naviframe/title_left" : "naviframe/title_right"); + elm_object_item_part_content_set(nf_it, left_side ? "title_left_btn" : "title_right_btn", btn); + elm_object_text_set(btn, text); + evas_object_smart_callback_add(btn, "clicked", btn_clicked_cb, data); + return btn; +} + +Evas_Object *common_create_check(Evas_Object *parent) +{ + Evas_Object *check; + check = elm_check_add(parent); + elm_check_state_set(check, EINA_FALSE); + return check; +} + +static void _dismissed_toast_cb(void *data, Evas_Object *obj, void *event_info) +{ + evas_object_del(obj); +} + +void show_toast_notification(const char *text, Evas_Object *obj) +{ + Evas_Object *toast = elm_popup_add(obj); + elm_object_style_set(toast, "toast"); + evas_object_size_hint_weight_set(toast, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + eext_object_event_callback_add(toast, EEXT_CALLBACK_BACK, eext_popup_back_cb, NULL); + + elm_object_text_set(toast, text); + + evas_object_smart_callback_add(toast, "block,clicked", _dismissed_toast_cb, obj); + elm_popup_timeout_set(toast, 2.0); + evas_object_smart_callback_add(toast, "timeout", _dismissed_toast_cb, obj); + + evas_object_show(toast); +} + +/** + * @brief Frees a DLP rule structure + * @param[in] rule pointer to a valid get_custom_rule_s structure + */ +void free_dlp_rule(void *rule) +{ + free((get_custom_rule_s *)rule); +} + +/** + * @brief Frees a DLP pattern structure + * @param[in] pattern pointer to a valid pattern_s structure + */ +void free_dlp_pattern(void *pattern) +{ + free((get_pattern_s *)pattern); +} + +static bool _get_pattern_ids_in_use_cb( + int id, + PgDlpAction action, + int pattern_id, + const char *name, + const char *description, + const char *application_id, + int leaks_count, + void *user_data) +{ + GList **pattern_ids_in_use_list = user_data; + *pattern_ids_in_use_list = g_list_prepend(*pattern_ids_in_use_list, GINT_TO_POINTER(pattern_id)); + return true; +} + +gint _compare_pattern_id_cb(gconstpointer lhs, gconstpointer rhs) +{ + const int lhs_int = GPOINTER_TO_INT(lhs); + const int rhs_int = GPOINTER_TO_INT(rhs); + if (lhs_int < rhs_int) + return -1; + else if (lhs_int == rhs_int) + return 0; + else + return 1; +} + +bool get_pattern_ids_in_use_list(GList **pattern_ids_in_use_list) +{ + *pattern_ids_in_use_list = NULL; + + const int res = privacy_guard_client_foreach_dlp_rules(getuid(), PRIV_GUARD_DLP_PROFILE_CUSTOM, + _get_pattern_ids_in_use_cb, pattern_ids_in_use_list); + if (PRIV_GUARD_ERROR_SUCCESS != res) { + LOGE("privacy_guard_client_foreach_dlp_rules() failed. [%d]", res); + return false; + } + + *pattern_ids_in_use_list = g_list_sort(*pattern_ids_in_use_list, _compare_pattern_id_cb); + + return true; +} @@ -31,3 +31,272 @@ msgstr "للمرة %d" msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB" msgstr "الخصوصية والحماية" +msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA" +msgstr "Prevent apps from leaking your sensitive data without authorisation." + +msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA" +msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts." + +msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA" +msgstr "Protection mode" + +msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA" +msgstr "Basic" + +msgid "IDS_ST_SBODY_MONITOR_YOUR_MAIN_SENSITIVE_DATA_TO_PREVENT_IT_FROM_BEING_LEAKED_BY_MOST_APPS_THIS_MODE_IS_SUITABLE_FOR_REGULAR_USERS_SWA" +msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users." + +msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA" +msgstr "Advanced" + +msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA" +msgstr "Set up strict rules to prevent data leakage." + +msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA" +msgstr "This mode will affect app performance." + +msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA" +msgstr "Some apps may be blocked." + +msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA" +msgstr "Turn on Advanced protection mode" + +msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA" +msgstr "Change default rules and patterns and create your own to set up a customised protection mode." + +msgid "IDS_ST_HEADER_REPORTS_SWA" +msgstr "Reports" + +msgid "IDS_ST_MBODY_FULL_REPORTS_SWA" +msgstr "Full reports" + +msgid "IDS_ST_MBODY_APP_RANKINGS_SWA" +msgstr "App rankings" + +msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA" +msgstr "Data statistics" + +msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA" +msgstr "Rules and patterns" + +msgid "IDS_ST_NPBODY_NO_REPORTS_SWA" +msgstr "No reports" + +msgid "IDS_ST_HEADER_SETTINGS_SWA" +msgstr "Settings" + +msgid "IDS_ST_MBODY_KEEP_LOGS_SWA" +msgstr "Keep logs" + +msgid "IDS_LOGS_CLEANED" +msgstr "Logs cleaned" + +msgid "IDS_LOGS_CLEANED_FAILED" +msgstr "Failed to clean logs" + +msgid "IDS_ST_OPT_1_WEEK_SWA" +msgstr "1 week" + +msgid "IDS_ST_OPT_1_DAY_SWA" +msgstr "1 day" + +msgid "IDS_ST_OPT_1_MONTH_SWA" +msgstr "1 month" + +msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA" +msgstr "Report details" + +msgid "IDS_ST_BODY_CATEGORY_C_SWA" +msgstr "Category:" + +msgid "IDS_ST_BODY_APP_C_SWA" +msgstr "App:" + +msgid "IDS_ST_BODY_DESTINATION_C_SWA" +msgstr "Destination:" + +msgid "IDS_ST_BODY_PATTERN_C_SWA" +msgstr "Pattern:" + +msgid "IDS_ST_BODY_DLP_ACTION" +msgstr "Action" + +msgid "IDS_ST_BODY_PACKET_C_SWA" +msgstr "Packet:" + +msgid "IDS_ST_BODY_DLP_ACTION_ALLOW" +msgstr "Allow" + +msgid "IDS_ST_BODY_DLP_ACTION_DENY" +msgstr "Deny" + +msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE" +msgstr "Sanitize" + +msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES" +msgstr "All Rules" + +msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA" +msgstr "Quick" + +msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA" +msgstr "Create rules quickly and easily." + +msgid "IDS_ST_MBODY_CUSTOM_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CREATE_RULES_FROM_SCRATCH_TO_GIVE_YOU_FULL_CONTROL_OF_YOUR_DATA_PROTECTION_USE_THIS_OPTION_TO_CREATE_NON_STANDARD_RULES_SWA" +msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules." + +msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA" +msgstr "Custom protection mode" + +msgid "IDS_ST_TAB_RULES_SWA" +msgstr "Rules" + +msgid "IDS_ST_TAB_PATTERNS_SWA" +msgstr "Patterns" + +msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA" +msgstr "Select template" + +msgid "IDS_ST_HEADER_SELECT_APPS_SWA" +msgstr "Select apps" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION" +msgstr "Select Action" + +msgid "IDS_ST_ACBUTTON_NEXT_SWA" +msgstr "NEXT" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK" +msgstr "OK" + +msgid "IDS_ST_ACBUTTON_DONE_SWA" +msgstr "DONE" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE" +msgstr "Rule created." + +msgid "IDS_ST_TPOP_RULE_DELETED_SWA" +msgstr "Rule deleted." + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE" +msgstr "Delete Rule" + +msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA" +msgstr "Delete patterns" + +msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA" +msgstr "This rule will be deleted." + +msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA" +msgstr "Create pattern" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN" +msgstr "Custom" + +msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA" +msgstr "%d patterns deleted." + +msgid "IDS_ST_OPT_EDIT_SWA" +msgstr "Edit" + +msgid "IDS_ST_OPT_CREATE_SWA" +msgstr "Create" + +msgid "IDS_ST_OPT_ALL_PATTERNS_SWA" +msgstr "All patterns" + +msgid "IDS_ST_BODY_NAME_SWA" +msgstr "Name" + +msgid "IDS_ST_BODY_DESCRIPTION_SWA" +msgstr "Description" + +msgid "IDS_ST_BODY_CATEGORY_SWA" +msgstr "Category" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME" +msgstr "Category name" + +msgid "IDS_ST_OPT_STRING_MATCH_SWA" +msgstr "String match" + +msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA" +msgstr "Regular expression" + +msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d patterns will be deleted." + +msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA" +msgstr "This report will be deleted." + +msgid "IDS_ST_OPT_DELETE_SWA" +msgstr "Delete" + +msgid "IDS_ST_HEADER_DELETE_REPORT_SWA" +msgstr "Delete report" + +msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d reports will be deleted." + +msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA" +msgstr "1 report deleted." + +msgid "IDS_ST_MBODY_SELECT_ALL_SWA" +msgstr "Select all" + +msgid "IDS_ST_ACBUTTON_DELETE_SWA" +msgstr "DELETE" + +msgid "IDS_ST_ACBUTTON_CANCEL_SWA" +msgstr "CANCEL" + +msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA" +msgstr "%d reports deleted." + +msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA" +msgstr "Select items" + +msgid "IDS_ST_HEADER_PD_SELECTED_SWA" +msgstr "%d selected" + +msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Basic protection mode turned on." + +msgid "IDS_ST_TPOP_RULE_CREATED_SWA" +msgstr "Rule created. Custom protection mode turned on." + +msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Advanced protection mode turned on." + +msgid "IDS_ST_HEADER_DETAILS_SWA" +msgstr "Details" + +msgid "IDS_ST_BODY_STRING_TYPE_SWA" +msgstr "String type" + +msgid "IDS_ST_BODY_SEARCH_TERM_SWA" +msgstr "Search term" + +msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA" +msgstr "Leaks captured" + +msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA" +msgstr "Total leaks" + +msgid "IDS_ST_HEADER_RULE_DETAILS_SWA" +msgstr "Rule details" + +msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA" +msgstr "Pattern details" @@ -31,3 +31,272 @@ msgstr "%d dəfə" msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB" msgstr "Məxfilik və təhlükəs" +msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA" +msgstr "Prevent apps from leaking your sensitive data without authorisation." + +msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA" +msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts." + +msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA" +msgstr "Protection mode" + +msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA" +msgstr "Basic" + +msgid "IDS_ST_SBODY_MONITOR_YOUR_MAIN_SENSITIVE_DATA_TO_PREVENT_IT_FROM_BEING_LEAKED_BY_MOST_APPS_THIS_MODE_IS_SUITABLE_FOR_REGULAR_USERS_SWA" +msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users." + +msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA" +msgstr "Advanced" + +msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA" +msgstr "Set up strict rules to prevent data leakage." + +msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA" +msgstr "This mode will affect app performance." + +msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA" +msgstr "Some apps may be blocked." + +msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA" +msgstr "Turn on Advanced protection mode" + +msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA" +msgstr "Change default rules and patterns and create your own to set up a customised protection mode." + +msgid "IDS_ST_HEADER_REPORTS_SWA" +msgstr "Reports" + +msgid "IDS_ST_MBODY_FULL_REPORTS_SWA" +msgstr "Full reports" + +msgid "IDS_ST_MBODY_APP_RANKINGS_SWA" +msgstr "App rankings" + +msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA" +msgstr "Data statistics" + +msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA" +msgstr "Rules and patterns" + +msgid "IDS_ST_NPBODY_NO_REPORTS_SWA" +msgstr "No reports" + +msgid "IDS_ST_HEADER_SETTINGS_SWA" +msgstr "Settings" + +msgid "IDS_ST_MBODY_KEEP_LOGS_SWA" +msgstr "Keep logs" + +msgid "IDS_LOGS_CLEANED" +msgstr "Logs cleaned" + +msgid "IDS_LOGS_CLEANED_FAILED" +msgstr "Failed to clean logs" + +msgid "IDS_ST_OPT_1_WEEK_SWA" +msgstr "1 week" + +msgid "IDS_ST_OPT_1_DAY_SWA" +msgstr "1 day" + +msgid "IDS_ST_OPT_1_MONTH_SWA" +msgstr "1 month" + +msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA" +msgstr "Report details" + +msgid "IDS_ST_BODY_CATEGORY_C_SWA" +msgstr "Category:" + +msgid "IDS_ST_BODY_APP_C_SWA" +msgstr "App:" + +msgid "IDS_ST_BODY_DESTINATION_C_SWA" +msgstr "Destination:" + +msgid "IDS_ST_BODY_PATTERN_C_SWA" +msgstr "Pattern:" + +msgid "IDS_ST_BODY_DLP_ACTION" +msgstr "Action" + +msgid "IDS_ST_BODY_PACKET_C_SWA" +msgstr "Packet:" + +msgid "IDS_ST_BODY_DLP_ACTION_ALLOW" +msgstr "Allow" + +msgid "IDS_ST_BODY_DLP_ACTION_DENY" +msgstr "Deny" + +msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE" +msgstr "Sanitize" + +msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES" +msgstr "All Rules" + +msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA" +msgstr "Quick" + +msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA" +msgstr "Create rules quickly and easily." + +msgid "IDS_ST_MBODY_CUSTOM_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CREATE_RULES_FROM_SCRATCH_TO_GIVE_YOU_FULL_CONTROL_OF_YOUR_DATA_PROTECTION_USE_THIS_OPTION_TO_CREATE_NON_STANDARD_RULES_SWA" +msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules." + +msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA" +msgstr "Custom protection mode" + +msgid "IDS_ST_TAB_RULES_SWA" +msgstr "Rules" + +msgid "IDS_ST_TAB_PATTERNS_SWA" +msgstr "Patterns" + +msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA" +msgstr "Select template" + +msgid "IDS_ST_HEADER_SELECT_APPS_SWA" +msgstr "Select apps" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION" +msgstr "Select Action" + +msgid "IDS_ST_ACBUTTON_NEXT_SWA" +msgstr "NEXT" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK" +msgstr "OK" + +msgid "IDS_ST_ACBUTTON_DONE_SWA" +msgstr "DONE" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE" +msgstr "Rule created." + +msgid "IDS_ST_TPOP_RULE_DELETED_SWA" +msgstr "Rule deleted." + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE" +msgstr "Delete Rule" + +msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA" +msgstr "Delete patterns" + +msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA" +msgstr "This rule will be deleted." + +msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA" +msgstr "Create pattern" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN" +msgstr "Custom" + +msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA" +msgstr "%d patterns deleted." + +msgid "IDS_ST_OPT_EDIT_SWA" +msgstr "Edit" + +msgid "IDS_ST_OPT_CREATE_SWA" +msgstr "Create" + +msgid "IDS_ST_OPT_ALL_PATTERNS_SWA" +msgstr "All patterns" + +msgid "IDS_ST_BODY_NAME_SWA" +msgstr "Name" + +msgid "IDS_ST_BODY_DESCRIPTION_SWA" +msgstr "Description" + +msgid "IDS_ST_BODY_CATEGORY_SWA" +msgstr "Category" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME" +msgstr "Category name" + +msgid "IDS_ST_OPT_STRING_MATCH_SWA" +msgstr "String match" + +msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA" +msgstr "Regular expression" + +msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d patterns will be deleted." + +msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA" +msgstr "This report will be deleted." + +msgid "IDS_ST_OPT_DELETE_SWA" +msgstr "Delete" + +msgid "IDS_ST_HEADER_DELETE_REPORT_SWA" +msgstr "Delete report" + +msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d reports will be deleted." + +msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA" +msgstr "1 report deleted." + +msgid "IDS_ST_MBODY_SELECT_ALL_SWA" +msgstr "Select all" + +msgid "IDS_ST_ACBUTTON_DELETE_SWA" +msgstr "DELETE" + +msgid "IDS_ST_ACBUTTON_CANCEL_SWA" +msgstr "CANCEL" + +msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA" +msgstr "%d reports deleted." + +msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA" +msgstr "Select items" + +msgid "IDS_ST_HEADER_PD_SELECTED_SWA" +msgstr "%d selected" + +msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Basic protection mode turned on." + +msgid "IDS_ST_TPOP_RULE_CREATED_SWA" +msgstr "Rule created. Custom protection mode turned on." + +msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Advanced protection mode turned on." + +msgid "IDS_ST_HEADER_DETAILS_SWA" +msgstr "Details" + +msgid "IDS_ST_BODY_STRING_TYPE_SWA" +msgstr "String type" + +msgid "IDS_ST_BODY_SEARCH_TERM_SWA" +msgstr "Search term" + +msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA" +msgstr "Leaks captured" + +msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA" +msgstr "Total leaks" + +msgid "IDS_ST_HEADER_RULE_DETAILS_SWA" +msgstr "Rule details" + +msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA" +msgstr "Pattern details" @@ -31,3 +31,272 @@ msgstr "%d пъти" msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB" msgstr "Поверителност и защита" +msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA" +msgstr "Prevent apps from leaking your sensitive data without authorisation." + +msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA" +msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts." + +msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA" +msgstr "Protection mode" + +msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA" +msgstr "Basic" + +msgid "IDS_ST_SBODY_MONITOR_YOUR_MAIN_SENSITIVE_DATA_TO_PREVENT_IT_FROM_BEING_LEAKED_BY_MOST_APPS_THIS_MODE_IS_SUITABLE_FOR_REGULAR_USERS_SWA" +msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users." + +msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA" +msgstr "Advanced" + +msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA" +msgstr "Set up strict rules to prevent data leakage." + +msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA" +msgstr "This mode will affect app performance." + +msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA" +msgstr "Some apps may be blocked." + +msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA" +msgstr "Turn on Advanced protection mode" + +msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA" +msgstr "Change default rules and patterns and create your own to set up a customised protection mode." + +msgid "IDS_ST_HEADER_REPORTS_SWA" +msgstr "Reports" + +msgid "IDS_ST_MBODY_FULL_REPORTS_SWA" +msgstr "Full reports" + +msgid "IDS_ST_MBODY_APP_RANKINGS_SWA" +msgstr "App rankings" + +msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA" +msgstr "Data statistics" + +msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA" +msgstr "Rules and patterns" + +msgid "IDS_ST_NPBODY_NO_REPORTS_SWA" +msgstr "No reports" + +msgid "IDS_ST_HEADER_SETTINGS_SWA" +msgstr "Settings" + +msgid "IDS_ST_MBODY_KEEP_LOGS_SWA" +msgstr "Keep logs" + +msgid "IDS_LOGS_CLEANED" +msgstr "Logs cleaned" + +msgid "IDS_LOGS_CLEANED_FAILED" +msgstr "Failed to clean logs" + +msgid "IDS_ST_OPT_1_WEEK_SWA" +msgstr "1 week" + +msgid "IDS_ST_OPT_1_DAY_SWA" +msgstr "1 day" + +msgid "IDS_ST_OPT_1_MONTH_SWA" +msgstr "1 month" + +msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA" +msgstr "Report details" + +msgid "IDS_ST_BODY_CATEGORY_C_SWA" +msgstr "Category:" + +msgid "IDS_ST_BODY_APP_C_SWA" +msgstr "App:" + +msgid "IDS_ST_BODY_DESTINATION_C_SWA" +msgstr "Destination:" + +msgid "IDS_ST_BODY_PATTERN_C_SWA" +msgstr "Pattern:" + +msgid "IDS_ST_BODY_DLP_ACTION" +msgstr "Action" + +msgid "IDS_ST_BODY_PACKET_C_SWA" +msgstr "Packet:" + +msgid "IDS_ST_BODY_DLP_ACTION_ALLOW" +msgstr "Allow" + +msgid "IDS_ST_BODY_DLP_ACTION_DENY" +msgstr "Deny" + +msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE" +msgstr "Sanitize" + +msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES" +msgstr "All Rules" + +msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA" +msgstr "Quick" + +msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA" +msgstr "Create rules quickly and easily." + +msgid "IDS_ST_MBODY_CUSTOM_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CREATE_RULES_FROM_SCRATCH_TO_GIVE_YOU_FULL_CONTROL_OF_YOUR_DATA_PROTECTION_USE_THIS_OPTION_TO_CREATE_NON_STANDARD_RULES_SWA" +msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules." + +msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA" +msgstr "Custom protection mode" + +msgid "IDS_ST_TAB_RULES_SWA" +msgstr "Rules" + +msgid "IDS_ST_TAB_PATTERNS_SWA" +msgstr "Patterns" + +msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA" +msgstr "Select template" + +msgid "IDS_ST_HEADER_SELECT_APPS_SWA" +msgstr "Select apps" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION" +msgstr "Select Action" + +msgid "IDS_ST_ACBUTTON_NEXT_SWA" +msgstr "NEXT" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK" +msgstr "OK" + +msgid "IDS_ST_ACBUTTON_DONE_SWA" +msgstr "DONE" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE" +msgstr "Rule created." + +msgid "IDS_ST_TPOP_RULE_DELETED_SWA" +msgstr "Rule deleted." + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE" +msgstr "Delete Rule" + +msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA" +msgstr "Delete patterns" + +msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA" +msgstr "This rule will be deleted." + +msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA" +msgstr "Create pattern" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN" +msgstr "Custom" + +msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA" +msgstr "%d patterns deleted." + +msgid "IDS_ST_OPT_EDIT_SWA" +msgstr "Edit" + +msgid "IDS_ST_OPT_CREATE_SWA" +msgstr "Create" + +msgid "IDS_ST_OPT_ALL_PATTERNS_SWA" +msgstr "All patterns" + +msgid "IDS_ST_BODY_NAME_SWA" +msgstr "Name" + +msgid "IDS_ST_BODY_DESCRIPTION_SWA" +msgstr "Description" + +msgid "IDS_ST_BODY_CATEGORY_SWA" +msgstr "Category" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME" +msgstr "Category name" + +msgid "IDS_ST_OPT_STRING_MATCH_SWA" +msgstr "String match" + +msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA" +msgstr "Regular expression" + +msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d patterns will be deleted." + +msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA" +msgstr "This report will be deleted." + +msgid "IDS_ST_OPT_DELETE_SWA" +msgstr "Delete" + +msgid "IDS_ST_HEADER_DELETE_REPORT_SWA" +msgstr "Delete report" + +msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d reports will be deleted." + +msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA" +msgstr "1 report deleted." + +msgid "IDS_ST_MBODY_SELECT_ALL_SWA" +msgstr "Select all" + +msgid "IDS_ST_ACBUTTON_DELETE_SWA" +msgstr "DELETE" + +msgid "IDS_ST_ACBUTTON_CANCEL_SWA" +msgstr "CANCEL" + +msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA" +msgstr "%d reports deleted." + +msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA" +msgstr "Select items" + +msgid "IDS_ST_HEADER_PD_SELECTED_SWA" +msgstr "%d selected" + +msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Basic protection mode turned on." + +msgid "IDS_ST_TPOP_RULE_CREATED_SWA" +msgstr "Rule created. Custom protection mode turned on." + +msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Advanced protection mode turned on." + +msgid "IDS_ST_HEADER_DETAILS_SWA" +msgstr "Details" + +msgid "IDS_ST_BODY_STRING_TYPE_SWA" +msgstr "String type" + +msgid "IDS_ST_BODY_SEARCH_TERM_SWA" +msgstr "Search term" + +msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA" +msgstr "Leaks captured" + +msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA" +msgstr "Total leaks" + +msgid "IDS_ST_HEADER_RULE_DETAILS_SWA" +msgstr "Rule details" + +msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA" +msgstr "Pattern details" @@ -31,3 +31,272 @@ msgstr "%d vegades" msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB" msgstr "Privadesa i seguretat" +msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA" +msgstr "Prevent apps from leaking your sensitive data without authorisation." + +msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA" +msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts." + +msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA" +msgstr "Protection mode" + +msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA" +msgstr "Basic" + +msgid "IDS_ST_SBODY_MONITOR_YOUR_MAIN_SENSITIVE_DATA_TO_PREVENT_IT_FROM_BEING_LEAKED_BY_MOST_APPS_THIS_MODE_IS_SUITABLE_FOR_REGULAR_USERS_SWA" +msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users." + +msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA" +msgstr "Advanced" + +msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA" +msgstr "Set up strict rules to prevent data leakage." + +msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA" +msgstr "This mode will affect app performance." + +msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA" +msgstr "Some apps may be blocked." + +msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA" +msgstr "Turn on Advanced protection mode" + +msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA" +msgstr "Change default rules and patterns and create your own to set up a customised protection mode." + +msgid "IDS_ST_HEADER_REPORTS_SWA" +msgstr "Reports" + +msgid "IDS_ST_MBODY_FULL_REPORTS_SWA" +msgstr "Full reports" + +msgid "IDS_ST_MBODY_APP_RANKINGS_SWA" +msgstr "App rankings" + +msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA" +msgstr "Data statistics" + +msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA" +msgstr "Rules and patterns" + +msgid "IDS_ST_NPBODY_NO_REPORTS_SWA" +msgstr "No reports" + +msgid "IDS_ST_HEADER_SETTINGS_SWA" +msgstr "Settings" + +msgid "IDS_ST_MBODY_KEEP_LOGS_SWA" +msgstr "Keep logs" + +msgid "IDS_LOGS_CLEANED" +msgstr "Logs cleaned" + +msgid "IDS_LOGS_CLEANED_FAILED" +msgstr "Failed to clean logs" + +msgid "IDS_ST_OPT_1_WEEK_SWA" +msgstr "1 week" + +msgid "IDS_ST_OPT_1_DAY_SWA" +msgstr "1 day" + +msgid "IDS_ST_OPT_1_MONTH_SWA" +msgstr "1 month" + +msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA" +msgstr "Report details" + +msgid "IDS_ST_BODY_CATEGORY_C_SWA" +msgstr "Category:" + +msgid "IDS_ST_BODY_APP_C_SWA" +msgstr "App:" + +msgid "IDS_ST_BODY_DESTINATION_C_SWA" +msgstr "Destination:" + +msgid "IDS_ST_BODY_PATTERN_C_SWA" +msgstr "Pattern:" + +msgid "IDS_ST_BODY_DLP_ACTION" +msgstr "Action" + +msgid "IDS_ST_BODY_PACKET_C_SWA" +msgstr "Packet:" + +msgid "IDS_ST_BODY_DLP_ACTION_ALLOW" +msgstr "Allow" + +msgid "IDS_ST_BODY_DLP_ACTION_DENY" +msgstr "Deny" + +msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE" +msgstr "Sanitize" + +msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES" +msgstr "All Rules" + +msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA" +msgstr "Quick" + +msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA" +msgstr "Create rules quickly and easily." + +msgid "IDS_ST_MBODY_CUSTOM_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CREATE_RULES_FROM_SCRATCH_TO_GIVE_YOU_FULL_CONTROL_OF_YOUR_DATA_PROTECTION_USE_THIS_OPTION_TO_CREATE_NON_STANDARD_RULES_SWA" +msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules." + +msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA" +msgstr "Custom protection mode" + +msgid "IDS_ST_TAB_RULES_SWA" +msgstr "Rules" + +msgid "IDS_ST_TAB_PATTERNS_SWA" +msgstr "Patterns" + +msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA" +msgstr "Select template" + +msgid "IDS_ST_HEADER_SELECT_APPS_SWA" +msgstr "Select apps" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION" +msgstr "Select Action" + +msgid "IDS_ST_ACBUTTON_NEXT_SWA" +msgstr "NEXT" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK" +msgstr "OK" + +msgid "IDS_ST_ACBUTTON_DONE_SWA" +msgstr "DONE" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE" +msgstr "Rule created." + +msgid "IDS_ST_TPOP_RULE_DELETED_SWA" +msgstr "Rule deleted." + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE" +msgstr "Delete Rule" + +msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA" +msgstr "Delete patterns" + +msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA" +msgstr "This rule will be deleted." + +msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA" +msgstr "Create pattern" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN" +msgstr "Custom" + +msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA" +msgstr "%d patterns deleted." + +msgid "IDS_ST_OPT_EDIT_SWA" +msgstr "Edit" + +msgid "IDS_ST_OPT_CREATE_SWA" +msgstr "Create" + +msgid "IDS_ST_OPT_ALL_PATTERNS_SWA" +msgstr "All patterns" + +msgid "IDS_ST_BODY_NAME_SWA" +msgstr "Name" + +msgid "IDS_ST_BODY_DESCRIPTION_SWA" +msgstr "Description" + +msgid "IDS_ST_BODY_CATEGORY_SWA" +msgstr "Category" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME" +msgstr "Category name" + +msgid "IDS_ST_OPT_STRING_MATCH_SWA" +msgstr "String match" + +msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA" +msgstr "Regular expression" + +msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d patterns will be deleted." + +msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA" +msgstr "This report will be deleted." + +msgid "IDS_ST_OPT_DELETE_SWA" +msgstr "Delete" + +msgid "IDS_ST_HEADER_DELETE_REPORT_SWA" +msgstr "Delete report" + +msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d reports will be deleted." + +msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA" +msgstr "1 report deleted." + +msgid "IDS_ST_MBODY_SELECT_ALL_SWA" +msgstr "Select all" + +msgid "IDS_ST_ACBUTTON_DELETE_SWA" +msgstr "DELETE" + +msgid "IDS_ST_ACBUTTON_CANCEL_SWA" +msgstr "CANCEL" + +msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA" +msgstr "%d reports deleted." + +msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA" +msgstr "Select items" + +msgid "IDS_ST_HEADER_PD_SELECTED_SWA" +msgstr "%d selected" + +msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Basic protection mode turned on." + +msgid "IDS_ST_TPOP_RULE_CREATED_SWA" +msgstr "Rule created. Custom protection mode turned on." + +msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Advanced protection mode turned on." + +msgid "IDS_ST_HEADER_DETAILS_SWA" +msgstr "Details" + +msgid "IDS_ST_BODY_STRING_TYPE_SWA" +msgstr "String type" + +msgid "IDS_ST_BODY_SEARCH_TERM_SWA" +msgstr "Search term" + +msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA" +msgstr "Leaks captured" + +msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA" +msgstr "Total leaks" + +msgid "IDS_ST_HEADER_RULE_DETAILS_SWA" +msgstr "Rule details" + +msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA" +msgstr "Pattern details" @@ -31,3 +31,272 @@ msgstr "%dkrát" msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB" msgstr "Ochr. os. údajů a zab." +msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA" +msgstr "Prevent apps from leaking your sensitive data without authorisation." + +msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA" +msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts." + +msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA" +msgstr "Protection mode" + +msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA" +msgstr "Basic" + +msgid "IDS_ST_SBODY_MONITOR_YOUR_MAIN_SENSITIVE_DATA_TO_PREVENT_IT_FROM_BEING_LEAKED_BY_MOST_APPS_THIS_MODE_IS_SUITABLE_FOR_REGULAR_USERS_SWA" +msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users." + +msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA" +msgstr "Advanced" + +msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA" +msgstr "Set up strict rules to prevent data leakage." + +msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA" +msgstr "This mode will affect app performance." + +msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA" +msgstr "Some apps may be blocked." + +msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA" +msgstr "Turn on Advanced protection mode" + +msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA" +msgstr "Change default rules and patterns and create your own to set up a customised protection mode." + +msgid "IDS_ST_HEADER_REPORTS_SWA" +msgstr "Reports" + +msgid "IDS_ST_MBODY_FULL_REPORTS_SWA" +msgstr "Full reports" + +msgid "IDS_ST_MBODY_APP_RANKINGS_SWA" +msgstr "App rankings" + +msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA" +msgstr "Data statistics" + +msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA" +msgstr "Rules and patterns" + +msgid "IDS_ST_NPBODY_NO_REPORTS_SWA" +msgstr "No reports" + +msgid "IDS_ST_HEADER_SETTINGS_SWA" +msgstr "Settings" + +msgid "IDS_ST_MBODY_KEEP_LOGS_SWA" +msgstr "Keep logs" + +msgid "IDS_LOGS_CLEANED" +msgstr "Logs cleaned" + +msgid "IDS_LOGS_CLEANED_FAILED" +msgstr "Failed to clean logs" + +msgid "IDS_ST_OPT_1_WEEK_SWA" +msgstr "1 week" + +msgid "IDS_ST_OPT_1_DAY_SWA" +msgstr "1 day" + +msgid "IDS_ST_OPT_1_MONTH_SWA" +msgstr "1 month" + +msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA" +msgstr "Report details" + +msgid "IDS_ST_BODY_CATEGORY_C_SWA" +msgstr "Category:" + +msgid "IDS_ST_BODY_APP_C_SWA" +msgstr "App:" + +msgid "IDS_ST_BODY_DESTINATION_C_SWA" +msgstr "Destination:" + +msgid "IDS_ST_BODY_PATTERN_C_SWA" +msgstr "Pattern:" + +msgid "IDS_ST_BODY_DLP_ACTION" +msgstr "Action" + +msgid "IDS_ST_BODY_PACKET_C_SWA" +msgstr "Packet:" + +msgid "IDS_ST_BODY_DLP_ACTION_ALLOW" +msgstr "Allow" + +msgid "IDS_ST_BODY_DLP_ACTION_DENY" +msgstr "Deny" + +msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE" +msgstr "Sanitize" + +msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES" +msgstr "All Rules" + +msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA" +msgstr "Quick" + +msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA" +msgstr "Create rules quickly and easily." + +msgid "IDS_ST_MBODY_CUSTOM_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CREATE_RULES_FROM_SCRATCH_TO_GIVE_YOU_FULL_CONTROL_OF_YOUR_DATA_PROTECTION_USE_THIS_OPTION_TO_CREATE_NON_STANDARD_RULES_SWA" +msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules." + +msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA" +msgstr "Custom protection mode" + +msgid "IDS_ST_TAB_RULES_SWA" +msgstr "Rules" + +msgid "IDS_ST_TAB_PATTERNS_SWA" +msgstr "Patterns" + +msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA" +msgstr "Select template" + +msgid "IDS_ST_HEADER_SELECT_APPS_SWA" +msgstr "Select apps" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION" +msgstr "Select Action" + +msgid "IDS_ST_ACBUTTON_NEXT_SWA" +msgstr "NEXT" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK" +msgstr "OK" + +msgid "IDS_ST_ACBUTTON_DONE_SWA" +msgstr "DONE" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE" +msgstr "Rule created." + +msgid "IDS_ST_TPOP_RULE_DELETED_SWA" +msgstr "Rule deleted." + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE" +msgstr "Delete Rule" + +msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA" +msgstr "Delete patterns" + +msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA" +msgstr "This rule will be deleted." + +msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA" +msgstr "Create pattern" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN" +msgstr "Custom" + +msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA" +msgstr "%d patterns deleted." + +msgid "IDS_ST_OPT_EDIT_SWA" +msgstr "Edit" + +msgid "IDS_ST_OPT_CREATE_SWA" +msgstr "Create" + +msgid "IDS_ST_OPT_ALL_PATTERNS_SWA" +msgstr "All patterns" + +msgid "IDS_ST_BODY_NAME_SWA" +msgstr "Name" + +msgid "IDS_ST_BODY_DESCRIPTION_SWA" +msgstr "Description" + +msgid "IDS_ST_BODY_CATEGORY_SWA" +msgstr "Category" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME" +msgstr "Category name" + +msgid "IDS_ST_OPT_STRING_MATCH_SWA" +msgstr "String match" + +msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA" +msgstr "Regular expression" + +msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d patterns will be deleted." + +msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA" +msgstr "This report will be deleted." + +msgid "IDS_ST_OPT_DELETE_SWA" +msgstr "Delete" + +msgid "IDS_ST_HEADER_DELETE_REPORT_SWA" +msgstr "Delete report" + +msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d reports will be deleted." + +msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA" +msgstr "1 report deleted." + +msgid "IDS_ST_MBODY_SELECT_ALL_SWA" +msgstr "Select all" + +msgid "IDS_ST_ACBUTTON_DELETE_SWA" +msgstr "DELETE" + +msgid "IDS_ST_ACBUTTON_CANCEL_SWA" +msgstr "CANCEL" + +msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA" +msgstr "%d reports deleted." + +msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA" +msgstr "Select items" + +msgid "IDS_ST_HEADER_PD_SELECTED_SWA" +msgstr "%d selected" + +msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Basic protection mode turned on." + +msgid "IDS_ST_TPOP_RULE_CREATED_SWA" +msgstr "Rule created. Custom protection mode turned on." + +msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Advanced protection mode turned on." + +msgid "IDS_ST_HEADER_DETAILS_SWA" +msgstr "Details" + +msgid "IDS_ST_BODY_STRING_TYPE_SWA" +msgstr "String type" + +msgid "IDS_ST_BODY_SEARCH_TERM_SWA" +msgstr "Search term" + +msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA" +msgstr "Leaks captured" + +msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA" +msgstr "Total leaks" + +msgid "IDS_ST_HEADER_RULE_DETAILS_SWA" +msgstr "Rule details" + +msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA" +msgstr "Pattern details" @@ -31,3 +31,272 @@ msgstr "%d gange" msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB" msgstr "Fortroligh. & sikkerh." +msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA" +msgstr "Prevent apps from leaking your sensitive data without authorisation." + +msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA" +msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts." + +msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA" +msgstr "Protection mode" + +msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA" +msgstr "Basic" + +msgid "IDS_ST_SBODY_MONITOR_YOUR_MAIN_SENSITIVE_DATA_TO_PREVENT_IT_FROM_BEING_LEAKED_BY_MOST_APPS_THIS_MODE_IS_SUITABLE_FOR_REGULAR_USERS_SWA" +msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users." + +msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA" +msgstr "Advanced" + +msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA" +msgstr "Set up strict rules to prevent data leakage." + +msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA" +msgstr "This mode will affect app performance." + +msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA" +msgstr "Some apps may be blocked." + +msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA" +msgstr "Turn on Advanced protection mode" + +msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA" +msgstr "Change default rules and patterns and create your own to set up a customised protection mode." + +msgid "IDS_ST_HEADER_REPORTS_SWA" +msgstr "Reports" + +msgid "IDS_ST_MBODY_FULL_REPORTS_SWA" +msgstr "Full reports" + +msgid "IDS_ST_MBODY_APP_RANKINGS_SWA" +msgstr "App rankings" + +msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA" +msgstr "Data statistics" + +msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA" +msgstr "Rules and patterns" + +msgid "IDS_ST_NPBODY_NO_REPORTS_SWA" +msgstr "No reports" + +msgid "IDS_ST_HEADER_SETTINGS_SWA" +msgstr "Settings" + +msgid "IDS_ST_MBODY_KEEP_LOGS_SWA" +msgstr "Keep logs" + +msgid "IDS_LOGS_CLEANED" +msgstr "Logs cleaned" + +msgid "IDS_LOGS_CLEANED_FAILED" +msgstr "Failed to clean logs" + +msgid "IDS_ST_OPT_1_WEEK_SWA" +msgstr "1 week" + +msgid "IDS_ST_OPT_1_DAY_SWA" +msgstr "1 day" + +msgid "IDS_ST_OPT_1_MONTH_SWA" +msgstr "1 month" + +msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA" +msgstr "Report details" + +msgid "IDS_ST_BODY_CATEGORY_C_SWA" +msgstr "Category:" + +msgid "IDS_ST_BODY_APP_C_SWA" +msgstr "App:" + +msgid "IDS_ST_BODY_DESTINATION_C_SWA" +msgstr "Destination:" + +msgid "IDS_ST_BODY_PATTERN_C_SWA" +msgstr "Pattern:" + +msgid "IDS_ST_BODY_DLP_ACTION" +msgstr "Action" + +msgid "IDS_ST_BODY_PACKET_C_SWA" +msgstr "Packet:" + +msgid "IDS_ST_BODY_DLP_ACTION_ALLOW" +msgstr "Allow" + +msgid "IDS_ST_BODY_DLP_ACTION_DENY" +msgstr "Deny" + +msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE" +msgstr "Sanitize" + +msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES" +msgstr "All Rules" + +msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA" +msgstr "Quick" + +msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA" +msgstr "Create rules quickly and easily." + +msgid "IDS_ST_MBODY_CUSTOM_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CREATE_RULES_FROM_SCRATCH_TO_GIVE_YOU_FULL_CONTROL_OF_YOUR_DATA_PROTECTION_USE_THIS_OPTION_TO_CREATE_NON_STANDARD_RULES_SWA" +msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules." + +msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA" +msgstr "Custom protection mode" + +msgid "IDS_ST_TAB_RULES_SWA" +msgstr "Rules" + +msgid "IDS_ST_TAB_PATTERNS_SWA" +msgstr "Patterns" + +msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA" +msgstr "Select template" + +msgid "IDS_ST_HEADER_SELECT_APPS_SWA" +msgstr "Select apps" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION" +msgstr "Select Action" + +msgid "IDS_ST_ACBUTTON_NEXT_SWA" +msgstr "NEXT" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK" +msgstr "OK" + +msgid "IDS_ST_ACBUTTON_DONE_SWA" +msgstr "DONE" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE" +msgstr "Rule created." + +msgid "IDS_ST_TPOP_RULE_DELETED_SWA" +msgstr "Rule deleted." + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE" +msgstr "Delete Rule" + +msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA" +msgstr "Delete patterns" + +msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA" +msgstr "This rule will be deleted." + +msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA" +msgstr "Create pattern" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN" +msgstr "Custom" + +msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA" +msgstr "%d patterns deleted." + +msgid "IDS_ST_OPT_EDIT_SWA" +msgstr "Edit" + +msgid "IDS_ST_OPT_CREATE_SWA" +msgstr "Create" + +msgid "IDS_ST_OPT_ALL_PATTERNS_SWA" +msgstr "All patterns" + +msgid "IDS_ST_BODY_NAME_SWA" +msgstr "Name" + +msgid "IDS_ST_BODY_DESCRIPTION_SWA" +msgstr "Description" + +msgid "IDS_ST_BODY_CATEGORY_SWA" +msgstr "Category" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME" +msgstr "Category name" + +msgid "IDS_ST_OPT_STRING_MATCH_SWA" +msgstr "String match" + +msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA" +msgstr "Regular expression" + +msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d patterns will be deleted." + +msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA" +msgstr "This report will be deleted." + +msgid "IDS_ST_OPT_DELETE_SWA" +msgstr "Delete" + +msgid "IDS_ST_HEADER_DELETE_REPORT_SWA" +msgstr "Delete report" + +msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d reports will be deleted." + +msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA" +msgstr "1 report deleted." + +msgid "IDS_ST_MBODY_SELECT_ALL_SWA" +msgstr "Select all" + +msgid "IDS_ST_ACBUTTON_DELETE_SWA" +msgstr "DELETE" + +msgid "IDS_ST_ACBUTTON_CANCEL_SWA" +msgstr "CANCEL" + +msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA" +msgstr "%d reports deleted." + +msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA" +msgstr "Select items" + +msgid "IDS_ST_HEADER_PD_SELECTED_SWA" +msgstr "%d selected" + +msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Basic protection mode turned on." + +msgid "IDS_ST_TPOP_RULE_CREATED_SWA" +msgstr "Rule created. Custom protection mode turned on." + +msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Advanced protection mode turned on." + +msgid "IDS_ST_HEADER_DETAILS_SWA" +msgstr "Details" + +msgid "IDS_ST_BODY_STRING_TYPE_SWA" +msgstr "String type" + +msgid "IDS_ST_BODY_SEARCH_TERM_SWA" +msgstr "Search term" + +msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA" +msgstr "Leaks captured" + +msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA" +msgstr "Total leaks" + +msgid "IDS_ST_HEADER_RULE_DETAILS_SWA" +msgstr "Rule details" + +msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA" +msgstr "Pattern details" @@ -31,3 +31,272 @@ msgstr "%d Mal" msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB" msgstr "Datenschutz/Sicherheit" +msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA" +msgstr "Prevent apps from leaking your sensitive data without authorisation." + +msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA" +msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts." + +msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA" +msgstr "Protection mode" + +msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA" +msgstr "Basic" + +msgid "IDS_ST_SBODY_MONITOR_YOUR_MAIN_SENSITIVE_DATA_TO_PREVENT_IT_FROM_BEING_LEAKED_BY_MOST_APPS_THIS_MODE_IS_SUITABLE_FOR_REGULAR_USERS_SWA" +msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users." + +msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA" +msgstr "Advanced" + +msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA" +msgstr "Set up strict rules to prevent data leakage." + +msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA" +msgstr "This mode will affect app performance." + +msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA" +msgstr "Some apps may be blocked." + +msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA" +msgstr "Turn on Advanced protection mode" + +msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA" +msgstr "Change default rules and patterns and create your own to set up a customised protection mode." + +msgid "IDS_ST_HEADER_REPORTS_SWA" +msgstr "Reports" + +msgid "IDS_ST_MBODY_FULL_REPORTS_SWA" +msgstr "Full reports" + +msgid "IDS_ST_MBODY_APP_RANKINGS_SWA" +msgstr "App rankings" + +msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA" +msgstr "Data statistics" + +msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA" +msgstr "Rules and patterns" + +msgid "IDS_ST_NPBODY_NO_REPORTS_SWA" +msgstr "No reports" + +msgid "IDS_ST_HEADER_SETTINGS_SWA" +msgstr "Settings" + +msgid "IDS_ST_MBODY_KEEP_LOGS_SWA" +msgstr "Keep logs" + +msgid "IDS_LOGS_CLEANED" +msgstr "Logs cleaned" + +msgid "IDS_LOGS_CLEANED_FAILED" +msgstr "Failed to clean logs" + +msgid "IDS_ST_OPT_1_WEEK_SWA" +msgstr "1 week" + +msgid "IDS_ST_OPT_1_DAY_SWA" +msgstr "1 day" + +msgid "IDS_ST_OPT_1_MONTH_SWA" +msgstr "1 month" + +msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA" +msgstr "Report details" + +msgid "IDS_ST_BODY_CATEGORY_C_SWA" +msgstr "Category:" + +msgid "IDS_ST_BODY_APP_C_SWA" +msgstr "App:" + +msgid "IDS_ST_BODY_DESTINATION_C_SWA" +msgstr "Destination:" + +msgid "IDS_ST_BODY_PATTERN_C_SWA" +msgstr "Pattern:" + +msgid "IDS_ST_BODY_DLP_ACTION" +msgstr "Action" + +msgid "IDS_ST_BODY_PACKET_C_SWA" +msgstr "Packet:" + +msgid "IDS_ST_BODY_DLP_ACTION_ALLOW" +msgstr "Allow" + +msgid "IDS_ST_BODY_DLP_ACTION_DENY" +msgstr "Deny" + +msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE" +msgstr "Sanitize" + +msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES" +msgstr "All Rules" + +msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA" +msgstr "Quick" + +msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA" +msgstr "Create rules quickly and easily." + +msgid "IDS_ST_MBODY_CUSTOM_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CREATE_RULES_FROM_SCRATCH_TO_GIVE_YOU_FULL_CONTROL_OF_YOUR_DATA_PROTECTION_USE_THIS_OPTION_TO_CREATE_NON_STANDARD_RULES_SWA" +msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules." + +msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA" +msgstr "Custom protection mode" + +msgid "IDS_ST_TAB_RULES_SWA" +msgstr "Rules" + +msgid "IDS_ST_TAB_PATTERNS_SWA" +msgstr "Patterns" + +msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA" +msgstr "Select template" + +msgid "IDS_ST_HEADER_SELECT_APPS_SWA" +msgstr "Select apps" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION" +msgstr "Select Action" + +msgid "IDS_ST_ACBUTTON_NEXT_SWA" +msgstr "NEXT" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK" +msgstr "OK" + +msgid "IDS_ST_ACBUTTON_DONE_SWA" +msgstr "DONE" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE" +msgstr "Rule created." + +msgid "IDS_ST_TPOP_RULE_DELETED_SWA" +msgstr "Rule deleted." + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE" +msgstr "Delete Rule" + +msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA" +msgstr "Delete patterns" + +msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA" +msgstr "This rule will be deleted." + +msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA" +msgstr "Create pattern" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN" +msgstr "Custom" + +msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA" +msgstr "%d patterns deleted." + +msgid "IDS_ST_OPT_EDIT_SWA" +msgstr "Edit" + +msgid "IDS_ST_OPT_CREATE_SWA" +msgstr "Create" + +msgid "IDS_ST_OPT_ALL_PATTERNS_SWA" +msgstr "All patterns" + +msgid "IDS_ST_BODY_NAME_SWA" +msgstr "Name" + +msgid "IDS_ST_BODY_DESCRIPTION_SWA" +msgstr "Description" + +msgid "IDS_ST_BODY_CATEGORY_SWA" +msgstr "Category" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME" +msgstr "Category name" + +msgid "IDS_ST_OPT_STRING_MATCH_SWA" +msgstr "String match" + +msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA" +msgstr "Regular expression" + +msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d patterns will be deleted." + +msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA" +msgstr "This report will be deleted." + +msgid "IDS_ST_OPT_DELETE_SWA" +msgstr "Delete" + +msgid "IDS_ST_HEADER_DELETE_REPORT_SWA" +msgstr "Delete report" + +msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d reports will be deleted." + +msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA" +msgstr "1 report deleted." + +msgid "IDS_ST_MBODY_SELECT_ALL_SWA" +msgstr "Select all" + +msgid "IDS_ST_ACBUTTON_DELETE_SWA" +msgstr "DELETE" + +msgid "IDS_ST_ACBUTTON_CANCEL_SWA" +msgstr "CANCEL" + +msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA" +msgstr "%d reports deleted." + +msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA" +msgstr "Select items" + +msgid "IDS_ST_HEADER_PD_SELECTED_SWA" +msgstr "%d selected" + +msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Basic protection mode turned on." + +msgid "IDS_ST_TPOP_RULE_CREATED_SWA" +msgstr "Rule created. Custom protection mode turned on." + +msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Advanced protection mode turned on." + +msgid "IDS_ST_HEADER_DETAILS_SWA" +msgstr "Details" + +msgid "IDS_ST_BODY_STRING_TYPE_SWA" +msgstr "String type" + +msgid "IDS_ST_BODY_SEARCH_TERM_SWA" +msgstr "Search term" + +msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA" +msgstr "Leaks captured" + +msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA" +msgstr "Total leaks" + +msgid "IDS_ST_HEADER_RULE_DETAILS_SWA" +msgstr "Rule details" + +msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA" +msgstr "Pattern details" diff --git a/po/el_GR.po b/po/el_GR.po index 9a1ac90..441ea90 100755 --- a/po/el_GR.po +++ b/po/el_GR.po @@ -31,3 +31,272 @@ msgstr "%d φορές" msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB" msgstr "Απόρρητο και ασφάλεια" +msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA" +msgstr "Prevent apps from leaking your sensitive data without authorisation." + +msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA" +msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts." + +msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA" +msgstr "Protection mode" + +msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA" +msgstr "Basic" + +msgid "IDS_ST_SBODY_MONITOR_YOUR_MAIN_SENSITIVE_DATA_TO_PREVENT_IT_FROM_BEING_LEAKED_BY_MOST_APPS_THIS_MODE_IS_SUITABLE_FOR_REGULAR_USERS_SWA" +msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users." + +msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA" +msgstr "Advanced" + +msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA" +msgstr "Set up strict rules to prevent data leakage." + +msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA" +msgstr "This mode will affect app performance." + +msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA" +msgstr "Some apps may be blocked." + +msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA" +msgstr "Turn on Advanced protection mode" + +msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA" +msgstr "Change default rules and patterns and create your own to set up a customised protection mode." + +msgid "IDS_ST_HEADER_REPORTS_SWA" +msgstr "Reports" + +msgid "IDS_ST_MBODY_FULL_REPORTS_SWA" +msgstr "Full reports" + +msgid "IDS_ST_MBODY_APP_RANKINGS_SWA" +msgstr "App rankings" + +msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA" +msgstr "Data statistics" + +msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA" +msgstr "Rules and patterns" + +msgid "IDS_ST_NPBODY_NO_REPORTS_SWA" +msgstr "No reports" + +msgid "IDS_ST_HEADER_SETTINGS_SWA" +msgstr "Settings" + +msgid "IDS_ST_MBODY_KEEP_LOGS_SWA" +msgstr "Keep logs" + +msgid "IDS_LOGS_CLEANED" +msgstr "Logs cleaned" + +msgid "IDS_LOGS_CLEANED_FAILED" +msgstr "Failed to clean logs" + +msgid "IDS_ST_OPT_1_WEEK_SWA" +msgstr "1 week" + +msgid "IDS_ST_OPT_1_DAY_SWA" +msgstr "1 day" + +msgid "IDS_ST_OPT_1_MONTH_SWA" +msgstr "1 month" + +msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA" +msgstr "Report details" + +msgid "IDS_ST_BODY_CATEGORY_C_SWA" +msgstr "Category:" + +msgid "IDS_ST_BODY_APP_C_SWA" +msgstr "App:" + +msgid "IDS_ST_BODY_DESTINATION_C_SWA" +msgstr "Destination:" + +msgid "IDS_ST_BODY_PATTERN_C_SWA" +msgstr "Pattern:" + +msgid "IDS_ST_BODY_DLP_ACTION" +msgstr "Action" + +msgid "IDS_ST_BODY_PACKET_C_SWA" +msgstr "Packet:" + +msgid "IDS_ST_BODY_DLP_ACTION_ALLOW" +msgstr "Allow" + +msgid "IDS_ST_BODY_DLP_ACTION_DENY" +msgstr "Deny" + +msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE" +msgstr "Sanitize" + +msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES" +msgstr "All Rules" + +msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA" +msgstr "Quick" + +msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA" +msgstr "Create rules quickly and easily." + +msgid "IDS_ST_MBODY_CUSTOM_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CREATE_RULES_FROM_SCRATCH_TO_GIVE_YOU_FULL_CONTROL_OF_YOUR_DATA_PROTECTION_USE_THIS_OPTION_TO_CREATE_NON_STANDARD_RULES_SWA" +msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules." + +msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA" +msgstr "Custom protection mode" + +msgid "IDS_ST_TAB_RULES_SWA" +msgstr "Rules" + +msgid "IDS_ST_TAB_PATTERNS_SWA" +msgstr "Patterns" + +msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA" +msgstr "Select template" + +msgid "IDS_ST_HEADER_SELECT_APPS_SWA" +msgstr "Select apps" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION" +msgstr "Select Action" + +msgid "IDS_ST_ACBUTTON_NEXT_SWA" +msgstr "NEXT" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK" +msgstr "OK" + +msgid "IDS_ST_ACBUTTON_DONE_SWA" +msgstr "DONE" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE" +msgstr "Rule created." + +msgid "IDS_ST_TPOP_RULE_DELETED_SWA" +msgstr "Rule deleted." + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE" +msgstr "Delete Rule" + +msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA" +msgstr "Delete patterns" + +msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA" +msgstr "This rule will be deleted." + +msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA" +msgstr "Create pattern" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN" +msgstr "Custom" + +msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA" +msgstr "%d patterns deleted." + +msgid "IDS_ST_OPT_EDIT_SWA" +msgstr "Edit" + +msgid "IDS_ST_OPT_CREATE_SWA" +msgstr "Create" + +msgid "IDS_ST_OPT_ALL_PATTERNS_SWA" +msgstr "All patterns" + +msgid "IDS_ST_BODY_NAME_SWA" +msgstr "Name" + +msgid "IDS_ST_BODY_DESCRIPTION_SWA" +msgstr "Description" + +msgid "IDS_ST_BODY_CATEGORY_SWA" +msgstr "Category" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME" +msgstr "Category name" + +msgid "IDS_ST_OPT_STRING_MATCH_SWA" +msgstr "String match" + +msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA" +msgstr "Regular expression" + +msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d patterns will be deleted." + +msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA" +msgstr "This report will be deleted." + +msgid "IDS_ST_OPT_DELETE_SWA" +msgstr "Delete" + +msgid "IDS_ST_HEADER_DELETE_REPORT_SWA" +msgstr "Delete report" + +msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d reports will be deleted." + +msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA" +msgstr "1 report deleted." + +msgid "IDS_ST_MBODY_SELECT_ALL_SWA" +msgstr "Select all" + +msgid "IDS_ST_ACBUTTON_DELETE_SWA" +msgstr "DELETE" + +msgid "IDS_ST_ACBUTTON_CANCEL_SWA" +msgstr "CANCEL" + +msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA" +msgstr "%d reports deleted." + +msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA" +msgstr "Select items" + +msgid "IDS_ST_HEADER_PD_SELECTED_SWA" +msgstr "%d selected" + +msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Basic protection mode turned on." + +msgid "IDS_ST_TPOP_RULE_CREATED_SWA" +msgstr "Rule created. Custom protection mode turned on." + +msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Advanced protection mode turned on." + +msgid "IDS_ST_HEADER_DETAILS_SWA" +msgstr "Details" + +msgid "IDS_ST_BODY_STRING_TYPE_SWA" +msgstr "String type" + +msgid "IDS_ST_BODY_SEARCH_TERM_SWA" +msgstr "Search term" + +msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA" +msgstr "Leaks captured" + +msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA" +msgstr "Total leaks" + +msgid "IDS_ST_HEADER_RULE_DETAILS_SWA" +msgstr "Rule details" + +msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA" +msgstr "Pattern details" @@ -31,3 +31,272 @@ msgstr "%d times" msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB" msgstr "Privacy and security" +msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA" +msgstr "Prevent apps from leaking your sensitive data without authorisation." + +msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA" +msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts." + +msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA" +msgstr "Protection mode" + +msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA" +msgstr "Basic" + +msgid "IDS_ST_SBODY_MONITOR_YOUR_MAIN_SENSITIVE_DATA_TO_PREVENT_IT_FROM_BEING_LEAKED_BY_MOST_APPS_THIS_MODE_IS_SUITABLE_FOR_REGULAR_USERS_SWA" +msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users." + +msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA" +msgstr "Advanced" + +msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA" +msgstr "Set up strict rules to prevent data leakage." + +msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA" +msgstr "This mode will affect app performance." + +msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA" +msgstr "Some apps may be blocked." + +msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA" +msgstr "Turn on Advanced protection mode" + +msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA" +msgstr "Change default rules and patterns and create your own to set up a customised protection mode." + +msgid "IDS_ST_HEADER_REPORTS_SWA" +msgstr "Reports" + +msgid "IDS_ST_MBODY_FULL_REPORTS_SWA" +msgstr "Full reports" + +msgid "IDS_ST_MBODY_APP_RANKINGS_SWA" +msgstr "App rankings" + +msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA" +msgstr "Data statistics" + +msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA" +msgstr "Rules and patterns" + +msgid "IDS_ST_NPBODY_NO_REPORTS_SWA" +msgstr "No reports" + +msgid "IDS_ST_HEADER_SETTINGS_SWA" +msgstr "Settings" + +msgid "IDS_ST_MBODY_KEEP_LOGS_SWA" +msgstr "Keep logs" + +msgid "IDS_LOGS_CLEANED" +msgstr "Logs cleaned" + +msgid "IDS_LOGS_CLEANED_FAILED" +msgstr "Failed to clean logs" + +msgid "IDS_ST_OPT_1_WEEK_SWA" +msgstr "1 week" + +msgid "IDS_ST_OPT_1_DAY_SWA" +msgstr "1 day" + +msgid "IDS_ST_OPT_1_MONTH_SWA" +msgstr "1 month" + +msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA" +msgstr "Report details" + +msgid "IDS_ST_BODY_CATEGORY_C_SWA" +msgstr "Category:" + +msgid "IDS_ST_BODY_APP_C_SWA" +msgstr "App:" + +msgid "IDS_ST_BODY_DESTINATION_C_SWA" +msgstr "Destination:" + +msgid "IDS_ST_BODY_PATTERN_C_SWA" +msgstr "Pattern:" + +msgid "IDS_ST_BODY_DLP_ACTION" +msgstr "Action" + +msgid "IDS_ST_BODY_PACKET_C_SWA" +msgstr "Packet:" + +msgid "IDS_ST_BODY_DLP_ACTION_ALLOW" +msgstr "Allow" + +msgid "IDS_ST_BODY_DLP_ACTION_DENY" +msgstr "Deny" + +msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE" +msgstr "Sanitize" + +msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES" +msgstr "All Rules" + +msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA" +msgstr "Quick" + +msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA" +msgstr "Create rules quickly and easily." + +msgid "IDS_ST_MBODY_CUSTOM_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CREATE_RULES_FROM_SCRATCH_TO_GIVE_YOU_FULL_CONTROL_OF_YOUR_DATA_PROTECTION_USE_THIS_OPTION_TO_CREATE_NON_STANDARD_RULES_SWA" +msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules." + +msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA" +msgstr "Custom protection mode" + +msgid "IDS_ST_TAB_RULES_SWA" +msgstr "Rules" + +msgid "IDS_ST_TAB_PATTERNS_SWA" +msgstr "Patterns" + +msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA" +msgstr "Select template" + +msgid "IDS_ST_HEADER_SELECT_APPS_SWA" +msgstr "Select apps" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION" +msgstr "Select Action" + +msgid "IDS_ST_ACBUTTON_NEXT_SWA" +msgstr "NEXT" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK" +msgstr "OK" + +msgid "IDS_ST_ACBUTTON_DONE_SWA" +msgstr "DONE" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE" +msgstr "Rule created." + +msgid "IDS_ST_TPOP_RULE_DELETED_SWA" +msgstr "Rule deleted." + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE" +msgstr "Delete Rule" + +msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA" +msgstr "Delete patterns" + +msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA" +msgstr "This rule will be deleted." + +msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA" +msgstr "Create pattern" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN" +msgstr "Custom" + +msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA" +msgstr "%d patterns deleted." + +msgid "IDS_ST_OPT_EDIT_SWA" +msgstr "Edit" + +msgid "IDS_ST_OPT_CREATE_SWA" +msgstr "Create" + +msgid "IDS_ST_OPT_ALL_PATTERNS_SWA" +msgstr "All patterns" + +msgid "IDS_ST_BODY_NAME_SWA" +msgstr "Name" + +msgid "IDS_ST_BODY_DESCRIPTION_SWA" +msgstr "Description" + +msgid "IDS_ST_BODY_CATEGORY_SWA" +msgstr "Category" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME" +msgstr "Category name" + +msgid "IDS_ST_OPT_STRING_MATCH_SWA" +msgstr "String match" + +msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA" +msgstr "Regular expression" + +msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d patterns will be deleted." + +msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA" +msgstr "This report will be deleted." + +msgid "IDS_ST_OPT_DELETE_SWA" +msgstr "Delete" + +msgid "IDS_ST_HEADER_DELETE_REPORT_SWA" +msgstr "Delete report" + +msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d reports will be deleted." + +msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA" +msgstr "1 report deleted." + +msgid "IDS_ST_MBODY_SELECT_ALL_SWA" +msgstr "Select all" + +msgid "IDS_ST_ACBUTTON_DELETE_SWA" +msgstr "DELETE" + +msgid "IDS_ST_ACBUTTON_CANCEL_SWA" +msgstr "CANCEL" + +msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA" +msgstr "%d reports deleted." + +msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA" +msgstr "Select items" + +msgid "IDS_ST_HEADER_PD_SELECTED_SWA" +msgstr "%d selected" + +msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Basic protection mode turned on." + +msgid "IDS_ST_TPOP_RULE_CREATED_SWA" +msgstr "Rule created. Custom protection mode turned on." + +msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Advanced protection mode turned on." + +msgid "IDS_ST_HEADER_DETAILS_SWA" +msgstr "Details" + +msgid "IDS_ST_BODY_STRING_TYPE_SWA" +msgstr "String type" + +msgid "IDS_ST_BODY_SEARCH_TERM_SWA" +msgstr "Search term" + +msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA" +msgstr "Leaks captured" + +msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA" +msgstr "Total leaks" + +msgid "IDS_ST_HEADER_RULE_DETAILS_SWA" +msgstr "Rule details" + +msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA" +msgstr "Pattern details" diff --git a/po/en_PH.po b/po/en_PH.po index cf9a1fb..e833d9f 100755 --- a/po/en_PH.po +++ b/po/en_PH.po @@ -31,3 +31,272 @@ msgstr "%d times" msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB" msgstr "Privacy and security" +msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA" +msgstr "Prevent apps from leaking your sensitive data without authorisation." + +msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA" +msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts." + +msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA" +msgstr "Protection mode" + +msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA" +msgstr "Basic" + +msgid "IDS_ST_SBODY_MONITOR_YOUR_MAIN_SENSITIVE_DATA_TO_PREVENT_IT_FROM_BEING_LEAKED_BY_MOST_APPS_THIS_MODE_IS_SUITABLE_FOR_REGULAR_USERS_SWA" +msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users." + +msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA" +msgstr "Advanced" + +msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA" +msgstr "Set up strict rules to prevent data leakage." + +msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA" +msgstr "This mode will affect app performance." + +msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA" +msgstr "Some apps may be blocked." + +msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA" +msgstr "Turn on Advanced protection mode" + +msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA" +msgstr "Change default rules and patterns and create your own to set up a customised protection mode." + +msgid "IDS_ST_HEADER_REPORTS_SWA" +msgstr "Reports" + +msgid "IDS_ST_MBODY_FULL_REPORTS_SWA" +msgstr "Full reports" + +msgid "IDS_ST_MBODY_APP_RANKINGS_SWA" +msgstr "App rankings" + +msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA" +msgstr "Data statistics" + +msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA" +msgstr "Rules and patterns" + +msgid "IDS_ST_NPBODY_NO_REPORTS_SWA" +msgstr "No reports" + +msgid "IDS_ST_HEADER_SETTINGS_SWA" +msgstr "Settings" + +msgid "IDS_ST_MBODY_KEEP_LOGS_SWA" +msgstr "Keep logs" + +msgid "IDS_LOGS_CLEANED" +msgstr "Logs cleaned" + +msgid "IDS_LOGS_CLEANED_FAILED" +msgstr "Failed to clean logs" + +msgid "IDS_ST_OPT_1_WEEK_SWA" +msgstr "1 week" + +msgid "IDS_ST_OPT_1_DAY_SWA" +msgstr "1 day" + +msgid "IDS_ST_OPT_1_MONTH_SWA" +msgstr "1 month" + +msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA" +msgstr "Report details" + +msgid "IDS_ST_BODY_CATEGORY_C_SWA" +msgstr "Category:" + +msgid "IDS_ST_BODY_APP_C_SWA" +msgstr "App:" + +msgid "IDS_ST_BODY_DESTINATION_C_SWA" +msgstr "Destination:" + +msgid "IDS_ST_BODY_PATTERN_C_SWA" +msgstr "Pattern:" + +msgid "IDS_ST_BODY_DLP_ACTION" +msgstr "Action" + +msgid "IDS_ST_BODY_PACKET_C_SWA" +msgstr "Packet:" + +msgid "IDS_ST_BODY_DLP_ACTION_ALLOW" +msgstr "Allow" + +msgid "IDS_ST_BODY_DLP_ACTION_DENY" +msgstr "Deny" + +msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE" +msgstr "Sanitize" + +msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES" +msgstr "All Rules" + +msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA" +msgstr "Quick" + +msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA" +msgstr "Create rules quickly and easily." + +msgid "IDS_ST_MBODY_CUSTOM_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CREATE_RULES_FROM_SCRATCH_TO_GIVE_YOU_FULL_CONTROL_OF_YOUR_DATA_PROTECTION_USE_THIS_OPTION_TO_CREATE_NON_STANDARD_RULES_SWA" +msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules." + +msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA" +msgstr "Custom protection mode" + +msgid "IDS_ST_TAB_RULES_SWA" +msgstr "Rules" + +msgid "IDS_ST_TAB_PATTERNS_SWA" +msgstr "Patterns" + +msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA" +msgstr "Select template" + +msgid "IDS_ST_HEADER_SELECT_APPS_SWA" +msgstr "Select apps" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION" +msgstr "Select Action" + +msgid "IDS_ST_ACBUTTON_NEXT_SWA" +msgstr "NEXT" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK" +msgstr "OK" + +msgid "IDS_ST_ACBUTTON_DONE_SWA" +msgstr "DONE" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE" +msgstr "Rule created." + +msgid "IDS_ST_TPOP_RULE_DELETED_SWA" +msgstr "Rule deleted." + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE" +msgstr "Delete Rule" + +msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA" +msgstr "Delete patterns" + +msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA" +msgstr "This rule will be deleted." + +msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA" +msgstr "Create pattern" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN" +msgstr "Custom" + +msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA" +msgstr "%d patterns deleted." + +msgid "IDS_ST_OPT_EDIT_SWA" +msgstr "Edit" + +msgid "IDS_ST_OPT_CREATE_SWA" +msgstr "Create" + +msgid "IDS_ST_OPT_ALL_PATTERNS_SWA" +msgstr "All patterns" + +msgid "IDS_ST_BODY_NAME_SWA" +msgstr "Name" + +msgid "IDS_ST_BODY_DESCRIPTION_SWA" +msgstr "Description" + +msgid "IDS_ST_BODY_CATEGORY_SWA" +msgstr "Category" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME" +msgstr "Category name" + +msgid "IDS_ST_OPT_STRING_MATCH_SWA" +msgstr "String match" + +msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA" +msgstr "Regular expression" + +msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d patterns will be deleted." + +msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA" +msgstr "This report will be deleted." + +msgid "IDS_ST_OPT_DELETE_SWA" +msgstr "Delete" + +msgid "IDS_ST_HEADER_DELETE_REPORT_SWA" +msgstr "Delete report" + +msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d reports will be deleted." + +msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA" +msgstr "1 report deleted." + +msgid "IDS_ST_MBODY_SELECT_ALL_SWA" +msgstr "Select all" + +msgid "IDS_ST_ACBUTTON_DELETE_SWA" +msgstr "DELETE" + +msgid "IDS_ST_ACBUTTON_CANCEL_SWA" +msgstr "CANCEL" + +msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA" +msgstr "%d reports deleted." + +msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA" +msgstr "Select items" + +msgid "IDS_ST_HEADER_PD_SELECTED_SWA" +msgstr "%d selected" + +msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Basic protection mode turned on." + +msgid "IDS_ST_TPOP_RULE_CREATED_SWA" +msgstr "Rule created. Custom protection mode turned on." + +msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Advanced protection mode turned on." + +msgid "IDS_ST_HEADER_DETAILS_SWA" +msgstr "Details" + +msgid "IDS_ST_BODY_STRING_TYPE_SWA" +msgstr "String type" + +msgid "IDS_ST_BODY_SEARCH_TERM_SWA" +msgstr "Search term" + +msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA" +msgstr "Leaks captured" + +msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA" +msgstr "Total leaks" + +msgid "IDS_ST_HEADER_RULE_DETAILS_SWA" +msgstr "Rule details" + +msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA" +msgstr "Pattern details" diff --git a/po/en_US.po b/po/en_US.po index cf9a1fb..e833d9f 100755 --- a/po/en_US.po +++ b/po/en_US.po @@ -31,3 +31,272 @@ msgstr "%d times" msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB" msgstr "Privacy and security" +msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA" +msgstr "Prevent apps from leaking your sensitive data without authorisation." + +msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA" +msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts." + +msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA" +msgstr "Protection mode" + +msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA" +msgstr "Basic" + +msgid "IDS_ST_SBODY_MONITOR_YOUR_MAIN_SENSITIVE_DATA_TO_PREVENT_IT_FROM_BEING_LEAKED_BY_MOST_APPS_THIS_MODE_IS_SUITABLE_FOR_REGULAR_USERS_SWA" +msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users." + +msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA" +msgstr "Advanced" + +msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA" +msgstr "Set up strict rules to prevent data leakage." + +msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA" +msgstr "This mode will affect app performance." + +msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA" +msgstr "Some apps may be blocked." + +msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA" +msgstr "Turn on Advanced protection mode" + +msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA" +msgstr "Change default rules and patterns and create your own to set up a customised protection mode." + +msgid "IDS_ST_HEADER_REPORTS_SWA" +msgstr "Reports" + +msgid "IDS_ST_MBODY_FULL_REPORTS_SWA" +msgstr "Full reports" + +msgid "IDS_ST_MBODY_APP_RANKINGS_SWA" +msgstr "App rankings" + +msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA" +msgstr "Data statistics" + +msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA" +msgstr "Rules and patterns" + +msgid "IDS_ST_NPBODY_NO_REPORTS_SWA" +msgstr "No reports" + +msgid "IDS_ST_HEADER_SETTINGS_SWA" +msgstr "Settings" + +msgid "IDS_ST_MBODY_KEEP_LOGS_SWA" +msgstr "Keep logs" + +msgid "IDS_LOGS_CLEANED" +msgstr "Logs cleaned" + +msgid "IDS_LOGS_CLEANED_FAILED" +msgstr "Failed to clean logs" + +msgid "IDS_ST_OPT_1_WEEK_SWA" +msgstr "1 week" + +msgid "IDS_ST_OPT_1_DAY_SWA" +msgstr "1 day" + +msgid "IDS_ST_OPT_1_MONTH_SWA" +msgstr "1 month" + +msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA" +msgstr "Report details" + +msgid "IDS_ST_BODY_CATEGORY_C_SWA" +msgstr "Category:" + +msgid "IDS_ST_BODY_APP_C_SWA" +msgstr "App:" + +msgid "IDS_ST_BODY_DESTINATION_C_SWA" +msgstr "Destination:" + +msgid "IDS_ST_BODY_PATTERN_C_SWA" +msgstr "Pattern:" + +msgid "IDS_ST_BODY_DLP_ACTION" +msgstr "Action" + +msgid "IDS_ST_BODY_PACKET_C_SWA" +msgstr "Packet:" + +msgid "IDS_ST_BODY_DLP_ACTION_ALLOW" +msgstr "Allow" + +msgid "IDS_ST_BODY_DLP_ACTION_DENY" +msgstr "Deny" + +msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE" +msgstr "Sanitize" + +msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES" +msgstr "All Rules" + +msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA" +msgstr "Quick" + +msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA" +msgstr "Create rules quickly and easily." + +msgid "IDS_ST_MBODY_CUSTOM_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CREATE_RULES_FROM_SCRATCH_TO_GIVE_YOU_FULL_CONTROL_OF_YOUR_DATA_PROTECTION_USE_THIS_OPTION_TO_CREATE_NON_STANDARD_RULES_SWA" +msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules." + +msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA" +msgstr "Custom protection mode" + +msgid "IDS_ST_TAB_RULES_SWA" +msgstr "Rules" + +msgid "IDS_ST_TAB_PATTERNS_SWA" +msgstr "Patterns" + +msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA" +msgstr "Select template" + +msgid "IDS_ST_HEADER_SELECT_APPS_SWA" +msgstr "Select apps" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION" +msgstr "Select Action" + +msgid "IDS_ST_ACBUTTON_NEXT_SWA" +msgstr "NEXT" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK" +msgstr "OK" + +msgid "IDS_ST_ACBUTTON_DONE_SWA" +msgstr "DONE" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE" +msgstr "Rule created." + +msgid "IDS_ST_TPOP_RULE_DELETED_SWA" +msgstr "Rule deleted." + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE" +msgstr "Delete Rule" + +msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA" +msgstr "Delete patterns" + +msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA" +msgstr "This rule will be deleted." + +msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA" +msgstr "Create pattern" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN" +msgstr "Custom" + +msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA" +msgstr "%d patterns deleted." + +msgid "IDS_ST_OPT_EDIT_SWA" +msgstr "Edit" + +msgid "IDS_ST_OPT_CREATE_SWA" +msgstr "Create" + +msgid "IDS_ST_OPT_ALL_PATTERNS_SWA" +msgstr "All patterns" + +msgid "IDS_ST_BODY_NAME_SWA" +msgstr "Name" + +msgid "IDS_ST_BODY_DESCRIPTION_SWA" +msgstr "Description" + +msgid "IDS_ST_BODY_CATEGORY_SWA" +msgstr "Category" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME" +msgstr "Category name" + +msgid "IDS_ST_OPT_STRING_MATCH_SWA" +msgstr "String match" + +msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA" +msgstr "Regular expression" + +msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d patterns will be deleted." + +msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA" +msgstr "This report will be deleted." + +msgid "IDS_ST_OPT_DELETE_SWA" +msgstr "Delete" + +msgid "IDS_ST_HEADER_DELETE_REPORT_SWA" +msgstr "Delete report" + +msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d reports will be deleted." + +msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA" +msgstr "1 report deleted." + +msgid "IDS_ST_MBODY_SELECT_ALL_SWA" +msgstr "Select all" + +msgid "IDS_ST_ACBUTTON_DELETE_SWA" +msgstr "DELETE" + +msgid "IDS_ST_ACBUTTON_CANCEL_SWA" +msgstr "CANCEL" + +msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA" +msgstr "%d reports deleted." + +msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA" +msgstr "Select items" + +msgid "IDS_ST_HEADER_PD_SELECTED_SWA" +msgstr "%d selected" + +msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Basic protection mode turned on." + +msgid "IDS_ST_TPOP_RULE_CREATED_SWA" +msgstr "Rule created. Custom protection mode turned on." + +msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Advanced protection mode turned on." + +msgid "IDS_ST_HEADER_DETAILS_SWA" +msgstr "Details" + +msgid "IDS_ST_BODY_STRING_TYPE_SWA" +msgstr "String type" + +msgid "IDS_ST_BODY_SEARCH_TERM_SWA" +msgstr "Search term" + +msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA" +msgstr "Leaks captured" + +msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA" +msgstr "Total leaks" + +msgid "IDS_ST_HEADER_RULE_DETAILS_SWA" +msgstr "Rule details" + +msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA" +msgstr "Pattern details" diff --git a/po/es_ES.po b/po/es_ES.po index 339d344..191e166 100755 --- a/po/es_ES.po +++ b/po/es_ES.po @@ -31,3 +31,272 @@ msgstr "%d veces" msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB" msgstr "Privacidad y seguridad" +msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA" +msgstr "Prevent apps from leaking your sensitive data without authorisation." + +msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA" +msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts." + +msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA" +msgstr "Protection mode" + +msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA" +msgstr "Basic" + +msgid "IDS_ST_SBODY_MONITOR_YOUR_MAIN_SENSITIVE_DATA_TO_PREVENT_IT_FROM_BEING_LEAKED_BY_MOST_APPS_THIS_MODE_IS_SUITABLE_FOR_REGULAR_USERS_SWA" +msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users." + +msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA" +msgstr "Advanced" + +msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA" +msgstr "Set up strict rules to prevent data leakage." + +msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA" +msgstr "This mode will affect app performance." + +msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA" +msgstr "Some apps may be blocked." + +msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA" +msgstr "Turn on Advanced protection mode" + +msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA" +msgstr "Change default rules and patterns and create your own to set up a customised protection mode." + +msgid "IDS_ST_HEADER_REPORTS_SWA" +msgstr "Reports" + +msgid "IDS_ST_MBODY_FULL_REPORTS_SWA" +msgstr "Full reports" + +msgid "IDS_ST_MBODY_APP_RANKINGS_SWA" +msgstr "App rankings" + +msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA" +msgstr "Data statistics" + +msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA" +msgstr "Rules and patterns" + +msgid "IDS_ST_NPBODY_NO_REPORTS_SWA" +msgstr "No reports" + +msgid "IDS_ST_HEADER_SETTINGS_SWA" +msgstr "Settings" + +msgid "IDS_ST_MBODY_KEEP_LOGS_SWA" +msgstr "Keep logs" + +msgid "IDS_LOGS_CLEANED" +msgstr "Logs cleaned" + +msgid "IDS_LOGS_CLEANED_FAILED" +msgstr "Failed to clean logs" + +msgid "IDS_ST_OPT_1_WEEK_SWA" +msgstr "1 week" + +msgid "IDS_ST_OPT_1_DAY_SWA" +msgstr "1 day" + +msgid "IDS_ST_OPT_1_MONTH_SWA" +msgstr "1 month" + +msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA" +msgstr "Report details" + +msgid "IDS_ST_BODY_CATEGORY_C_SWA" +msgstr "Category:" + +msgid "IDS_ST_BODY_APP_C_SWA" +msgstr "App:" + +msgid "IDS_ST_BODY_DESTINATION_C_SWA" +msgstr "Destination:" + +msgid "IDS_ST_BODY_PATTERN_C_SWA" +msgstr "Pattern:" + +msgid "IDS_ST_BODY_DLP_ACTION" +msgstr "Action" + +msgid "IDS_ST_BODY_PACKET_C_SWA" +msgstr "Packet:" + +msgid "IDS_ST_BODY_DLP_ACTION_ALLOW" +msgstr "Allow" + +msgid "IDS_ST_BODY_DLP_ACTION_DENY" +msgstr "Deny" + +msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE" +msgstr "Sanitize" + +msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES" +msgstr "All Rules" + +msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA" +msgstr "Quick" + +msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA" +msgstr "Create rules quickly and easily." + +msgid "IDS_ST_MBODY_CUSTOM_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CREATE_RULES_FROM_SCRATCH_TO_GIVE_YOU_FULL_CONTROL_OF_YOUR_DATA_PROTECTION_USE_THIS_OPTION_TO_CREATE_NON_STANDARD_RULES_SWA" +msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules." + +msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA" +msgstr "Custom protection mode" + +msgid "IDS_ST_TAB_RULES_SWA" +msgstr "Rules" + +msgid "IDS_ST_TAB_PATTERNS_SWA" +msgstr "Patterns" + +msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA" +msgstr "Select template" + +msgid "IDS_ST_HEADER_SELECT_APPS_SWA" +msgstr "Select apps" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION" +msgstr "Select Action" + +msgid "IDS_ST_ACBUTTON_NEXT_SWA" +msgstr "NEXT" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK" +msgstr "OK" + +msgid "IDS_ST_ACBUTTON_DONE_SWA" +msgstr "DONE" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE" +msgstr "Rule created." + +msgid "IDS_ST_TPOP_RULE_DELETED_SWA" +msgstr "Rule deleted." + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE" +msgstr "Delete Rule" + +msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA" +msgstr "Delete patterns" + +msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA" +msgstr "This rule will be deleted." + +msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA" +msgstr "Create pattern" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN" +msgstr "Custom" + +msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA" +msgstr "%d patterns deleted." + +msgid "IDS_ST_OPT_EDIT_SWA" +msgstr "Edit" + +msgid "IDS_ST_OPT_CREATE_SWA" +msgstr "Create" + +msgid "IDS_ST_OPT_ALL_PATTERNS_SWA" +msgstr "All patterns" + +msgid "IDS_ST_BODY_NAME_SWA" +msgstr "Name" + +msgid "IDS_ST_BODY_DESCRIPTION_SWA" +msgstr "Description" + +msgid "IDS_ST_BODY_CATEGORY_SWA" +msgstr "Category" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME" +msgstr "Category name" + +msgid "IDS_ST_OPT_STRING_MATCH_SWA" +msgstr "String match" + +msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA" +msgstr "Regular expression" + +msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d patterns will be deleted." + +msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA" +msgstr "This report will be deleted." + +msgid "IDS_ST_OPT_DELETE_SWA" +msgstr "Delete" + +msgid "IDS_ST_HEADER_DELETE_REPORT_SWA" +msgstr "Delete report" + +msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d reports will be deleted." + +msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA" +msgstr "1 report deleted." + +msgid "IDS_ST_MBODY_SELECT_ALL_SWA" +msgstr "Select all" + +msgid "IDS_ST_ACBUTTON_DELETE_SWA" +msgstr "DELETE" + +msgid "IDS_ST_ACBUTTON_CANCEL_SWA" +msgstr "CANCEL" + +msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA" +msgstr "%d reports deleted." + +msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA" +msgstr "Select items" + +msgid "IDS_ST_HEADER_PD_SELECTED_SWA" +msgstr "%d selected" + +msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Basic protection mode turned on." + +msgid "IDS_ST_TPOP_RULE_CREATED_SWA" +msgstr "Rule created. Custom protection mode turned on." + +msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Advanced protection mode turned on." + +msgid "IDS_ST_HEADER_DETAILS_SWA" +msgstr "Details" + +msgid "IDS_ST_BODY_STRING_TYPE_SWA" +msgstr "String type" + +msgid "IDS_ST_BODY_SEARCH_TERM_SWA" +msgstr "Search term" + +msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA" +msgstr "Leaks captured" + +msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA" +msgstr "Total leaks" + +msgid "IDS_ST_HEADER_RULE_DETAILS_SWA" +msgstr "Rule details" + +msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA" +msgstr "Pattern details" diff --git a/po/es_US.po b/po/es_US.po index c5b0fa9..6664827 100755 --- a/po/es_US.po +++ b/po/es_US.po @@ -31,3 +31,272 @@ msgstr "%d veces" msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB" msgstr "Privacidad y seguridad" +msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA" +msgstr "Prevent apps from leaking your sensitive data without authorisation." + +msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA" +msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts." + +msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA" +msgstr "Protection mode" + +msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA" +msgstr "Basic" + +msgid "IDS_ST_SBODY_MONITOR_YOUR_MAIN_SENSITIVE_DATA_TO_PREVENT_IT_FROM_BEING_LEAKED_BY_MOST_APPS_THIS_MODE_IS_SUITABLE_FOR_REGULAR_USERS_SWA" +msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users." + +msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA" +msgstr "Advanced" + +msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA" +msgstr "Set up strict rules to prevent data leakage." + +msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA" +msgstr "This mode will affect app performance." + +msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA" +msgstr "Some apps may be blocked." + +msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA" +msgstr "Turn on Advanced protection mode" + +msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA" +msgstr "Change default rules and patterns and create your own to set up a customised protection mode." + +msgid "IDS_ST_HEADER_REPORTS_SWA" +msgstr "Reports" + +msgid "IDS_ST_MBODY_FULL_REPORTS_SWA" +msgstr "Full reports" + +msgid "IDS_ST_MBODY_APP_RANKINGS_SWA" +msgstr "App rankings" + +msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA" +msgstr "Data statistics" + +msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA" +msgstr "Rules and patterns" + +msgid "IDS_ST_NPBODY_NO_REPORTS_SWA" +msgstr "No reports" + +msgid "IDS_ST_HEADER_SETTINGS_SWA" +msgstr "Settings" + +msgid "IDS_ST_MBODY_KEEP_LOGS_SWA" +msgstr "Keep logs" + +msgid "IDS_LOGS_CLEANED" +msgstr "Logs cleaned" + +msgid "IDS_LOGS_CLEANED_FAILED" +msgstr "Failed to clean logs" + +msgid "IDS_ST_OPT_1_WEEK_SWA" +msgstr "1 week" + +msgid "IDS_ST_OPT_1_DAY_SWA" +msgstr "1 day" + +msgid "IDS_ST_OPT_1_MONTH_SWA" +msgstr "1 month" + +msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA" +msgstr "Report details" + +msgid "IDS_ST_BODY_CATEGORY_C_SWA" +msgstr "Category:" + +msgid "IDS_ST_BODY_APP_C_SWA" +msgstr "App:" + +msgid "IDS_ST_BODY_DESTINATION_C_SWA" +msgstr "Destination:" + +msgid "IDS_ST_BODY_PATTERN_C_SWA" +msgstr "Pattern:" + +msgid "IDS_ST_BODY_DLP_ACTION" +msgstr "Action" + +msgid "IDS_ST_BODY_PACKET_C_SWA" +msgstr "Packet:" + +msgid "IDS_ST_BODY_DLP_ACTION_ALLOW" +msgstr "Allow" + +msgid "IDS_ST_BODY_DLP_ACTION_DENY" +msgstr "Deny" + +msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE" +msgstr "Sanitize" + +msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES" +msgstr "All Rules" + +msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA" +msgstr "Quick" + +msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA" +msgstr "Create rules quickly and easily." + +msgid "IDS_ST_MBODY_CUSTOM_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CREATE_RULES_FROM_SCRATCH_TO_GIVE_YOU_FULL_CONTROL_OF_YOUR_DATA_PROTECTION_USE_THIS_OPTION_TO_CREATE_NON_STANDARD_RULES_SWA" +msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules." + +msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA" +msgstr "Custom protection mode" + +msgid "IDS_ST_TAB_RULES_SWA" +msgstr "Rules" + +msgid "IDS_ST_TAB_PATTERNS_SWA" +msgstr "Patterns" + +msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA" +msgstr "Select template" + +msgid "IDS_ST_HEADER_SELECT_APPS_SWA" +msgstr "Select apps" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION" +msgstr "Select Action" + +msgid "IDS_ST_ACBUTTON_NEXT_SWA" +msgstr "NEXT" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK" +msgstr "OK" + +msgid "IDS_ST_ACBUTTON_DONE_SWA" +msgstr "DONE" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE" +msgstr "Rule created." + +msgid "IDS_ST_TPOP_RULE_DELETED_SWA" +msgstr "Rule deleted." + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE" +msgstr "Delete Rule" + +msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA" +msgstr "Delete patterns" + +msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA" +msgstr "This rule will be deleted." + +msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA" +msgstr "Create pattern" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN" +msgstr "Custom" + +msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA" +msgstr "%d patterns deleted." + +msgid "IDS_ST_OPT_EDIT_SWA" +msgstr "Edit" + +msgid "IDS_ST_OPT_CREATE_SWA" +msgstr "Create" + +msgid "IDS_ST_OPT_ALL_PATTERNS_SWA" +msgstr "All patterns" + +msgid "IDS_ST_BODY_NAME_SWA" +msgstr "Name" + +msgid "IDS_ST_BODY_DESCRIPTION_SWA" +msgstr "Description" + +msgid "IDS_ST_BODY_CATEGORY_SWA" +msgstr "Category" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME" +msgstr "Category name" + +msgid "IDS_ST_OPT_STRING_MATCH_SWA" +msgstr "String match" + +msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA" +msgstr "Regular expression" + +msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d patterns will be deleted." + +msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA" +msgstr "This report will be deleted." + +msgid "IDS_ST_OPT_DELETE_SWA" +msgstr "Delete" + +msgid "IDS_ST_HEADER_DELETE_REPORT_SWA" +msgstr "Delete report" + +msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d reports will be deleted." + +msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA" +msgstr "1 report deleted." + +msgid "IDS_ST_MBODY_SELECT_ALL_SWA" +msgstr "Select all" + +msgid "IDS_ST_ACBUTTON_DELETE_SWA" +msgstr "DELETE" + +msgid "IDS_ST_ACBUTTON_CANCEL_SWA" +msgstr "CANCEL" + +msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA" +msgstr "%d reports deleted." + +msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA" +msgstr "Select items" + +msgid "IDS_ST_HEADER_PD_SELECTED_SWA" +msgstr "%d selected" + +msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Basic protection mode turned on." + +msgid "IDS_ST_TPOP_RULE_CREATED_SWA" +msgstr "Rule created. Custom protection mode turned on." + +msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Advanced protection mode turned on." + +msgid "IDS_ST_HEADER_DETAILS_SWA" +msgstr "Details" + +msgid "IDS_ST_BODY_STRING_TYPE_SWA" +msgstr "String type" + +msgid "IDS_ST_BODY_SEARCH_TERM_SWA" +msgstr "Search term" + +msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA" +msgstr "Leaks captured" + +msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA" +msgstr "Total leaks" + +msgid "IDS_ST_HEADER_RULE_DETAILS_SWA" +msgstr "Rule details" + +msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA" +msgstr "Pattern details" @@ -31,3 +31,272 @@ msgstr "%d korda" msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB" msgstr "Privaatsus ja turval." +msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA" +msgstr "Prevent apps from leaking your sensitive data without authorisation." + +msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA" +msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts." + +msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA" +msgstr "Protection mode" + +msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA" +msgstr "Basic" + +msgid "IDS_ST_SBODY_MONITOR_YOUR_MAIN_SENSITIVE_DATA_TO_PREVENT_IT_FROM_BEING_LEAKED_BY_MOST_APPS_THIS_MODE_IS_SUITABLE_FOR_REGULAR_USERS_SWA" +msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users." + +msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA" +msgstr "Advanced" + +msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA" +msgstr "Set up strict rules to prevent data leakage." + +msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA" +msgstr "This mode will affect app performance." + +msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA" +msgstr "Some apps may be blocked." + +msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA" +msgstr "Turn on Advanced protection mode" + +msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA" +msgstr "Change default rules and patterns and create your own to set up a customised protection mode." + +msgid "IDS_ST_HEADER_REPORTS_SWA" +msgstr "Reports" + +msgid "IDS_ST_MBODY_FULL_REPORTS_SWA" +msgstr "Full reports" + +msgid "IDS_ST_MBODY_APP_RANKINGS_SWA" +msgstr "App rankings" + +msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA" +msgstr "Data statistics" + +msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA" +msgstr "Rules and patterns" + +msgid "IDS_ST_NPBODY_NO_REPORTS_SWA" +msgstr "No reports" + +msgid "IDS_ST_HEADER_SETTINGS_SWA" +msgstr "Settings" + +msgid "IDS_ST_MBODY_KEEP_LOGS_SWA" +msgstr "Keep logs" + +msgid "IDS_LOGS_CLEANED" +msgstr "Logs cleaned" + +msgid "IDS_LOGS_CLEANED_FAILED" +msgstr "Failed to clean logs" + +msgid "IDS_ST_OPT_1_WEEK_SWA" +msgstr "1 week" + +msgid "IDS_ST_OPT_1_DAY_SWA" +msgstr "1 day" + +msgid "IDS_ST_OPT_1_MONTH_SWA" +msgstr "1 month" + +msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA" +msgstr "Report details" + +msgid "IDS_ST_BODY_CATEGORY_C_SWA" +msgstr "Category:" + +msgid "IDS_ST_BODY_APP_C_SWA" +msgstr "App:" + +msgid "IDS_ST_BODY_DESTINATION_C_SWA" +msgstr "Destination:" + +msgid "IDS_ST_BODY_PATTERN_C_SWA" +msgstr "Pattern:" + +msgid "IDS_ST_BODY_DLP_ACTION" +msgstr "Action" + +msgid "IDS_ST_BODY_PACKET_C_SWA" +msgstr "Packet:" + +msgid "IDS_ST_BODY_DLP_ACTION_ALLOW" +msgstr "Allow" + +msgid "IDS_ST_BODY_DLP_ACTION_DENY" +msgstr "Deny" + +msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE" +msgstr "Sanitize" + +msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES" +msgstr "All Rules" + +msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA" +msgstr "Quick" + +msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA" +msgstr "Create rules quickly and easily." + +msgid "IDS_ST_MBODY_CUSTOM_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CREATE_RULES_FROM_SCRATCH_TO_GIVE_YOU_FULL_CONTROL_OF_YOUR_DATA_PROTECTION_USE_THIS_OPTION_TO_CREATE_NON_STANDARD_RULES_SWA" +msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules." + +msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA" +msgstr "Custom protection mode" + +msgid "IDS_ST_TAB_RULES_SWA" +msgstr "Rules" + +msgid "IDS_ST_TAB_PATTERNS_SWA" +msgstr "Patterns" + +msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA" +msgstr "Select template" + +msgid "IDS_ST_HEADER_SELECT_APPS_SWA" +msgstr "Select apps" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION" +msgstr "Select Action" + +msgid "IDS_ST_ACBUTTON_NEXT_SWA" +msgstr "NEXT" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK" +msgstr "OK" + +msgid "IDS_ST_ACBUTTON_DONE_SWA" +msgstr "DONE" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE" +msgstr "Rule created." + +msgid "IDS_ST_TPOP_RULE_DELETED_SWA" +msgstr "Rule deleted." + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE" +msgstr "Delete Rule" + +msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA" +msgstr "Delete patterns" + +msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA" +msgstr "This rule will be deleted." + +msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA" +msgstr "Create pattern" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN" +msgstr "Custom" + +msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA" +msgstr "%d patterns deleted." + +msgid "IDS_ST_OPT_EDIT_SWA" +msgstr "Edit" + +msgid "IDS_ST_OPT_CREATE_SWA" +msgstr "Create" + +msgid "IDS_ST_OPT_ALL_PATTERNS_SWA" +msgstr "All patterns" + +msgid "IDS_ST_BODY_NAME_SWA" +msgstr "Name" + +msgid "IDS_ST_BODY_DESCRIPTION_SWA" +msgstr "Description" + +msgid "IDS_ST_BODY_CATEGORY_SWA" +msgstr "Category" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME" +msgstr "Category name" + +msgid "IDS_ST_OPT_STRING_MATCH_SWA" +msgstr "String match" + +msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA" +msgstr "Regular expression" + +msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d patterns will be deleted." + +msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA" +msgstr "This report will be deleted." + +msgid "IDS_ST_OPT_DELETE_SWA" +msgstr "Delete" + +msgid "IDS_ST_HEADER_DELETE_REPORT_SWA" +msgstr "Delete report" + +msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d reports will be deleted." + +msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA" +msgstr "1 report deleted." + +msgid "IDS_ST_MBODY_SELECT_ALL_SWA" +msgstr "Select all" + +msgid "IDS_ST_ACBUTTON_DELETE_SWA" +msgstr "DELETE" + +msgid "IDS_ST_ACBUTTON_CANCEL_SWA" +msgstr "CANCEL" + +msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA" +msgstr "%d reports deleted." + +msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA" +msgstr "Select items" + +msgid "IDS_ST_HEADER_PD_SELECTED_SWA" +msgstr "%d selected" + +msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Basic protection mode turned on." + +msgid "IDS_ST_TPOP_RULE_CREATED_SWA" +msgstr "Rule created. Custom protection mode turned on." + +msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Advanced protection mode turned on." + +msgid "IDS_ST_HEADER_DETAILS_SWA" +msgstr "Details" + +msgid "IDS_ST_BODY_STRING_TYPE_SWA" +msgstr "String type" + +msgid "IDS_ST_BODY_SEARCH_TERM_SWA" +msgstr "Search term" + +msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA" +msgstr "Leaks captured" + +msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA" +msgstr "Total leaks" + +msgid "IDS_ST_HEADER_RULE_DETAILS_SWA" +msgstr "Rule details" + +msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA" +msgstr "Pattern details" @@ -31,3 +31,272 @@ msgstr "%d aldiz" msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB" msgstr "Pribatutas./Segurtasuna" +msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA" +msgstr "Prevent apps from leaking your sensitive data without authorisation." + +msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA" +msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts." + +msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA" +msgstr "Protection mode" + +msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA" +msgstr "Basic" + +msgid "IDS_ST_SBODY_MONITOR_YOUR_MAIN_SENSITIVE_DATA_TO_PREVENT_IT_FROM_BEING_LEAKED_BY_MOST_APPS_THIS_MODE_IS_SUITABLE_FOR_REGULAR_USERS_SWA" +msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users." + +msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA" +msgstr "Advanced" + +msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA" +msgstr "Set up strict rules to prevent data leakage." + +msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA" +msgstr "This mode will affect app performance." + +msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA" +msgstr "Some apps may be blocked." + +msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA" +msgstr "Turn on Advanced protection mode" + +msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA" +msgstr "Change default rules and patterns and create your own to set up a customised protection mode." + +msgid "IDS_ST_HEADER_REPORTS_SWA" +msgstr "Reports" + +msgid "IDS_ST_MBODY_FULL_REPORTS_SWA" +msgstr "Full reports" + +msgid "IDS_ST_MBODY_APP_RANKINGS_SWA" +msgstr "App rankings" + +msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA" +msgstr "Data statistics" + +msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA" +msgstr "Rules and patterns" + +msgid "IDS_ST_NPBODY_NO_REPORTS_SWA" +msgstr "No reports" + +msgid "IDS_ST_HEADER_SETTINGS_SWA" +msgstr "Settings" + +msgid "IDS_ST_MBODY_KEEP_LOGS_SWA" +msgstr "Keep logs" + +msgid "IDS_LOGS_CLEANED" +msgstr "Logs cleaned" + +msgid "IDS_LOGS_CLEANED_FAILED" +msgstr "Failed to clean logs" + +msgid "IDS_ST_OPT_1_WEEK_SWA" +msgstr "1 week" + +msgid "IDS_ST_OPT_1_DAY_SWA" +msgstr "1 day" + +msgid "IDS_ST_OPT_1_MONTH_SWA" +msgstr "1 month" + +msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA" +msgstr "Report details" + +msgid "IDS_ST_BODY_CATEGORY_C_SWA" +msgstr "Category:" + +msgid "IDS_ST_BODY_APP_C_SWA" +msgstr "App:" + +msgid "IDS_ST_BODY_DESTINATION_C_SWA" +msgstr "Destination:" + +msgid "IDS_ST_BODY_PATTERN_C_SWA" +msgstr "Pattern:" + +msgid "IDS_ST_BODY_DLP_ACTION" +msgstr "Action" + +msgid "IDS_ST_BODY_PACKET_C_SWA" +msgstr "Packet:" + +msgid "IDS_ST_BODY_DLP_ACTION_ALLOW" +msgstr "Allow" + +msgid "IDS_ST_BODY_DLP_ACTION_DENY" +msgstr "Deny" + +msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE" +msgstr "Sanitize" + +msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES" +msgstr "All Rules" + +msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA" +msgstr "Quick" + +msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA" +msgstr "Create rules quickly and easily." + +msgid "IDS_ST_MBODY_CUSTOM_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CREATE_RULES_FROM_SCRATCH_TO_GIVE_YOU_FULL_CONTROL_OF_YOUR_DATA_PROTECTION_USE_THIS_OPTION_TO_CREATE_NON_STANDARD_RULES_SWA" +msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules." + +msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA" +msgstr "Custom protection mode" + +msgid "IDS_ST_TAB_RULES_SWA" +msgstr "Rules" + +msgid "IDS_ST_TAB_PATTERNS_SWA" +msgstr "Patterns" + +msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA" +msgstr "Select template" + +msgid "IDS_ST_HEADER_SELECT_APPS_SWA" +msgstr "Select apps" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION" +msgstr "Select Action" + +msgid "IDS_ST_ACBUTTON_NEXT_SWA" +msgstr "NEXT" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK" +msgstr "OK" + +msgid "IDS_ST_ACBUTTON_DONE_SWA" +msgstr "DONE" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE" +msgstr "Rule created." + +msgid "IDS_ST_TPOP_RULE_DELETED_SWA" +msgstr "Rule deleted." + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE" +msgstr "Delete Rule" + +msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA" +msgstr "Delete patterns" + +msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA" +msgstr "This rule will be deleted." + +msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA" +msgstr "Create pattern" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN" +msgstr "Custom" + +msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA" +msgstr "%d patterns deleted." + +msgid "IDS_ST_OPT_EDIT_SWA" +msgstr "Edit" + +msgid "IDS_ST_OPT_CREATE_SWA" +msgstr "Create" + +msgid "IDS_ST_OPT_ALL_PATTERNS_SWA" +msgstr "All patterns" + +msgid "IDS_ST_BODY_NAME_SWA" +msgstr "Name" + +msgid "IDS_ST_BODY_DESCRIPTION_SWA" +msgstr "Description" + +msgid "IDS_ST_BODY_CATEGORY_SWA" +msgstr "Category" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME" +msgstr "Category name" + +msgid "IDS_ST_OPT_STRING_MATCH_SWA" +msgstr "String match" + +msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA" +msgstr "Regular expression" + +msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d patterns will be deleted." + +msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA" +msgstr "This report will be deleted." + +msgid "IDS_ST_OPT_DELETE_SWA" +msgstr "Delete" + +msgid "IDS_ST_HEADER_DELETE_REPORT_SWA" +msgstr "Delete report" + +msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d reports will be deleted." + +msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA" +msgstr "1 report deleted." + +msgid "IDS_ST_MBODY_SELECT_ALL_SWA" +msgstr "Select all" + +msgid "IDS_ST_ACBUTTON_DELETE_SWA" +msgstr "DELETE" + +msgid "IDS_ST_ACBUTTON_CANCEL_SWA" +msgstr "CANCEL" + +msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA" +msgstr "%d reports deleted." + +msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA" +msgstr "Select items" + +msgid "IDS_ST_HEADER_PD_SELECTED_SWA" +msgstr "%d selected" + +msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Basic protection mode turned on." + +msgid "IDS_ST_TPOP_RULE_CREATED_SWA" +msgstr "Rule created. Custom protection mode turned on." + +msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Advanced protection mode turned on." + +msgid "IDS_ST_HEADER_DETAILS_SWA" +msgstr "Details" + +msgid "IDS_ST_BODY_STRING_TYPE_SWA" +msgstr "String type" + +msgid "IDS_ST_BODY_SEARCH_TERM_SWA" +msgstr "Search term" + +msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA" +msgstr "Leaks captured" + +msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA" +msgstr "Total leaks" + +msgid "IDS_ST_HEADER_RULE_DETAILS_SWA" +msgstr "Rule details" + +msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA" +msgstr "Pattern details" @@ -31,3 +31,272 @@ msgstr "%d kertaa" msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB" msgstr "Yksityisyys ja tietot." +msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA" +msgstr "Prevent apps from leaking your sensitive data without authorisation." + +msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA" +msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts." + +msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA" +msgstr "Protection mode" + +msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA" +msgstr "Basic" + +msgid "IDS_ST_SBODY_MONITOR_YOUR_MAIN_SENSITIVE_DATA_TO_PREVENT_IT_FROM_BEING_LEAKED_BY_MOST_APPS_THIS_MODE_IS_SUITABLE_FOR_REGULAR_USERS_SWA" +msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users." + +msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA" +msgstr "Advanced" + +msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA" +msgstr "Set up strict rules to prevent data leakage." + +msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA" +msgstr "This mode will affect app performance." + +msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA" +msgstr "Some apps may be blocked." + +msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA" +msgstr "Turn on Advanced protection mode" + +msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA" +msgstr "Change default rules and patterns and create your own to set up a customised protection mode." + +msgid "IDS_ST_HEADER_REPORTS_SWA" +msgstr "Reports" + +msgid "IDS_ST_MBODY_FULL_REPORTS_SWA" +msgstr "Full reports" + +msgid "IDS_ST_MBODY_APP_RANKINGS_SWA" +msgstr "App rankings" + +msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA" +msgstr "Data statistics" + +msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA" +msgstr "Rules and patterns" + +msgid "IDS_ST_NPBODY_NO_REPORTS_SWA" +msgstr "No reports" + +msgid "IDS_ST_HEADER_SETTINGS_SWA" +msgstr "Settings" + +msgid "IDS_ST_MBODY_KEEP_LOGS_SWA" +msgstr "Keep logs" + +msgid "IDS_LOGS_CLEANED" +msgstr "Logs cleaned" + +msgid "IDS_LOGS_CLEANED_FAILED" +msgstr "Failed to clean logs" + +msgid "IDS_ST_OPT_1_WEEK_SWA" +msgstr "1 week" + +msgid "IDS_ST_OPT_1_DAY_SWA" +msgstr "1 day" + +msgid "IDS_ST_OPT_1_MONTH_SWA" +msgstr "1 month" + +msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA" +msgstr "Report details" + +msgid "IDS_ST_BODY_CATEGORY_C_SWA" +msgstr "Category:" + +msgid "IDS_ST_BODY_APP_C_SWA" +msgstr "App:" + +msgid "IDS_ST_BODY_DESTINATION_C_SWA" +msgstr "Destination:" + +msgid "IDS_ST_BODY_PATTERN_C_SWA" +msgstr "Pattern:" + +msgid "IDS_ST_BODY_DLP_ACTION" +msgstr "Action" + +msgid "IDS_ST_BODY_PACKET_C_SWA" +msgstr "Packet:" + +msgid "IDS_ST_BODY_DLP_ACTION_ALLOW" +msgstr "Allow" + +msgid "IDS_ST_BODY_DLP_ACTION_DENY" +msgstr "Deny" + +msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE" +msgstr "Sanitize" + +msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES" +msgstr "All Rules" + +msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA" +msgstr "Quick" + +msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA" +msgstr "Create rules quickly and easily." + +msgid "IDS_ST_MBODY_CUSTOM_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CREATE_RULES_FROM_SCRATCH_TO_GIVE_YOU_FULL_CONTROL_OF_YOUR_DATA_PROTECTION_USE_THIS_OPTION_TO_CREATE_NON_STANDARD_RULES_SWA" +msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules." + +msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA" +msgstr "Custom protection mode" + +msgid "IDS_ST_TAB_RULES_SWA" +msgstr "Rules" + +msgid "IDS_ST_TAB_PATTERNS_SWA" +msgstr "Patterns" + +msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA" +msgstr "Select template" + +msgid "IDS_ST_HEADER_SELECT_APPS_SWA" +msgstr "Select apps" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION" +msgstr "Select Action" + +msgid "IDS_ST_ACBUTTON_NEXT_SWA" +msgstr "NEXT" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK" +msgstr "OK" + +msgid "IDS_ST_ACBUTTON_DONE_SWA" +msgstr "DONE" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE" +msgstr "Rule created." + +msgid "IDS_ST_TPOP_RULE_DELETED_SWA" +msgstr "Rule deleted." + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE" +msgstr "Delete Rule" + +msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA" +msgstr "Delete patterns" + +msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA" +msgstr "This rule will be deleted." + +msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA" +msgstr "Create pattern" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN" +msgstr "Custom" + +msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA" +msgstr "%d patterns deleted." + +msgid "IDS_ST_OPT_EDIT_SWA" +msgstr "Edit" + +msgid "IDS_ST_OPT_CREATE_SWA" +msgstr "Create" + +msgid "IDS_ST_OPT_ALL_PATTERNS_SWA" +msgstr "All patterns" + +msgid "IDS_ST_BODY_NAME_SWA" +msgstr "Name" + +msgid "IDS_ST_BODY_DESCRIPTION_SWA" +msgstr "Description" + +msgid "IDS_ST_BODY_CATEGORY_SWA" +msgstr "Category" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME" +msgstr "Category name" + +msgid "IDS_ST_OPT_STRING_MATCH_SWA" +msgstr "String match" + +msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA" +msgstr "Regular expression" + +msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d patterns will be deleted." + +msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA" +msgstr "This report will be deleted." + +msgid "IDS_ST_OPT_DELETE_SWA" +msgstr "Delete" + +msgid "IDS_ST_HEADER_DELETE_REPORT_SWA" +msgstr "Delete report" + +msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d reports will be deleted." + +msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA" +msgstr "1 report deleted." + +msgid "IDS_ST_MBODY_SELECT_ALL_SWA" +msgstr "Select all" + +msgid "IDS_ST_ACBUTTON_DELETE_SWA" +msgstr "DELETE" + +msgid "IDS_ST_ACBUTTON_CANCEL_SWA" +msgstr "CANCEL" + +msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA" +msgstr "%d reports deleted." + +msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA" +msgstr "Select items" + +msgid "IDS_ST_HEADER_PD_SELECTED_SWA" +msgstr "%d selected" + +msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Basic protection mode turned on." + +msgid "IDS_ST_TPOP_RULE_CREATED_SWA" +msgstr "Rule created. Custom protection mode turned on." + +msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Advanced protection mode turned on." + +msgid "IDS_ST_HEADER_DETAILS_SWA" +msgstr "Details" + +msgid "IDS_ST_BODY_STRING_TYPE_SWA" +msgstr "String type" + +msgid "IDS_ST_BODY_SEARCH_TERM_SWA" +msgstr "Search term" + +msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA" +msgstr "Leaks captured" + +msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA" +msgstr "Total leaks" + +msgid "IDS_ST_HEADER_RULE_DETAILS_SWA" +msgstr "Rule details" + +msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA" +msgstr "Pattern details" @@ -31,3 +31,272 @@ msgstr "%d fois" msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB" msgstr "Confidentialité/sécu." +msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA" +msgstr "Prevent apps from leaking your sensitive data without authorisation." + +msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA" +msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts." + +msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA" +msgstr "Protection mode" + +msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA" +msgstr "Basic" + +msgid "IDS_ST_SBODY_MONITOR_YOUR_MAIN_SENSITIVE_DATA_TO_PREVENT_IT_FROM_BEING_LEAKED_BY_MOST_APPS_THIS_MODE_IS_SUITABLE_FOR_REGULAR_USERS_SWA" +msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users." + +msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA" +msgstr "Advanced" + +msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA" +msgstr "Set up strict rules to prevent data leakage." + +msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA" +msgstr "This mode will affect app performance." + +msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA" +msgstr "Some apps may be blocked." + +msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA" +msgstr "Turn on Advanced protection mode" + +msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA" +msgstr "Change default rules and patterns and create your own to set up a customised protection mode." + +msgid "IDS_ST_HEADER_REPORTS_SWA" +msgstr "Reports" + +msgid "IDS_ST_MBODY_FULL_REPORTS_SWA" +msgstr "Full reports" + +msgid "IDS_ST_MBODY_APP_RANKINGS_SWA" +msgstr "App rankings" + +msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA" +msgstr "Data statistics" + +msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA" +msgstr "Rules and patterns" + +msgid "IDS_ST_NPBODY_NO_REPORTS_SWA" +msgstr "No reports" + +msgid "IDS_ST_HEADER_SETTINGS_SWA" +msgstr "Settings" + +msgid "IDS_ST_MBODY_KEEP_LOGS_SWA" +msgstr "Keep logs" + +msgid "IDS_LOGS_CLEANED" +msgstr "Logs cleaned" + +msgid "IDS_LOGS_CLEANED_FAILED" +msgstr "Failed to clean logs" + +msgid "IDS_ST_OPT_1_WEEK_SWA" +msgstr "1 week" + +msgid "IDS_ST_OPT_1_DAY_SWA" +msgstr "1 day" + +msgid "IDS_ST_OPT_1_MONTH_SWA" +msgstr "1 month" + +msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA" +msgstr "Report details" + +msgid "IDS_ST_BODY_CATEGORY_C_SWA" +msgstr "Category:" + +msgid "IDS_ST_BODY_APP_C_SWA" +msgstr "App:" + +msgid "IDS_ST_BODY_DESTINATION_C_SWA" +msgstr "Destination:" + +msgid "IDS_ST_BODY_PATTERN_C_SWA" +msgstr "Pattern:" + +msgid "IDS_ST_BODY_DLP_ACTION" +msgstr "Action" + +msgid "IDS_ST_BODY_PACKET_C_SWA" +msgstr "Packet:" + +msgid "IDS_ST_BODY_DLP_ACTION_ALLOW" +msgstr "Allow" + +msgid "IDS_ST_BODY_DLP_ACTION_DENY" +msgstr "Deny" + +msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE" +msgstr "Sanitize" + +msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES" +msgstr "All Rules" + +msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA" +msgstr "Quick" + +msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA" +msgstr "Create rules quickly and easily." + +msgid "IDS_ST_MBODY_CUSTOM_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CREATE_RULES_FROM_SCRATCH_TO_GIVE_YOU_FULL_CONTROL_OF_YOUR_DATA_PROTECTION_USE_THIS_OPTION_TO_CREATE_NON_STANDARD_RULES_SWA" +msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules." + +msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA" +msgstr "Custom protection mode" + +msgid "IDS_ST_TAB_RULES_SWA" +msgstr "Rules" + +msgid "IDS_ST_TAB_PATTERNS_SWA" +msgstr "Patterns" + +msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA" +msgstr "Select template" + +msgid "IDS_ST_HEADER_SELECT_APPS_SWA" +msgstr "Select apps" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION" +msgstr "Select Action" + +msgid "IDS_ST_ACBUTTON_NEXT_SWA" +msgstr "NEXT" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK" +msgstr "OK" + +msgid "IDS_ST_ACBUTTON_DONE_SWA" +msgstr "DONE" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE" +msgstr "Rule created." + +msgid "IDS_ST_TPOP_RULE_DELETED_SWA" +msgstr "Rule deleted." + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE" +msgstr "Delete Rule" + +msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA" +msgstr "Delete patterns" + +msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA" +msgstr "This rule will be deleted." + +msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA" +msgstr "Create pattern" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN" +msgstr "Custom" + +msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA" +msgstr "%d patterns deleted." + +msgid "IDS_ST_OPT_EDIT_SWA" +msgstr "Edit" + +msgid "IDS_ST_OPT_CREATE_SWA" +msgstr "Create" + +msgid "IDS_ST_OPT_ALL_PATTERNS_SWA" +msgstr "All patterns" + +msgid "IDS_ST_BODY_NAME_SWA" +msgstr "Name" + +msgid "IDS_ST_BODY_DESCRIPTION_SWA" +msgstr "Description" + +msgid "IDS_ST_BODY_CATEGORY_SWA" +msgstr "Category" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME" +msgstr "Category name" + +msgid "IDS_ST_OPT_STRING_MATCH_SWA" +msgstr "String match" + +msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA" +msgstr "Regular expression" + +msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d patterns will be deleted." + +msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA" +msgstr "This report will be deleted." + +msgid "IDS_ST_OPT_DELETE_SWA" +msgstr "Delete" + +msgid "IDS_ST_HEADER_DELETE_REPORT_SWA" +msgstr "Delete report" + +msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d reports will be deleted." + +msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA" +msgstr "1 report deleted." + +msgid "IDS_ST_MBODY_SELECT_ALL_SWA" +msgstr "Select all" + +msgid "IDS_ST_ACBUTTON_DELETE_SWA" +msgstr "DELETE" + +msgid "IDS_ST_ACBUTTON_CANCEL_SWA" +msgstr "CANCEL" + +msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA" +msgstr "%d reports deleted." + +msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA" +msgstr "Select items" + +msgid "IDS_ST_HEADER_PD_SELECTED_SWA" +msgstr "%d selected" + +msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Basic protection mode turned on." + +msgid "IDS_ST_TPOP_RULE_CREATED_SWA" +msgstr "Rule created. Custom protection mode turned on." + +msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Advanced protection mode turned on." + +msgid "IDS_ST_HEADER_DETAILS_SWA" +msgstr "Details" + +msgid "IDS_ST_BODY_STRING_TYPE_SWA" +msgstr "String type" + +msgid "IDS_ST_BODY_SEARCH_TERM_SWA" +msgstr "Search term" + +msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA" +msgstr "Leaks captured" + +msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA" +msgstr "Total leaks" + +msgid "IDS_ST_HEADER_RULE_DETAILS_SWA" +msgstr "Rule details" + +msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA" +msgstr "Pattern details" diff --git a/po/fr_CA.po b/po/fr_CA.po index d05fa76..b49fcb3 100755 --- a/po/fr_CA.po +++ b/po/fr_CA.po @@ -31,3 +31,272 @@ msgstr "%d fois" msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB" msgstr "Confidentialité/sécu." +msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA" +msgstr "Prevent apps from leaking your sensitive data without authorisation." + +msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA" +msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts." + +msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA" +msgstr "Protection mode" + +msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA" +msgstr "Basic" + +msgid "IDS_ST_SBODY_MONITOR_YOUR_MAIN_SENSITIVE_DATA_TO_PREVENT_IT_FROM_BEING_LEAKED_BY_MOST_APPS_THIS_MODE_IS_SUITABLE_FOR_REGULAR_USERS_SWA" +msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users." + +msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA" +msgstr "Advanced" + +msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA" +msgstr "Set up strict rules to prevent data leakage." + +msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA" +msgstr "This mode will affect app performance." + +msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA" +msgstr "Some apps may be blocked." + +msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA" +msgstr "Turn on Advanced protection mode" + +msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA" +msgstr "Change default rules and patterns and create your own to set up a customised protection mode." + +msgid "IDS_ST_HEADER_REPORTS_SWA" +msgstr "Reports" + +msgid "IDS_ST_MBODY_FULL_REPORTS_SWA" +msgstr "Full reports" + +msgid "IDS_ST_MBODY_APP_RANKINGS_SWA" +msgstr "App rankings" + +msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA" +msgstr "Data statistics" + +msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA" +msgstr "Rules and patterns" + +msgid "IDS_ST_NPBODY_NO_REPORTS_SWA" +msgstr "No reports" + +msgid "IDS_ST_HEADER_SETTINGS_SWA" +msgstr "Settings" + +msgid "IDS_ST_MBODY_KEEP_LOGS_SWA" +msgstr "Keep logs" + +msgid "IDS_LOGS_CLEANED" +msgstr "Logs cleaned" + +msgid "IDS_LOGS_CLEANED_FAILED" +msgstr "Failed to clean logs" + +msgid "IDS_ST_OPT_1_WEEK_SWA" +msgstr "1 week" + +msgid "IDS_ST_OPT_1_DAY_SWA" +msgstr "1 day" + +msgid "IDS_ST_OPT_1_MONTH_SWA" +msgstr "1 month" + +msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA" +msgstr "Report details" + +msgid "IDS_ST_BODY_CATEGORY_C_SWA" +msgstr "Category:" + +msgid "IDS_ST_BODY_APP_C_SWA" +msgstr "App:" + +msgid "IDS_ST_BODY_DESTINATION_C_SWA" +msgstr "Destination:" + +msgid "IDS_ST_BODY_PATTERN_C_SWA" +msgstr "Pattern:" + +msgid "IDS_ST_BODY_DLP_ACTION" +msgstr "Action" + +msgid "IDS_ST_BODY_PACKET_C_SWA" +msgstr "Packet:" + +msgid "IDS_ST_BODY_DLP_ACTION_ALLOW" +msgstr "Allow" + +msgid "IDS_ST_BODY_DLP_ACTION_DENY" +msgstr "Deny" + +msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE" +msgstr "Sanitize" + +msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES" +msgstr "All Rules" + +msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA" +msgstr "Quick" + +msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA" +msgstr "Create rules quickly and easily." + +msgid "IDS_ST_MBODY_CUSTOM_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CREATE_RULES_FROM_SCRATCH_TO_GIVE_YOU_FULL_CONTROL_OF_YOUR_DATA_PROTECTION_USE_THIS_OPTION_TO_CREATE_NON_STANDARD_RULES_SWA" +msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules." + +msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA" +msgstr "Custom protection mode" + +msgid "IDS_ST_TAB_RULES_SWA" +msgstr "Rules" + +msgid "IDS_ST_TAB_PATTERNS_SWA" +msgstr "Patterns" + +msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA" +msgstr "Select template" + +msgid "IDS_ST_HEADER_SELECT_APPS_SWA" +msgstr "Select apps" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION" +msgstr "Select Action" + +msgid "IDS_ST_ACBUTTON_NEXT_SWA" +msgstr "NEXT" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK" +msgstr "OK" + +msgid "IDS_ST_ACBUTTON_DONE_SWA" +msgstr "DONE" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE" +msgstr "Rule created." + +msgid "IDS_ST_TPOP_RULE_DELETED_SWA" +msgstr "Rule deleted." + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE" +msgstr "Delete Rule" + +msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA" +msgstr "Delete patterns" + +msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA" +msgstr "This rule will be deleted." + +msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA" +msgstr "Create pattern" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN" +msgstr "Custom" + +msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA" +msgstr "%d patterns deleted." + +msgid "IDS_ST_OPT_EDIT_SWA" +msgstr "Edit" + +msgid "IDS_ST_OPT_CREATE_SWA" +msgstr "Create" + +msgid "IDS_ST_OPT_ALL_PATTERNS_SWA" +msgstr "All patterns" + +msgid "IDS_ST_BODY_NAME_SWA" +msgstr "Name" + +msgid "IDS_ST_BODY_DESCRIPTION_SWA" +msgstr "Description" + +msgid "IDS_ST_BODY_CATEGORY_SWA" +msgstr "Category" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME" +msgstr "Category name" + +msgid "IDS_ST_OPT_STRING_MATCH_SWA" +msgstr "String match" + +msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA" +msgstr "Regular expression" + +msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d patterns will be deleted." + +msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA" +msgstr "This report will be deleted." + +msgid "IDS_ST_OPT_DELETE_SWA" +msgstr "Delete" + +msgid "IDS_ST_HEADER_DELETE_REPORT_SWA" +msgstr "Delete report" + +msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d reports will be deleted." + +msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA" +msgstr "1 report deleted." + +msgid "IDS_ST_MBODY_SELECT_ALL_SWA" +msgstr "Select all" + +msgid "IDS_ST_ACBUTTON_DELETE_SWA" +msgstr "DELETE" + +msgid "IDS_ST_ACBUTTON_CANCEL_SWA" +msgstr "CANCEL" + +msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA" +msgstr "%d reports deleted." + +msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA" +msgstr "Select items" + +msgid "IDS_ST_HEADER_PD_SELECTED_SWA" +msgstr "%d selected" + +msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Basic protection mode turned on." + +msgid "IDS_ST_TPOP_RULE_CREATED_SWA" +msgstr "Rule created. Custom protection mode turned on." + +msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Advanced protection mode turned on." + +msgid "IDS_ST_HEADER_DETAILS_SWA" +msgstr "Details" + +msgid "IDS_ST_BODY_STRING_TYPE_SWA" +msgstr "String type" + +msgid "IDS_ST_BODY_SEARCH_TERM_SWA" +msgstr "Search term" + +msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA" +msgstr "Leaks captured" + +msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA" +msgstr "Total leaks" + +msgid "IDS_ST_HEADER_RULE_DETAILS_SWA" +msgstr "Rule details" + +msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA" +msgstr "Pattern details" @@ -31,3 +31,272 @@ msgstr "%d uair" msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB" msgstr "Príobháid & slándáil" +msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA" +msgstr "Prevent apps from leaking your sensitive data without authorisation." + +msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA" +msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts." + +msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA" +msgstr "Protection mode" + +msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA" +msgstr "Basic" + +msgid "IDS_ST_SBODY_MONITOR_YOUR_MAIN_SENSITIVE_DATA_TO_PREVENT_IT_FROM_BEING_LEAKED_BY_MOST_APPS_THIS_MODE_IS_SUITABLE_FOR_REGULAR_USERS_SWA" +msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users." + +msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA" +msgstr "Advanced" + +msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA" +msgstr "Set up strict rules to prevent data leakage." + +msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA" +msgstr "This mode will affect app performance." + +msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA" +msgstr "Some apps may be blocked." + +msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA" +msgstr "Turn on Advanced protection mode" + +msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA" +msgstr "Change default rules and patterns and create your own to set up a customised protection mode." + +msgid "IDS_ST_HEADER_REPORTS_SWA" +msgstr "Reports" + +msgid "IDS_ST_MBODY_FULL_REPORTS_SWA" +msgstr "Full reports" + +msgid "IDS_ST_MBODY_APP_RANKINGS_SWA" +msgstr "App rankings" + +msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA" +msgstr "Data statistics" + +msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA" +msgstr "Rules and patterns" + +msgid "IDS_ST_NPBODY_NO_REPORTS_SWA" +msgstr "No reports" + +msgid "IDS_ST_HEADER_SETTINGS_SWA" +msgstr "Settings" + +msgid "IDS_ST_MBODY_KEEP_LOGS_SWA" +msgstr "Keep logs" + +msgid "IDS_LOGS_CLEANED" +msgstr "Logs cleaned" + +msgid "IDS_LOGS_CLEANED_FAILED" +msgstr "Failed to clean logs" + +msgid "IDS_ST_OPT_1_WEEK_SWA" +msgstr "1 week" + +msgid "IDS_ST_OPT_1_DAY_SWA" +msgstr "1 day" + +msgid "IDS_ST_OPT_1_MONTH_SWA" +msgstr "1 month" + +msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA" +msgstr "Report details" + +msgid "IDS_ST_BODY_CATEGORY_C_SWA" +msgstr "Category:" + +msgid "IDS_ST_BODY_APP_C_SWA" +msgstr "App:" + +msgid "IDS_ST_BODY_DESTINATION_C_SWA" +msgstr "Destination:" + +msgid "IDS_ST_BODY_PATTERN_C_SWA" +msgstr "Pattern:" + +msgid "IDS_ST_BODY_DLP_ACTION" +msgstr "Action" + +msgid "IDS_ST_BODY_PACKET_C_SWA" +msgstr "Packet:" + +msgid "IDS_ST_BODY_DLP_ACTION_ALLOW" +msgstr "Allow" + +msgid "IDS_ST_BODY_DLP_ACTION_DENY" +msgstr "Deny" + +msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE" +msgstr "Sanitize" + +msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES" +msgstr "All Rules" + +msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA" +msgstr "Quick" + +msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA" +msgstr "Create rules quickly and easily." + +msgid "IDS_ST_MBODY_CUSTOM_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CREATE_RULES_FROM_SCRATCH_TO_GIVE_YOU_FULL_CONTROL_OF_YOUR_DATA_PROTECTION_USE_THIS_OPTION_TO_CREATE_NON_STANDARD_RULES_SWA" +msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules." + +msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA" +msgstr "Custom protection mode" + +msgid "IDS_ST_TAB_RULES_SWA" +msgstr "Rules" + +msgid "IDS_ST_TAB_PATTERNS_SWA" +msgstr "Patterns" + +msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA" +msgstr "Select template" + +msgid "IDS_ST_HEADER_SELECT_APPS_SWA" +msgstr "Select apps" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION" +msgstr "Select Action" + +msgid "IDS_ST_ACBUTTON_NEXT_SWA" +msgstr "NEXT" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK" +msgstr "OK" + +msgid "IDS_ST_ACBUTTON_DONE_SWA" +msgstr "DONE" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE" +msgstr "Rule created." + +msgid "IDS_ST_TPOP_RULE_DELETED_SWA" +msgstr "Rule deleted." + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE" +msgstr "Delete Rule" + +msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA" +msgstr "Delete patterns" + +msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA" +msgstr "This rule will be deleted." + +msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA" +msgstr "Create pattern" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN" +msgstr "Custom" + +msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA" +msgstr "%d patterns deleted." + +msgid "IDS_ST_OPT_EDIT_SWA" +msgstr "Edit" + +msgid "IDS_ST_OPT_CREATE_SWA" +msgstr "Create" + +msgid "IDS_ST_OPT_ALL_PATTERNS_SWA" +msgstr "All patterns" + +msgid "IDS_ST_BODY_NAME_SWA" +msgstr "Name" + +msgid "IDS_ST_BODY_DESCRIPTION_SWA" +msgstr "Description" + +msgid "IDS_ST_BODY_CATEGORY_SWA" +msgstr "Category" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME" +msgstr "Category name" + +msgid "IDS_ST_OPT_STRING_MATCH_SWA" +msgstr "String match" + +msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA" +msgstr "Regular expression" + +msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d patterns will be deleted." + +msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA" +msgstr "This report will be deleted." + +msgid "IDS_ST_OPT_DELETE_SWA" +msgstr "Delete" + +msgid "IDS_ST_HEADER_DELETE_REPORT_SWA" +msgstr "Delete report" + +msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d reports will be deleted." + +msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA" +msgstr "1 report deleted." + +msgid "IDS_ST_MBODY_SELECT_ALL_SWA" +msgstr "Select all" + +msgid "IDS_ST_ACBUTTON_DELETE_SWA" +msgstr "DELETE" + +msgid "IDS_ST_ACBUTTON_CANCEL_SWA" +msgstr "CANCEL" + +msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA" +msgstr "%d reports deleted." + +msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA" +msgstr "Select items" + +msgid "IDS_ST_HEADER_PD_SELECTED_SWA" +msgstr "%d selected" + +msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Basic protection mode turned on." + +msgid "IDS_ST_TPOP_RULE_CREATED_SWA" +msgstr "Rule created. Custom protection mode turned on." + +msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Advanced protection mode turned on." + +msgid "IDS_ST_HEADER_DETAILS_SWA" +msgstr "Details" + +msgid "IDS_ST_BODY_STRING_TYPE_SWA" +msgstr "String type" + +msgid "IDS_ST_BODY_SEARCH_TERM_SWA" +msgstr "Search term" + +msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA" +msgstr "Leaks captured" + +msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA" +msgstr "Total leaks" + +msgid "IDS_ST_HEADER_RULE_DETAILS_SWA" +msgstr "Rule details" + +msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA" +msgstr "Pattern details" @@ -31,3 +31,272 @@ msgstr "%d veces" msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB" msgstr "Privacid. e seguridade" +msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA" +msgstr "Prevent apps from leaking your sensitive data without authorisation." + +msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA" +msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts." + +msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA" +msgstr "Protection mode" + +msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA" +msgstr "Basic" + +msgid "IDS_ST_SBODY_MONITOR_YOUR_MAIN_SENSITIVE_DATA_TO_PREVENT_IT_FROM_BEING_LEAKED_BY_MOST_APPS_THIS_MODE_IS_SUITABLE_FOR_REGULAR_USERS_SWA" +msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users." + +msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA" +msgstr "Advanced" + +msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA" +msgstr "Set up strict rules to prevent data leakage." + +msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA" +msgstr "This mode will affect app performance." + +msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA" +msgstr "Some apps may be blocked." + +msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA" +msgstr "Turn on Advanced protection mode" + +msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA" +msgstr "Change default rules and patterns and create your own to set up a customised protection mode." + +msgid "IDS_ST_HEADER_REPORTS_SWA" +msgstr "Reports" + +msgid "IDS_ST_MBODY_FULL_REPORTS_SWA" +msgstr "Full reports" + +msgid "IDS_ST_MBODY_APP_RANKINGS_SWA" +msgstr "App rankings" + +msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA" +msgstr "Data statistics" + +msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA" +msgstr "Rules and patterns" + +msgid "IDS_ST_NPBODY_NO_REPORTS_SWA" +msgstr "No reports" + +msgid "IDS_ST_HEADER_SETTINGS_SWA" +msgstr "Settings" + +msgid "IDS_ST_MBODY_KEEP_LOGS_SWA" +msgstr "Keep logs" + +msgid "IDS_LOGS_CLEANED" +msgstr "Logs cleaned" + +msgid "IDS_LOGS_CLEANED_FAILED" +msgstr "Failed to clean logs" + +msgid "IDS_ST_OPT_1_WEEK_SWA" +msgstr "1 week" + +msgid "IDS_ST_OPT_1_DAY_SWA" +msgstr "1 day" + +msgid "IDS_ST_OPT_1_MONTH_SWA" +msgstr "1 month" + +msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA" +msgstr "Report details" + +msgid "IDS_ST_BODY_CATEGORY_C_SWA" +msgstr "Category:" + +msgid "IDS_ST_BODY_APP_C_SWA" +msgstr "App:" + +msgid "IDS_ST_BODY_DESTINATION_C_SWA" +msgstr "Destination:" + +msgid "IDS_ST_BODY_PATTERN_C_SWA" +msgstr "Pattern:" + +msgid "IDS_ST_BODY_DLP_ACTION" +msgstr "Action" + +msgid "IDS_ST_BODY_PACKET_C_SWA" +msgstr "Packet:" + +msgid "IDS_ST_BODY_DLP_ACTION_ALLOW" +msgstr "Allow" + +msgid "IDS_ST_BODY_DLP_ACTION_DENY" +msgstr "Deny" + +msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE" +msgstr "Sanitize" + +msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES" +msgstr "All Rules" + +msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA" +msgstr "Quick" + +msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA" +msgstr "Create rules quickly and easily." + +msgid "IDS_ST_MBODY_CUSTOM_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CREATE_RULES_FROM_SCRATCH_TO_GIVE_YOU_FULL_CONTROL_OF_YOUR_DATA_PROTECTION_USE_THIS_OPTION_TO_CREATE_NON_STANDARD_RULES_SWA" +msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules." + +msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA" +msgstr "Custom protection mode" + +msgid "IDS_ST_TAB_RULES_SWA" +msgstr "Rules" + +msgid "IDS_ST_TAB_PATTERNS_SWA" +msgstr "Patterns" + +msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA" +msgstr "Select template" + +msgid "IDS_ST_HEADER_SELECT_APPS_SWA" +msgstr "Select apps" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION" +msgstr "Select Action" + +msgid "IDS_ST_ACBUTTON_NEXT_SWA" +msgstr "NEXT" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK" +msgstr "OK" + +msgid "IDS_ST_ACBUTTON_DONE_SWA" +msgstr "DONE" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE" +msgstr "Rule created." + +msgid "IDS_ST_TPOP_RULE_DELETED_SWA" +msgstr "Rule deleted." + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE" +msgstr "Delete Rule" + +msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA" +msgstr "Delete patterns" + +msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA" +msgstr "This rule will be deleted." + +msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA" +msgstr "Create pattern" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN" +msgstr "Custom" + +msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA" +msgstr "%d patterns deleted." + +msgid "IDS_ST_OPT_EDIT_SWA" +msgstr "Edit" + +msgid "IDS_ST_OPT_CREATE_SWA" +msgstr "Create" + +msgid "IDS_ST_OPT_ALL_PATTERNS_SWA" +msgstr "All patterns" + +msgid "IDS_ST_BODY_NAME_SWA" +msgstr "Name" + +msgid "IDS_ST_BODY_DESCRIPTION_SWA" +msgstr "Description" + +msgid "IDS_ST_BODY_CATEGORY_SWA" +msgstr "Category" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME" +msgstr "Category name" + +msgid "IDS_ST_OPT_STRING_MATCH_SWA" +msgstr "String match" + +msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA" +msgstr "Regular expression" + +msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d patterns will be deleted." + +msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA" +msgstr "This report will be deleted." + +msgid "IDS_ST_OPT_DELETE_SWA" +msgstr "Delete" + +msgid "IDS_ST_HEADER_DELETE_REPORT_SWA" +msgstr "Delete report" + +msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d reports will be deleted." + +msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA" +msgstr "1 report deleted." + +msgid "IDS_ST_MBODY_SELECT_ALL_SWA" +msgstr "Select all" + +msgid "IDS_ST_ACBUTTON_DELETE_SWA" +msgstr "DELETE" + +msgid "IDS_ST_ACBUTTON_CANCEL_SWA" +msgstr "CANCEL" + +msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA" +msgstr "%d reports deleted." + +msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA" +msgstr "Select items" + +msgid "IDS_ST_HEADER_PD_SELECTED_SWA" +msgstr "%d selected" + +msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Basic protection mode turned on." + +msgid "IDS_ST_TPOP_RULE_CREATED_SWA" +msgstr "Rule created. Custom protection mode turned on." + +msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Advanced protection mode turned on." + +msgid "IDS_ST_HEADER_DETAILS_SWA" +msgstr "Details" + +msgid "IDS_ST_BODY_STRING_TYPE_SWA" +msgstr "String type" + +msgid "IDS_ST_BODY_SEARCH_TERM_SWA" +msgstr "Search term" + +msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA" +msgstr "Leaks captured" + +msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA" +msgstr "Total leaks" + +msgid "IDS_ST_HEADER_RULE_DETAILS_SWA" +msgstr "Rule details" + +msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA" +msgstr "Pattern details" @@ -31,3 +31,272 @@ msgstr "%d बार" msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB" msgstr "गोपनीयता और सुरक्षा" +msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA" +msgstr "Prevent apps from leaking your sensitive data without authorisation." + +msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA" +msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts." + +msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA" +msgstr "Protection mode" + +msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA" +msgstr "Basic" + +msgid "IDS_ST_SBODY_MONITOR_YOUR_MAIN_SENSITIVE_DATA_TO_PREVENT_IT_FROM_BEING_LEAKED_BY_MOST_APPS_THIS_MODE_IS_SUITABLE_FOR_REGULAR_USERS_SWA" +msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users." + +msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA" +msgstr "Advanced" + +msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA" +msgstr "Set up strict rules to prevent data leakage." + +msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA" +msgstr "This mode will affect app performance." + +msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA" +msgstr "Some apps may be blocked." + +msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA" +msgstr "Turn on Advanced protection mode" + +msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA" +msgstr "Change default rules and patterns and create your own to set up a customised protection mode." + +msgid "IDS_ST_HEADER_REPORTS_SWA" +msgstr "Reports" + +msgid "IDS_ST_MBODY_FULL_REPORTS_SWA" +msgstr "Full reports" + +msgid "IDS_ST_MBODY_APP_RANKINGS_SWA" +msgstr "App rankings" + +msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA" +msgstr "Data statistics" + +msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA" +msgstr "Rules and patterns" + +msgid "IDS_ST_NPBODY_NO_REPORTS_SWA" +msgstr "No reports" + +msgid "IDS_ST_HEADER_SETTINGS_SWA" +msgstr "Settings" + +msgid "IDS_ST_MBODY_KEEP_LOGS_SWA" +msgstr "Keep logs" + +msgid "IDS_LOGS_CLEANED" +msgstr "Logs cleaned" + +msgid "IDS_LOGS_CLEANED_FAILED" +msgstr "Failed to clean logs" + +msgid "IDS_ST_OPT_1_WEEK_SWA" +msgstr "1 week" + +msgid "IDS_ST_OPT_1_DAY_SWA" +msgstr "1 day" + +msgid "IDS_ST_OPT_1_MONTH_SWA" +msgstr "1 month" + +msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA" +msgstr "Report details" + +msgid "IDS_ST_BODY_CATEGORY_C_SWA" +msgstr "Category:" + +msgid "IDS_ST_BODY_APP_C_SWA" +msgstr "App:" + +msgid "IDS_ST_BODY_DESTINATION_C_SWA" +msgstr "Destination:" + +msgid "IDS_ST_BODY_PATTERN_C_SWA" +msgstr "Pattern:" + +msgid "IDS_ST_BODY_DLP_ACTION" +msgstr "Action" + +msgid "IDS_ST_BODY_PACKET_C_SWA" +msgstr "Packet:" + +msgid "IDS_ST_BODY_DLP_ACTION_ALLOW" +msgstr "Allow" + +msgid "IDS_ST_BODY_DLP_ACTION_DENY" +msgstr "Deny" + +msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE" +msgstr "Sanitize" + +msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES" +msgstr "All Rules" + +msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA" +msgstr "Quick" + +msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA" +msgstr "Create rules quickly and easily." + +msgid "IDS_ST_MBODY_CUSTOM_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CREATE_RULES_FROM_SCRATCH_TO_GIVE_YOU_FULL_CONTROL_OF_YOUR_DATA_PROTECTION_USE_THIS_OPTION_TO_CREATE_NON_STANDARD_RULES_SWA" +msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules." + +msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA" +msgstr "Custom protection mode" + +msgid "IDS_ST_TAB_RULES_SWA" +msgstr "Rules" + +msgid "IDS_ST_TAB_PATTERNS_SWA" +msgstr "Patterns" + +msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA" +msgstr "Select template" + +msgid "IDS_ST_HEADER_SELECT_APPS_SWA" +msgstr "Select apps" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION" +msgstr "Select Action" + +msgid "IDS_ST_ACBUTTON_NEXT_SWA" +msgstr "NEXT" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK" +msgstr "OK" + +msgid "IDS_ST_ACBUTTON_DONE_SWA" +msgstr "DONE" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE" +msgstr "Rule created." + +msgid "IDS_ST_TPOP_RULE_DELETED_SWA" +msgstr "Rule deleted." + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE" +msgstr "Delete Rule" + +msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA" +msgstr "Delete patterns" + +msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA" +msgstr "This rule will be deleted." + +msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA" +msgstr "Create pattern" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN" +msgstr "Custom" + +msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA" +msgstr "%d patterns deleted." + +msgid "IDS_ST_OPT_EDIT_SWA" +msgstr "Edit" + +msgid "IDS_ST_OPT_CREATE_SWA" +msgstr "Create" + +msgid "IDS_ST_OPT_ALL_PATTERNS_SWA" +msgstr "All patterns" + +msgid "IDS_ST_BODY_NAME_SWA" +msgstr "Name" + +msgid "IDS_ST_BODY_DESCRIPTION_SWA" +msgstr "Description" + +msgid "IDS_ST_BODY_CATEGORY_SWA" +msgstr "Category" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME" +msgstr "Category name" + +msgid "IDS_ST_OPT_STRING_MATCH_SWA" +msgstr "String match" + +msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA" +msgstr "Regular expression" + +msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d patterns will be deleted." + +msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA" +msgstr "This report will be deleted." + +msgid "IDS_ST_OPT_DELETE_SWA" +msgstr "Delete" + +msgid "IDS_ST_HEADER_DELETE_REPORT_SWA" +msgstr "Delete report" + +msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d reports will be deleted." + +msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA" +msgstr "1 report deleted." + +msgid "IDS_ST_MBODY_SELECT_ALL_SWA" +msgstr "Select all" + +msgid "IDS_ST_ACBUTTON_DELETE_SWA" +msgstr "DELETE" + +msgid "IDS_ST_ACBUTTON_CANCEL_SWA" +msgstr "CANCEL" + +msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA" +msgstr "%d reports deleted." + +msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA" +msgstr "Select items" + +msgid "IDS_ST_HEADER_PD_SELECTED_SWA" +msgstr "%d selected" + +msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Basic protection mode turned on." + +msgid "IDS_ST_TPOP_RULE_CREATED_SWA" +msgstr "Rule created. Custom protection mode turned on." + +msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Advanced protection mode turned on." + +msgid "IDS_ST_HEADER_DETAILS_SWA" +msgstr "Details" + +msgid "IDS_ST_BODY_STRING_TYPE_SWA" +msgstr "String type" + +msgid "IDS_ST_BODY_SEARCH_TERM_SWA" +msgstr "Search term" + +msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA" +msgstr "Leaks captured" + +msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA" +msgstr "Total leaks" + +msgid "IDS_ST_HEADER_RULE_DETAILS_SWA" +msgstr "Rule details" + +msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA" +msgstr "Pattern details" @@ -31,3 +31,272 @@ msgstr "%d puta" msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB" msgstr "Privatnost i sigurnost" +msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA" +msgstr "Prevent apps from leaking your sensitive data without authorisation." + +msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA" +msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts." + +msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA" +msgstr "Protection mode" + +msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA" +msgstr "Basic" + +msgid "IDS_ST_SBODY_MONITOR_YOUR_MAIN_SENSITIVE_DATA_TO_PREVENT_IT_FROM_BEING_LEAKED_BY_MOST_APPS_THIS_MODE_IS_SUITABLE_FOR_REGULAR_USERS_SWA" +msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users." + +msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA" +msgstr "Advanced" + +msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA" +msgstr "Set up strict rules to prevent data leakage." + +msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA" +msgstr "This mode will affect app performance." + +msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA" +msgstr "Some apps may be blocked." + +msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA" +msgstr "Turn on Advanced protection mode" + +msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA" +msgstr "Change default rules and patterns and create your own to set up a customised protection mode." + +msgid "IDS_ST_HEADER_REPORTS_SWA" +msgstr "Reports" + +msgid "IDS_ST_MBODY_FULL_REPORTS_SWA" +msgstr "Full reports" + +msgid "IDS_ST_MBODY_APP_RANKINGS_SWA" +msgstr "App rankings" + +msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA" +msgstr "Data statistics" + +msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA" +msgstr "Rules and patterns" + +msgid "IDS_ST_NPBODY_NO_REPORTS_SWA" +msgstr "No reports" + +msgid "IDS_ST_HEADER_SETTINGS_SWA" +msgstr "Settings" + +msgid "IDS_ST_MBODY_KEEP_LOGS_SWA" +msgstr "Keep logs" + +msgid "IDS_LOGS_CLEANED" +msgstr "Logs cleaned" + +msgid "IDS_LOGS_CLEANED_FAILED" +msgstr "Failed to clean logs" + +msgid "IDS_ST_OPT_1_WEEK_SWA" +msgstr "1 week" + +msgid "IDS_ST_OPT_1_DAY_SWA" +msgstr "1 day" + +msgid "IDS_ST_OPT_1_MONTH_SWA" +msgstr "1 month" + +msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA" +msgstr "Report details" + +msgid "IDS_ST_BODY_CATEGORY_C_SWA" +msgstr "Category:" + +msgid "IDS_ST_BODY_APP_C_SWA" +msgstr "App:" + +msgid "IDS_ST_BODY_DESTINATION_C_SWA" +msgstr "Destination:" + +msgid "IDS_ST_BODY_PATTERN_C_SWA" +msgstr "Pattern:" + +msgid "IDS_ST_BODY_DLP_ACTION" +msgstr "Action" + +msgid "IDS_ST_BODY_PACKET_C_SWA" +msgstr "Packet:" + +msgid "IDS_ST_BODY_DLP_ACTION_ALLOW" +msgstr "Allow" + +msgid "IDS_ST_BODY_DLP_ACTION_DENY" +msgstr "Deny" + +msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE" +msgstr "Sanitize" + +msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES" +msgstr "All Rules" + +msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA" +msgstr "Quick" + +msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA" +msgstr "Create rules quickly and easily." + +msgid "IDS_ST_MBODY_CUSTOM_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CREATE_RULES_FROM_SCRATCH_TO_GIVE_YOU_FULL_CONTROL_OF_YOUR_DATA_PROTECTION_USE_THIS_OPTION_TO_CREATE_NON_STANDARD_RULES_SWA" +msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules." + +msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA" +msgstr "Custom protection mode" + +msgid "IDS_ST_TAB_RULES_SWA" +msgstr "Rules" + +msgid "IDS_ST_TAB_PATTERNS_SWA" +msgstr "Patterns" + +msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA" +msgstr "Select template" + +msgid "IDS_ST_HEADER_SELECT_APPS_SWA" +msgstr "Select apps" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION" +msgstr "Select Action" + +msgid "IDS_ST_ACBUTTON_NEXT_SWA" +msgstr "NEXT" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK" +msgstr "OK" + +msgid "IDS_ST_ACBUTTON_DONE_SWA" +msgstr "DONE" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE" +msgstr "Rule created." + +msgid "IDS_ST_TPOP_RULE_DELETED_SWA" +msgstr "Rule deleted." + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE" +msgstr "Delete Rule" + +msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA" +msgstr "Delete patterns" + +msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA" +msgstr "This rule will be deleted." + +msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA" +msgstr "Create pattern" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN" +msgstr "Custom" + +msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA" +msgstr "%d patterns deleted." + +msgid "IDS_ST_OPT_EDIT_SWA" +msgstr "Edit" + +msgid "IDS_ST_OPT_CREATE_SWA" +msgstr "Create" + +msgid "IDS_ST_OPT_ALL_PATTERNS_SWA" +msgstr "All patterns" + +msgid "IDS_ST_BODY_NAME_SWA" +msgstr "Name" + +msgid "IDS_ST_BODY_DESCRIPTION_SWA" +msgstr "Description" + +msgid "IDS_ST_BODY_CATEGORY_SWA" +msgstr "Category" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME" +msgstr "Category name" + +msgid "IDS_ST_OPT_STRING_MATCH_SWA" +msgstr "String match" + +msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA" +msgstr "Regular expression" + +msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d patterns will be deleted." + +msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA" +msgstr "This report will be deleted." + +msgid "IDS_ST_OPT_DELETE_SWA" +msgstr "Delete" + +msgid "IDS_ST_HEADER_DELETE_REPORT_SWA" +msgstr "Delete report" + +msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d reports will be deleted." + +msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA" +msgstr "1 report deleted." + +msgid "IDS_ST_MBODY_SELECT_ALL_SWA" +msgstr "Select all" + +msgid "IDS_ST_ACBUTTON_DELETE_SWA" +msgstr "DELETE" + +msgid "IDS_ST_ACBUTTON_CANCEL_SWA" +msgstr "CANCEL" + +msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA" +msgstr "%d reports deleted." + +msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA" +msgstr "Select items" + +msgid "IDS_ST_HEADER_PD_SELECTED_SWA" +msgstr "%d selected" + +msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Basic protection mode turned on." + +msgid "IDS_ST_TPOP_RULE_CREATED_SWA" +msgstr "Rule created. Custom protection mode turned on." + +msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Advanced protection mode turned on." + +msgid "IDS_ST_HEADER_DETAILS_SWA" +msgstr "Details" + +msgid "IDS_ST_BODY_STRING_TYPE_SWA" +msgstr "String type" + +msgid "IDS_ST_BODY_SEARCH_TERM_SWA" +msgstr "Search term" + +msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA" +msgstr "Leaks captured" + +msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA" +msgstr "Total leaks" + +msgid "IDS_ST_HEADER_RULE_DETAILS_SWA" +msgstr "Rule details" + +msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA" +msgstr "Pattern details" @@ -31,3 +31,272 @@ msgstr "%d ízben" msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB" msgstr "Adatvéd. és biztonság" +msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA" +msgstr "Prevent apps from leaking your sensitive data without authorisation." + +msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA" +msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts." + +msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA" +msgstr "Protection mode" + +msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA" +msgstr "Basic" + +msgid "IDS_ST_SBODY_MONITOR_YOUR_MAIN_SENSITIVE_DATA_TO_PREVENT_IT_FROM_BEING_LEAKED_BY_MOST_APPS_THIS_MODE_IS_SUITABLE_FOR_REGULAR_USERS_SWA" +msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users." + +msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA" +msgstr "Advanced" + +msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA" +msgstr "Set up strict rules to prevent data leakage." + +msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA" +msgstr "This mode will affect app performance." + +msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA" +msgstr "Some apps may be blocked." + +msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA" +msgstr "Turn on Advanced protection mode" + +msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA" +msgstr "Change default rules and patterns and create your own to set up a customised protection mode." + +msgid "IDS_ST_HEADER_REPORTS_SWA" +msgstr "Reports" + +msgid "IDS_ST_MBODY_FULL_REPORTS_SWA" +msgstr "Full reports" + +msgid "IDS_ST_MBODY_APP_RANKINGS_SWA" +msgstr "App rankings" + +msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA" +msgstr "Data statistics" + +msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA" +msgstr "Rules and patterns" + +msgid "IDS_ST_NPBODY_NO_REPORTS_SWA" +msgstr "No reports" + +msgid "IDS_ST_HEADER_SETTINGS_SWA" +msgstr "Settings" + +msgid "IDS_ST_MBODY_KEEP_LOGS_SWA" +msgstr "Keep logs" + +msgid "IDS_LOGS_CLEANED" +msgstr "Logs cleaned" + +msgid "IDS_LOGS_CLEANED_FAILED" +msgstr "Failed to clean logs" + +msgid "IDS_ST_OPT_1_WEEK_SWA" +msgstr "1 week" + +msgid "IDS_ST_OPT_1_DAY_SWA" +msgstr "1 day" + +msgid "IDS_ST_OPT_1_MONTH_SWA" +msgstr "1 month" + +msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA" +msgstr "Report details" + +msgid "IDS_ST_BODY_CATEGORY_C_SWA" +msgstr "Category:" + +msgid "IDS_ST_BODY_APP_C_SWA" +msgstr "App:" + +msgid "IDS_ST_BODY_DESTINATION_C_SWA" +msgstr "Destination:" + +msgid "IDS_ST_BODY_PATTERN_C_SWA" +msgstr "Pattern:" + +msgid "IDS_ST_BODY_DLP_ACTION" +msgstr "Action" + +msgid "IDS_ST_BODY_PACKET_C_SWA" +msgstr "Packet:" + +msgid "IDS_ST_BODY_DLP_ACTION_ALLOW" +msgstr "Allow" + +msgid "IDS_ST_BODY_DLP_ACTION_DENY" +msgstr "Deny" + +msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE" +msgstr "Sanitize" + +msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES" +msgstr "All Rules" + +msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA" +msgstr "Quick" + +msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA" +msgstr "Create rules quickly and easily." + +msgid "IDS_ST_MBODY_CUSTOM_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CREATE_RULES_FROM_SCRATCH_TO_GIVE_YOU_FULL_CONTROL_OF_YOUR_DATA_PROTECTION_USE_THIS_OPTION_TO_CREATE_NON_STANDARD_RULES_SWA" +msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules." + +msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA" +msgstr "Custom protection mode" + +msgid "IDS_ST_TAB_RULES_SWA" +msgstr "Rules" + +msgid "IDS_ST_TAB_PATTERNS_SWA" +msgstr "Patterns" + +msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA" +msgstr "Select template" + +msgid "IDS_ST_HEADER_SELECT_APPS_SWA" +msgstr "Select apps" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION" +msgstr "Select Action" + +msgid "IDS_ST_ACBUTTON_NEXT_SWA" +msgstr "NEXT" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK" +msgstr "OK" + +msgid "IDS_ST_ACBUTTON_DONE_SWA" +msgstr "DONE" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE" +msgstr "Rule created." + +msgid "IDS_ST_TPOP_RULE_DELETED_SWA" +msgstr "Rule deleted." + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE" +msgstr "Delete Rule" + +msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA" +msgstr "Delete patterns" + +msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA" +msgstr "This rule will be deleted." + +msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA" +msgstr "Create pattern" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN" +msgstr "Custom" + +msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA" +msgstr "%d patterns deleted." + +msgid "IDS_ST_OPT_EDIT_SWA" +msgstr "Edit" + +msgid "IDS_ST_OPT_CREATE_SWA" +msgstr "Create" + +msgid "IDS_ST_OPT_ALL_PATTERNS_SWA" +msgstr "All patterns" + +msgid "IDS_ST_BODY_NAME_SWA" +msgstr "Name" + +msgid "IDS_ST_BODY_DESCRIPTION_SWA" +msgstr "Description" + +msgid "IDS_ST_BODY_CATEGORY_SWA" +msgstr "Category" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME" +msgstr "Category name" + +msgid "IDS_ST_OPT_STRING_MATCH_SWA" +msgstr "String match" + +msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA" +msgstr "Regular expression" + +msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d patterns will be deleted." + +msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA" +msgstr "This report will be deleted." + +msgid "IDS_ST_OPT_DELETE_SWA" +msgstr "Delete" + +msgid "IDS_ST_HEADER_DELETE_REPORT_SWA" +msgstr "Delete report" + +msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d reports will be deleted." + +msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA" +msgstr "1 report deleted." + +msgid "IDS_ST_MBODY_SELECT_ALL_SWA" +msgstr "Select all" + +msgid "IDS_ST_ACBUTTON_DELETE_SWA" +msgstr "DELETE" + +msgid "IDS_ST_ACBUTTON_CANCEL_SWA" +msgstr "CANCEL" + +msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA" +msgstr "%d reports deleted." + +msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA" +msgstr "Select items" + +msgid "IDS_ST_HEADER_PD_SELECTED_SWA" +msgstr "%d selected" + +msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Basic protection mode turned on." + +msgid "IDS_ST_TPOP_RULE_CREATED_SWA" +msgstr "Rule created. Custom protection mode turned on." + +msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Advanced protection mode turned on." + +msgid "IDS_ST_HEADER_DETAILS_SWA" +msgstr "Details" + +msgid "IDS_ST_BODY_STRING_TYPE_SWA" +msgstr "String type" + +msgid "IDS_ST_BODY_SEARCH_TERM_SWA" +msgstr "Search term" + +msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA" +msgstr "Leaks captured" + +msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA" +msgstr "Total leaks" + +msgid "IDS_ST_HEADER_RULE_DETAILS_SWA" +msgstr "Rule details" + +msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA" +msgstr "Pattern details" @@ -31,3 +31,272 @@ msgstr "%d անգամ" msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB" msgstr "Գաղտն. և անվտանգութ." +msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA" +msgstr "Prevent apps from leaking your sensitive data without authorisation." + +msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA" +msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts." + +msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA" +msgstr "Protection mode" + +msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA" +msgstr "Basic" + +msgid "IDS_ST_SBODY_MONITOR_YOUR_MAIN_SENSITIVE_DATA_TO_PREVENT_IT_FROM_BEING_LEAKED_BY_MOST_APPS_THIS_MODE_IS_SUITABLE_FOR_REGULAR_USERS_SWA" +msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users." + +msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA" +msgstr "Advanced" + +msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA" +msgstr "Set up strict rules to prevent data leakage." + +msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA" +msgstr "This mode will affect app performance." + +msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA" +msgstr "Some apps may be blocked." + +msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA" +msgstr "Turn on Advanced protection mode" + +msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA" +msgstr "Change default rules and patterns and create your own to set up a customised protection mode." + +msgid "IDS_ST_HEADER_REPORTS_SWA" +msgstr "Reports" + +msgid "IDS_ST_MBODY_FULL_REPORTS_SWA" +msgstr "Full reports" + +msgid "IDS_ST_MBODY_APP_RANKINGS_SWA" +msgstr "App rankings" + +msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA" +msgstr "Data statistics" + +msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA" +msgstr "Rules and patterns" + +msgid "IDS_ST_NPBODY_NO_REPORTS_SWA" +msgstr "No reports" + +msgid "IDS_ST_HEADER_SETTINGS_SWA" +msgstr "Settings" + +msgid "IDS_ST_MBODY_KEEP_LOGS_SWA" +msgstr "Keep logs" + +msgid "IDS_LOGS_CLEANED" +msgstr "Logs cleaned" + +msgid "IDS_LOGS_CLEANED_FAILED" +msgstr "Failed to clean logs" + +msgid "IDS_ST_OPT_1_WEEK_SWA" +msgstr "1 week" + +msgid "IDS_ST_OPT_1_DAY_SWA" +msgstr "1 day" + +msgid "IDS_ST_OPT_1_MONTH_SWA" +msgstr "1 month" + +msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA" +msgstr "Report details" + +msgid "IDS_ST_BODY_CATEGORY_C_SWA" +msgstr "Category:" + +msgid "IDS_ST_BODY_APP_C_SWA" +msgstr "App:" + +msgid "IDS_ST_BODY_DESTINATION_C_SWA" +msgstr "Destination:" + +msgid "IDS_ST_BODY_PATTERN_C_SWA" +msgstr "Pattern:" + +msgid "IDS_ST_BODY_DLP_ACTION" +msgstr "Action" + +msgid "IDS_ST_BODY_PACKET_C_SWA" +msgstr "Packet:" + +msgid "IDS_ST_BODY_DLP_ACTION_ALLOW" +msgstr "Allow" + +msgid "IDS_ST_BODY_DLP_ACTION_DENY" +msgstr "Deny" + +msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE" +msgstr "Sanitize" + +msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES" +msgstr "All Rules" + +msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA" +msgstr "Quick" + +msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA" +msgstr "Create rules quickly and easily." + +msgid "IDS_ST_MBODY_CUSTOM_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CREATE_RULES_FROM_SCRATCH_TO_GIVE_YOU_FULL_CONTROL_OF_YOUR_DATA_PROTECTION_USE_THIS_OPTION_TO_CREATE_NON_STANDARD_RULES_SWA" +msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules." + +msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA" +msgstr "Custom protection mode" + +msgid "IDS_ST_TAB_RULES_SWA" +msgstr "Rules" + +msgid "IDS_ST_TAB_PATTERNS_SWA" +msgstr "Patterns" + +msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA" +msgstr "Select template" + +msgid "IDS_ST_HEADER_SELECT_APPS_SWA" +msgstr "Select apps" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION" +msgstr "Select Action" + +msgid "IDS_ST_ACBUTTON_NEXT_SWA" +msgstr "NEXT" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK" +msgstr "OK" + +msgid "IDS_ST_ACBUTTON_DONE_SWA" +msgstr "DONE" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE" +msgstr "Rule created." + +msgid "IDS_ST_TPOP_RULE_DELETED_SWA" +msgstr "Rule deleted." + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE" +msgstr "Delete Rule" + +msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA" +msgstr "Delete patterns" + +msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA" +msgstr "This rule will be deleted." + +msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA" +msgstr "Create pattern" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN" +msgstr "Custom" + +msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA" +msgstr "%d patterns deleted." + +msgid "IDS_ST_OPT_EDIT_SWA" +msgstr "Edit" + +msgid "IDS_ST_OPT_CREATE_SWA" +msgstr "Create" + +msgid "IDS_ST_OPT_ALL_PATTERNS_SWA" +msgstr "All patterns" + +msgid "IDS_ST_BODY_NAME_SWA" +msgstr "Name" + +msgid "IDS_ST_BODY_DESCRIPTION_SWA" +msgstr "Description" + +msgid "IDS_ST_BODY_CATEGORY_SWA" +msgstr "Category" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME" +msgstr "Category name" + +msgid "IDS_ST_OPT_STRING_MATCH_SWA" +msgstr "String match" + +msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA" +msgstr "Regular expression" + +msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d patterns will be deleted." + +msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA" +msgstr "This report will be deleted." + +msgid "IDS_ST_OPT_DELETE_SWA" +msgstr "Delete" + +msgid "IDS_ST_HEADER_DELETE_REPORT_SWA" +msgstr "Delete report" + +msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d reports will be deleted." + +msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA" +msgstr "1 report deleted." + +msgid "IDS_ST_MBODY_SELECT_ALL_SWA" +msgstr "Select all" + +msgid "IDS_ST_ACBUTTON_DELETE_SWA" +msgstr "DELETE" + +msgid "IDS_ST_ACBUTTON_CANCEL_SWA" +msgstr "CANCEL" + +msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA" +msgstr "%d reports deleted." + +msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA" +msgstr "Select items" + +msgid "IDS_ST_HEADER_PD_SELECTED_SWA" +msgstr "%d selected" + +msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Basic protection mode turned on." + +msgid "IDS_ST_TPOP_RULE_CREATED_SWA" +msgstr "Rule created. Custom protection mode turned on." + +msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Advanced protection mode turned on." + +msgid "IDS_ST_HEADER_DETAILS_SWA" +msgstr "Details" + +msgid "IDS_ST_BODY_STRING_TYPE_SWA" +msgstr "String type" + +msgid "IDS_ST_BODY_SEARCH_TERM_SWA" +msgstr "Search term" + +msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA" +msgstr "Leaks captured" + +msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA" +msgstr "Total leaks" + +msgid "IDS_ST_HEADER_RULE_DETAILS_SWA" +msgstr "Rule details" + +msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA" +msgstr "Pattern details" @@ -31,3 +31,272 @@ msgstr "%d sinnum" msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB" msgstr "Persónuvernd og öryggi" +msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA" +msgstr "Prevent apps from leaking your sensitive data without authorisation." + +msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA" +msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts." + +msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA" +msgstr "Protection mode" + +msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA" +msgstr "Basic" + +msgid "IDS_ST_SBODY_MONITOR_YOUR_MAIN_SENSITIVE_DATA_TO_PREVENT_IT_FROM_BEING_LEAKED_BY_MOST_APPS_THIS_MODE_IS_SUITABLE_FOR_REGULAR_USERS_SWA" +msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users." + +msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA" +msgstr "Advanced" + +msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA" +msgstr "Set up strict rules to prevent data leakage." + +msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA" +msgstr "This mode will affect app performance." + +msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA" +msgstr "Some apps may be blocked." + +msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA" +msgstr "Turn on Advanced protection mode" + +msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA" +msgstr "Change default rules and patterns and create your own to set up a customised protection mode." + +msgid "IDS_ST_HEADER_REPORTS_SWA" +msgstr "Reports" + +msgid "IDS_ST_MBODY_FULL_REPORTS_SWA" +msgstr "Full reports" + +msgid "IDS_ST_MBODY_APP_RANKINGS_SWA" +msgstr "App rankings" + +msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA" +msgstr "Data statistics" + +msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA" +msgstr "Rules and patterns" + +msgid "IDS_ST_NPBODY_NO_REPORTS_SWA" +msgstr "No reports" + +msgid "IDS_ST_HEADER_SETTINGS_SWA" +msgstr "Settings" + +msgid "IDS_ST_MBODY_KEEP_LOGS_SWA" +msgstr "Keep logs" + +msgid "IDS_LOGS_CLEANED" +msgstr "Logs cleaned" + +msgid "IDS_LOGS_CLEANED_FAILED" +msgstr "Failed to clean logs" + +msgid "IDS_ST_OPT_1_WEEK_SWA" +msgstr "1 week" + +msgid "IDS_ST_OPT_1_DAY_SWA" +msgstr "1 day" + +msgid "IDS_ST_OPT_1_MONTH_SWA" +msgstr "1 month" + +msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA" +msgstr "Report details" + +msgid "IDS_ST_BODY_CATEGORY_C_SWA" +msgstr "Category:" + +msgid "IDS_ST_BODY_APP_C_SWA" +msgstr "App:" + +msgid "IDS_ST_BODY_DESTINATION_C_SWA" +msgstr "Destination:" + +msgid "IDS_ST_BODY_PATTERN_C_SWA" +msgstr "Pattern:" + +msgid "IDS_ST_BODY_DLP_ACTION" +msgstr "Action" + +msgid "IDS_ST_BODY_PACKET_C_SWA" +msgstr "Packet:" + +msgid "IDS_ST_BODY_DLP_ACTION_ALLOW" +msgstr "Allow" + +msgid "IDS_ST_BODY_DLP_ACTION_DENY" +msgstr "Deny" + +msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE" +msgstr "Sanitize" + +msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES" +msgstr "All Rules" + +msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA" +msgstr "Quick" + +msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA" +msgstr "Create rules quickly and easily." + +msgid "IDS_ST_MBODY_CUSTOM_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CREATE_RULES_FROM_SCRATCH_TO_GIVE_YOU_FULL_CONTROL_OF_YOUR_DATA_PROTECTION_USE_THIS_OPTION_TO_CREATE_NON_STANDARD_RULES_SWA" +msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules." + +msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA" +msgstr "Custom protection mode" + +msgid "IDS_ST_TAB_RULES_SWA" +msgstr "Rules" + +msgid "IDS_ST_TAB_PATTERNS_SWA" +msgstr "Patterns" + +msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA" +msgstr "Select template" + +msgid "IDS_ST_HEADER_SELECT_APPS_SWA" +msgstr "Select apps" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION" +msgstr "Select Action" + +msgid "IDS_ST_ACBUTTON_NEXT_SWA" +msgstr "NEXT" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK" +msgstr "OK" + +msgid "IDS_ST_ACBUTTON_DONE_SWA" +msgstr "DONE" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE" +msgstr "Rule created." + +msgid "IDS_ST_TPOP_RULE_DELETED_SWA" +msgstr "Rule deleted." + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE" +msgstr "Delete Rule" + +msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA" +msgstr "Delete patterns" + +msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA" +msgstr "This rule will be deleted." + +msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA" +msgstr "Create pattern" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN" +msgstr "Custom" + +msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA" +msgstr "%d patterns deleted." + +msgid "IDS_ST_OPT_EDIT_SWA" +msgstr "Edit" + +msgid "IDS_ST_OPT_CREATE_SWA" +msgstr "Create" + +msgid "IDS_ST_OPT_ALL_PATTERNS_SWA" +msgstr "All patterns" + +msgid "IDS_ST_BODY_NAME_SWA" +msgstr "Name" + +msgid "IDS_ST_BODY_DESCRIPTION_SWA" +msgstr "Description" + +msgid "IDS_ST_BODY_CATEGORY_SWA" +msgstr "Category" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME" +msgstr "Category name" + +msgid "IDS_ST_OPT_STRING_MATCH_SWA" +msgstr "String match" + +msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA" +msgstr "Regular expression" + +msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d patterns will be deleted." + +msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA" +msgstr "This report will be deleted." + +msgid "IDS_ST_OPT_DELETE_SWA" +msgstr "Delete" + +msgid "IDS_ST_HEADER_DELETE_REPORT_SWA" +msgstr "Delete report" + +msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d reports will be deleted." + +msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA" +msgstr "1 report deleted." + +msgid "IDS_ST_MBODY_SELECT_ALL_SWA" +msgstr "Select all" + +msgid "IDS_ST_ACBUTTON_DELETE_SWA" +msgstr "DELETE" + +msgid "IDS_ST_ACBUTTON_CANCEL_SWA" +msgstr "CANCEL" + +msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA" +msgstr "%d reports deleted." + +msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA" +msgstr "Select items" + +msgid "IDS_ST_HEADER_PD_SELECTED_SWA" +msgstr "%d selected" + +msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Basic protection mode turned on." + +msgid "IDS_ST_TPOP_RULE_CREATED_SWA" +msgstr "Rule created. Custom protection mode turned on." + +msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Advanced protection mode turned on." + +msgid "IDS_ST_HEADER_DETAILS_SWA" +msgstr "Details" + +msgid "IDS_ST_BODY_STRING_TYPE_SWA" +msgstr "String type" + +msgid "IDS_ST_BODY_SEARCH_TERM_SWA" +msgstr "Search term" + +msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA" +msgstr "Leaks captured" + +msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA" +msgstr "Total leaks" + +msgid "IDS_ST_HEADER_RULE_DETAILS_SWA" +msgstr "Rule details" + +msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA" +msgstr "Pattern details" diff --git a/po/it_IT.po b/po/it_IT.po index 2386e21..d2ec452 100755 --- a/po/it_IT.po +++ b/po/it_IT.po @@ -31,3 +31,272 @@ msgstr "%d volte" msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB" msgstr "Privacy ed emergenza" +msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA" +msgstr "Prevent apps from leaking your sensitive data without authorisation." + +msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA" +msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts." + +msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA" +msgstr "Protection mode" + +msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA" +msgstr "Basic" + +msgid "IDS_ST_SBODY_MONITOR_YOUR_MAIN_SENSITIVE_DATA_TO_PREVENT_IT_FROM_BEING_LEAKED_BY_MOST_APPS_THIS_MODE_IS_SUITABLE_FOR_REGULAR_USERS_SWA" +msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users." + +msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA" +msgstr "Advanced" + +msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA" +msgstr "Set up strict rules to prevent data leakage." + +msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA" +msgstr "This mode will affect app performance." + +msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA" +msgstr "Some apps may be blocked." + +msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA" +msgstr "Turn on Advanced protection mode" + +msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA" +msgstr "Change default rules and patterns and create your own to set up a customised protection mode." + +msgid "IDS_ST_HEADER_REPORTS_SWA" +msgstr "Reports" + +msgid "IDS_ST_MBODY_FULL_REPORTS_SWA" +msgstr "Full reports" + +msgid "IDS_ST_MBODY_APP_RANKINGS_SWA" +msgstr "App rankings" + +msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA" +msgstr "Data statistics" + +msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA" +msgstr "Rules and patterns" + +msgid "IDS_ST_NPBODY_NO_REPORTS_SWA" +msgstr "No reports" + +msgid "IDS_ST_HEADER_SETTINGS_SWA" +msgstr "Settings" + +msgid "IDS_ST_MBODY_KEEP_LOGS_SWA" +msgstr "Keep logs" + +msgid "IDS_LOGS_CLEANED" +msgstr "Logs cleaned" + +msgid "IDS_LOGS_CLEANED_FAILED" +msgstr "Failed to clean logs" + +msgid "IDS_ST_OPT_1_WEEK_SWA" +msgstr "1 week" + +msgid "IDS_ST_OPT_1_DAY_SWA" +msgstr "1 day" + +msgid "IDS_ST_OPT_1_MONTH_SWA" +msgstr "1 month" + +msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA" +msgstr "Report details" + +msgid "IDS_ST_BODY_CATEGORY_C_SWA" +msgstr "Category:" + +msgid "IDS_ST_BODY_APP_C_SWA" +msgstr "App:" + +msgid "IDS_ST_BODY_DESTINATION_C_SWA" +msgstr "Destination:" + +msgid "IDS_ST_BODY_PATTERN_C_SWA" +msgstr "Pattern:" + +msgid "IDS_ST_BODY_DLP_ACTION" +msgstr "Action" + +msgid "IDS_ST_BODY_PACKET_C_SWA" +msgstr "Packet:" + +msgid "IDS_ST_BODY_DLP_ACTION_ALLOW" +msgstr "Allow" + +msgid "IDS_ST_BODY_DLP_ACTION_DENY" +msgstr "Deny" + +msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE" +msgstr "Sanitize" + +msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES" +msgstr "All Rules" + +msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA" +msgstr "Quick" + +msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA" +msgstr "Create rules quickly and easily." + +msgid "IDS_ST_MBODY_CUSTOM_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CREATE_RULES_FROM_SCRATCH_TO_GIVE_YOU_FULL_CONTROL_OF_YOUR_DATA_PROTECTION_USE_THIS_OPTION_TO_CREATE_NON_STANDARD_RULES_SWA" +msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules." + +msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA" +msgstr "Custom protection mode" + +msgid "IDS_ST_TAB_RULES_SWA" +msgstr "Rules" + +msgid "IDS_ST_TAB_PATTERNS_SWA" +msgstr "Patterns" + +msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA" +msgstr "Select template" + +msgid "IDS_ST_HEADER_SELECT_APPS_SWA" +msgstr "Select apps" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION" +msgstr "Select Action" + +msgid "IDS_ST_ACBUTTON_NEXT_SWA" +msgstr "NEXT" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK" +msgstr "OK" + +msgid "IDS_ST_ACBUTTON_DONE_SWA" +msgstr "DONE" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE" +msgstr "Rule created." + +msgid "IDS_ST_TPOP_RULE_DELETED_SWA" +msgstr "Rule deleted." + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE" +msgstr "Delete Rule" + +msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA" +msgstr "Delete patterns" + +msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA" +msgstr "This rule will be deleted." + +msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA" +msgstr "Create pattern" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN" +msgstr "Custom" + +msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA" +msgstr "%d patterns deleted." + +msgid "IDS_ST_OPT_EDIT_SWA" +msgstr "Edit" + +msgid "IDS_ST_OPT_CREATE_SWA" +msgstr "Create" + +msgid "IDS_ST_OPT_ALL_PATTERNS_SWA" +msgstr "All patterns" + +msgid "IDS_ST_BODY_NAME_SWA" +msgstr "Name" + +msgid "IDS_ST_BODY_DESCRIPTION_SWA" +msgstr "Description" + +msgid "IDS_ST_BODY_CATEGORY_SWA" +msgstr "Category" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME" +msgstr "Category name" + +msgid "IDS_ST_OPT_STRING_MATCH_SWA" +msgstr "String match" + +msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA" +msgstr "Regular expression" + +msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d patterns will be deleted." + +msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA" +msgstr "This report will be deleted." + +msgid "IDS_ST_OPT_DELETE_SWA" +msgstr "Delete" + +msgid "IDS_ST_HEADER_DELETE_REPORT_SWA" +msgstr "Delete report" + +msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d reports will be deleted." + +msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA" +msgstr "1 report deleted." + +msgid "IDS_ST_MBODY_SELECT_ALL_SWA" +msgstr "Select all" + +msgid "IDS_ST_ACBUTTON_DELETE_SWA" +msgstr "DELETE" + +msgid "IDS_ST_ACBUTTON_CANCEL_SWA" +msgstr "CANCEL" + +msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA" +msgstr "%d reports deleted." + +msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA" +msgstr "Select items" + +msgid "IDS_ST_HEADER_PD_SELECTED_SWA" +msgstr "%d selected" + +msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Basic protection mode turned on." + +msgid "IDS_ST_TPOP_RULE_CREATED_SWA" +msgstr "Rule created. Custom protection mode turned on." + +msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Advanced protection mode turned on." + +msgid "IDS_ST_HEADER_DETAILS_SWA" +msgstr "Details" + +msgid "IDS_ST_BODY_STRING_TYPE_SWA" +msgstr "String type" + +msgid "IDS_ST_BODY_SEARCH_TERM_SWA" +msgstr "Search term" + +msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA" +msgstr "Leaks captured" + +msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA" +msgstr "Total leaks" + +msgid "IDS_ST_HEADER_RULE_DETAILS_SWA" +msgstr "Rule details" + +msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA" +msgstr "Pattern details" diff --git a/po/ja_JP.po b/po/ja_JP.po index ce91a71..af26c04 100755 --- a/po/ja_JP.po +++ b/po/ja_JP.po @@ -31,3 +31,272 @@ msgstr "%d回" msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB" msgstr "プライバシーとセキュリティ" +msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA" +msgstr "Prevent apps from leaking your sensitive data without authorisation." + +msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA" +msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts." + +msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA" +msgstr "Protection mode" + +msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA" +msgstr "Basic" + +msgid "IDS_ST_SBODY_MONITOR_YOUR_MAIN_SENSITIVE_DATA_TO_PREVENT_IT_FROM_BEING_LEAKED_BY_MOST_APPS_THIS_MODE_IS_SUITABLE_FOR_REGULAR_USERS_SWA" +msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users." + +msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA" +msgstr "Advanced" + +msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA" +msgstr "Set up strict rules to prevent data leakage." + +msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA" +msgstr "This mode will affect app performance." + +msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA" +msgstr "Some apps may be blocked." + +msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA" +msgstr "Turn on Advanced protection mode" + +msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA" +msgstr "Change default rules and patterns and create your own to set up a customised protection mode." + +msgid "IDS_ST_HEADER_REPORTS_SWA" +msgstr "Reports" + +msgid "IDS_ST_MBODY_FULL_REPORTS_SWA" +msgstr "Full reports" + +msgid "IDS_ST_MBODY_APP_RANKINGS_SWA" +msgstr "App rankings" + +msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA" +msgstr "Data statistics" + +msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA" +msgstr "Rules and patterns" + +msgid "IDS_ST_NPBODY_NO_REPORTS_SWA" +msgstr "No reports" + +msgid "IDS_ST_HEADER_SETTINGS_SWA" +msgstr "Settings" + +msgid "IDS_ST_MBODY_KEEP_LOGS_SWA" +msgstr "Keep logs" + +msgid "IDS_LOGS_CLEANED" +msgstr "Logs cleaned" + +msgid "IDS_LOGS_CLEANED_FAILED" +msgstr "Failed to clean logs" + +msgid "IDS_ST_OPT_1_WEEK_SWA" +msgstr "1 week" + +msgid "IDS_ST_OPT_1_DAY_SWA" +msgstr "1 day" + +msgid "IDS_ST_OPT_1_MONTH_SWA" +msgstr "1 month" + +msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA" +msgstr "Report details" + +msgid "IDS_ST_BODY_CATEGORY_C_SWA" +msgstr "Category:" + +msgid "IDS_ST_BODY_APP_C_SWA" +msgstr "App:" + +msgid "IDS_ST_BODY_DESTINATION_C_SWA" +msgstr "Destination:" + +msgid "IDS_ST_BODY_PATTERN_C_SWA" +msgstr "Pattern:" + +msgid "IDS_ST_BODY_DLP_ACTION" +msgstr "Action" + +msgid "IDS_ST_BODY_PACKET_C_SWA" +msgstr "Packet:" + +msgid "IDS_ST_BODY_DLP_ACTION_ALLOW" +msgstr "Allow" + +msgid "IDS_ST_BODY_DLP_ACTION_DENY" +msgstr "Deny" + +msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE" +msgstr "Sanitize" + +msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES" +msgstr "All Rules" + +msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA" +msgstr "Quick" + +msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA" +msgstr "Create rules quickly and easily." + +msgid "IDS_ST_MBODY_CUSTOM_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CREATE_RULES_FROM_SCRATCH_TO_GIVE_YOU_FULL_CONTROL_OF_YOUR_DATA_PROTECTION_USE_THIS_OPTION_TO_CREATE_NON_STANDARD_RULES_SWA" +msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules." + +msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA" +msgstr "Custom protection mode" + +msgid "IDS_ST_TAB_RULES_SWA" +msgstr "Rules" + +msgid "IDS_ST_TAB_PATTERNS_SWA" +msgstr "Patterns" + +msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA" +msgstr "Select template" + +msgid "IDS_ST_HEADER_SELECT_APPS_SWA" +msgstr "Select apps" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION" +msgstr "Select Action" + +msgid "IDS_ST_ACBUTTON_NEXT_SWA" +msgstr "NEXT" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK" +msgstr "OK" + +msgid "IDS_ST_ACBUTTON_DONE_SWA" +msgstr "DONE" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE" +msgstr "Rule created." + +msgid "IDS_ST_TPOP_RULE_DELETED_SWA" +msgstr "Rule deleted." + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE" +msgstr "Delete Rule" + +msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA" +msgstr "Delete patterns" + +msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA" +msgstr "This rule will be deleted." + +msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA" +msgstr "Create pattern" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN" +msgstr "Custom" + +msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA" +msgstr "%d patterns deleted." + +msgid "IDS_ST_OPT_EDIT_SWA" +msgstr "Edit" + +msgid "IDS_ST_OPT_CREATE_SWA" +msgstr "Create" + +msgid "IDS_ST_OPT_ALL_PATTERNS_SWA" +msgstr "All patterns" + +msgid "IDS_ST_BODY_NAME_SWA" +msgstr "Name" + +msgid "IDS_ST_BODY_DESCRIPTION_SWA" +msgstr "Description" + +msgid "IDS_ST_BODY_CATEGORY_SWA" +msgstr "Category" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME" +msgstr "Category name" + +msgid "IDS_ST_OPT_STRING_MATCH_SWA" +msgstr "String match" + +msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA" +msgstr "Regular expression" + +msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d patterns will be deleted." + +msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA" +msgstr "This report will be deleted." + +msgid "IDS_ST_OPT_DELETE_SWA" +msgstr "Delete" + +msgid "IDS_ST_HEADER_DELETE_REPORT_SWA" +msgstr "Delete report" + +msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d reports will be deleted." + +msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA" +msgstr "1 report deleted." + +msgid "IDS_ST_MBODY_SELECT_ALL_SWA" +msgstr "Select all" + +msgid "IDS_ST_ACBUTTON_DELETE_SWA" +msgstr "DELETE" + +msgid "IDS_ST_ACBUTTON_CANCEL_SWA" +msgstr "CANCEL" + +msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA" +msgstr "%d reports deleted." + +msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA" +msgstr "Select items" + +msgid "IDS_ST_HEADER_PD_SELECTED_SWA" +msgstr "%d selected" + +msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Basic protection mode turned on." + +msgid "IDS_ST_TPOP_RULE_CREATED_SWA" +msgstr "Rule created. Custom protection mode turned on." + +msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Advanced protection mode turned on." + +msgid "IDS_ST_HEADER_DETAILS_SWA" +msgstr "Details" + +msgid "IDS_ST_BODY_STRING_TYPE_SWA" +msgstr "String type" + +msgid "IDS_ST_BODY_SEARCH_TERM_SWA" +msgstr "Search term" + +msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA" +msgstr "Leaks captured" + +msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA" +msgstr "Total leaks" + +msgid "IDS_ST_HEADER_RULE_DETAILS_SWA" +msgstr "Rule details" + +msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA" +msgstr "Pattern details" @@ -31,3 +31,272 @@ msgstr "%d-ჯერ" msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB" msgstr "კონფიდენციალურ., დაცვა" +msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA" +msgstr "Prevent apps from leaking your sensitive data without authorisation." + +msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA" +msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts." + +msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA" +msgstr "Protection mode" + +msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA" +msgstr "Basic" + +msgid "IDS_ST_SBODY_MONITOR_YOUR_MAIN_SENSITIVE_DATA_TO_PREVENT_IT_FROM_BEING_LEAKED_BY_MOST_APPS_THIS_MODE_IS_SUITABLE_FOR_REGULAR_USERS_SWA" +msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users." + +msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA" +msgstr "Advanced" + +msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA" +msgstr "Set up strict rules to prevent data leakage." + +msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA" +msgstr "This mode will affect app performance." + +msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA" +msgstr "Some apps may be blocked." + +msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA" +msgstr "Turn on Advanced protection mode" + +msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA" +msgstr "Change default rules and patterns and create your own to set up a customised protection mode." + +msgid "IDS_ST_HEADER_REPORTS_SWA" +msgstr "Reports" + +msgid "IDS_ST_MBODY_FULL_REPORTS_SWA" +msgstr "Full reports" + +msgid "IDS_ST_MBODY_APP_RANKINGS_SWA" +msgstr "App rankings" + +msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA" +msgstr "Data statistics" + +msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA" +msgstr "Rules and patterns" + +msgid "IDS_ST_NPBODY_NO_REPORTS_SWA" +msgstr "No reports" + +msgid "IDS_ST_HEADER_SETTINGS_SWA" +msgstr "Settings" + +msgid "IDS_ST_MBODY_KEEP_LOGS_SWA" +msgstr "Keep logs" + +msgid "IDS_LOGS_CLEANED" +msgstr "Logs cleaned" + +msgid "IDS_LOGS_CLEANED_FAILED" +msgstr "Failed to clean logs" + +msgid "IDS_ST_OPT_1_WEEK_SWA" +msgstr "1 week" + +msgid "IDS_ST_OPT_1_DAY_SWA" +msgstr "1 day" + +msgid "IDS_ST_OPT_1_MONTH_SWA" +msgstr "1 month" + +msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA" +msgstr "Report details" + +msgid "IDS_ST_BODY_CATEGORY_C_SWA" +msgstr "Category:" + +msgid "IDS_ST_BODY_APP_C_SWA" +msgstr "App:" + +msgid "IDS_ST_BODY_DESTINATION_C_SWA" +msgstr "Destination:" + +msgid "IDS_ST_BODY_PATTERN_C_SWA" +msgstr "Pattern:" + +msgid "IDS_ST_BODY_DLP_ACTION" +msgstr "Action" + +msgid "IDS_ST_BODY_PACKET_C_SWA" +msgstr "Packet:" + +msgid "IDS_ST_BODY_DLP_ACTION_ALLOW" +msgstr "Allow" + +msgid "IDS_ST_BODY_DLP_ACTION_DENY" +msgstr "Deny" + +msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE" +msgstr "Sanitize" + +msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES" +msgstr "All Rules" + +msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA" +msgstr "Quick" + +msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA" +msgstr "Create rules quickly and easily." + +msgid "IDS_ST_MBODY_CUSTOM_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CREATE_RULES_FROM_SCRATCH_TO_GIVE_YOU_FULL_CONTROL_OF_YOUR_DATA_PROTECTION_USE_THIS_OPTION_TO_CREATE_NON_STANDARD_RULES_SWA" +msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules." + +msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA" +msgstr "Custom protection mode" + +msgid "IDS_ST_TAB_RULES_SWA" +msgstr "Rules" + +msgid "IDS_ST_TAB_PATTERNS_SWA" +msgstr "Patterns" + +msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA" +msgstr "Select template" + +msgid "IDS_ST_HEADER_SELECT_APPS_SWA" +msgstr "Select apps" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION" +msgstr "Select Action" + +msgid "IDS_ST_ACBUTTON_NEXT_SWA" +msgstr "NEXT" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK" +msgstr "OK" + +msgid "IDS_ST_ACBUTTON_DONE_SWA" +msgstr "DONE" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE" +msgstr "Rule created." + +msgid "IDS_ST_TPOP_RULE_DELETED_SWA" +msgstr "Rule deleted." + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE" +msgstr "Delete Rule" + +msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA" +msgstr "Delete patterns" + +msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA" +msgstr "This rule will be deleted." + +msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA" +msgstr "Create pattern" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN" +msgstr "Custom" + +msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA" +msgstr "%d patterns deleted." + +msgid "IDS_ST_OPT_EDIT_SWA" +msgstr "Edit" + +msgid "IDS_ST_OPT_CREATE_SWA" +msgstr "Create" + +msgid "IDS_ST_OPT_ALL_PATTERNS_SWA" +msgstr "All patterns" + +msgid "IDS_ST_BODY_NAME_SWA" +msgstr "Name" + +msgid "IDS_ST_BODY_DESCRIPTION_SWA" +msgstr "Description" + +msgid "IDS_ST_BODY_CATEGORY_SWA" +msgstr "Category" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME" +msgstr "Category name" + +msgid "IDS_ST_OPT_STRING_MATCH_SWA" +msgstr "String match" + +msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA" +msgstr "Regular expression" + +msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d patterns will be deleted." + +msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA" +msgstr "This report will be deleted." + +msgid "IDS_ST_OPT_DELETE_SWA" +msgstr "Delete" + +msgid "IDS_ST_HEADER_DELETE_REPORT_SWA" +msgstr "Delete report" + +msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d reports will be deleted." + +msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA" +msgstr "1 report deleted." + +msgid "IDS_ST_MBODY_SELECT_ALL_SWA" +msgstr "Select all" + +msgid "IDS_ST_ACBUTTON_DELETE_SWA" +msgstr "DELETE" + +msgid "IDS_ST_ACBUTTON_CANCEL_SWA" +msgstr "CANCEL" + +msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA" +msgstr "%d reports deleted." + +msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA" +msgstr "Select items" + +msgid "IDS_ST_HEADER_PD_SELECTED_SWA" +msgstr "%d selected" + +msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Basic protection mode turned on." + +msgid "IDS_ST_TPOP_RULE_CREATED_SWA" +msgstr "Rule created. Custom protection mode turned on." + +msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Advanced protection mode turned on." + +msgid "IDS_ST_HEADER_DETAILS_SWA" +msgstr "Details" + +msgid "IDS_ST_BODY_STRING_TYPE_SWA" +msgstr "String type" + +msgid "IDS_ST_BODY_SEARCH_TERM_SWA" +msgstr "Search term" + +msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA" +msgstr "Leaks captured" + +msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA" +msgstr "Total leaks" + +msgid "IDS_ST_HEADER_RULE_DETAILS_SWA" +msgstr "Rule details" + +msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA" +msgstr "Pattern details" @@ -31,3 +31,272 @@ msgstr "%d уақыты" msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB" msgstr "Құпиялылық-қауіпсіздік" +msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA" +msgstr "Prevent apps from leaking your sensitive data without authorisation." + +msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA" +msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts." + +msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA" +msgstr "Protection mode" + +msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA" +msgstr "Basic" + +msgid "IDS_ST_SBODY_MONITOR_YOUR_MAIN_SENSITIVE_DATA_TO_PREVENT_IT_FROM_BEING_LEAKED_BY_MOST_APPS_THIS_MODE_IS_SUITABLE_FOR_REGULAR_USERS_SWA" +msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users." + +msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA" +msgstr "Advanced" + +msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA" +msgstr "Set up strict rules to prevent data leakage." + +msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA" +msgstr "This mode will affect app performance." + +msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA" +msgstr "Some apps may be blocked." + +msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA" +msgstr "Turn on Advanced protection mode" + +msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA" +msgstr "Change default rules and patterns and create your own to set up a customised protection mode." + +msgid "IDS_ST_HEADER_REPORTS_SWA" +msgstr "Reports" + +msgid "IDS_ST_MBODY_FULL_REPORTS_SWA" +msgstr "Full reports" + +msgid "IDS_ST_MBODY_APP_RANKINGS_SWA" +msgstr "App rankings" + +msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA" +msgstr "Data statistics" + +msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA" +msgstr "Rules and patterns" + +msgid "IDS_ST_NPBODY_NO_REPORTS_SWA" +msgstr "No reports" + +msgid "IDS_ST_HEADER_SETTINGS_SWA" +msgstr "Settings" + +msgid "IDS_ST_MBODY_KEEP_LOGS_SWA" +msgstr "Keep logs" + +msgid "IDS_LOGS_CLEANED" +msgstr "Logs cleaned" + +msgid "IDS_LOGS_CLEANED_FAILED" +msgstr "Failed to clean logs" + +msgid "IDS_ST_OPT_1_WEEK_SWA" +msgstr "1 week" + +msgid "IDS_ST_OPT_1_DAY_SWA" +msgstr "1 day" + +msgid "IDS_ST_OPT_1_MONTH_SWA" +msgstr "1 month" + +msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA" +msgstr "Report details" + +msgid "IDS_ST_BODY_CATEGORY_C_SWA" +msgstr "Category:" + +msgid "IDS_ST_BODY_APP_C_SWA" +msgstr "App:" + +msgid "IDS_ST_BODY_DESTINATION_C_SWA" +msgstr "Destination:" + +msgid "IDS_ST_BODY_PATTERN_C_SWA" +msgstr "Pattern:" + +msgid "IDS_ST_BODY_DLP_ACTION" +msgstr "Action" + +msgid "IDS_ST_BODY_PACKET_C_SWA" +msgstr "Packet:" + +msgid "IDS_ST_BODY_DLP_ACTION_ALLOW" +msgstr "Allow" + +msgid "IDS_ST_BODY_DLP_ACTION_DENY" +msgstr "Deny" + +msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE" +msgstr "Sanitize" + +msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES" +msgstr "All Rules" + +msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA" +msgstr "Quick" + +msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA" +msgstr "Create rules quickly and easily." + +msgid "IDS_ST_MBODY_CUSTOM_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CREATE_RULES_FROM_SCRATCH_TO_GIVE_YOU_FULL_CONTROL_OF_YOUR_DATA_PROTECTION_USE_THIS_OPTION_TO_CREATE_NON_STANDARD_RULES_SWA" +msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules." + +msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA" +msgstr "Custom protection mode" + +msgid "IDS_ST_TAB_RULES_SWA" +msgstr "Rules" + +msgid "IDS_ST_TAB_PATTERNS_SWA" +msgstr "Patterns" + +msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA" +msgstr "Select template" + +msgid "IDS_ST_HEADER_SELECT_APPS_SWA" +msgstr "Select apps" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION" +msgstr "Select Action" + +msgid "IDS_ST_ACBUTTON_NEXT_SWA" +msgstr "NEXT" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK" +msgstr "OK" + +msgid "IDS_ST_ACBUTTON_DONE_SWA" +msgstr "DONE" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE" +msgstr "Rule created." + +msgid "IDS_ST_TPOP_RULE_DELETED_SWA" +msgstr "Rule deleted." + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE" +msgstr "Delete Rule" + +msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA" +msgstr "Delete patterns" + +msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA" +msgstr "This rule will be deleted." + +msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA" +msgstr "Create pattern" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN" +msgstr "Custom" + +msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA" +msgstr "%d patterns deleted." + +msgid "IDS_ST_OPT_EDIT_SWA" +msgstr "Edit" + +msgid "IDS_ST_OPT_CREATE_SWA" +msgstr "Create" + +msgid "IDS_ST_OPT_ALL_PATTERNS_SWA" +msgstr "All patterns" + +msgid "IDS_ST_BODY_NAME_SWA" +msgstr "Name" + +msgid "IDS_ST_BODY_DESCRIPTION_SWA" +msgstr "Description" + +msgid "IDS_ST_BODY_CATEGORY_SWA" +msgstr "Category" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME" +msgstr "Category name" + +msgid "IDS_ST_OPT_STRING_MATCH_SWA" +msgstr "String match" + +msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA" +msgstr "Regular expression" + +msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d patterns will be deleted." + +msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA" +msgstr "This report will be deleted." + +msgid "IDS_ST_OPT_DELETE_SWA" +msgstr "Delete" + +msgid "IDS_ST_HEADER_DELETE_REPORT_SWA" +msgstr "Delete report" + +msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d reports will be deleted." + +msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA" +msgstr "1 report deleted." + +msgid "IDS_ST_MBODY_SELECT_ALL_SWA" +msgstr "Select all" + +msgid "IDS_ST_ACBUTTON_DELETE_SWA" +msgstr "DELETE" + +msgid "IDS_ST_ACBUTTON_CANCEL_SWA" +msgstr "CANCEL" + +msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA" +msgstr "%d reports deleted." + +msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA" +msgstr "Select items" + +msgid "IDS_ST_HEADER_PD_SELECTED_SWA" +msgstr "%d selected" + +msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Basic protection mode turned on." + +msgid "IDS_ST_TPOP_RULE_CREATED_SWA" +msgstr "Rule created. Custom protection mode turned on." + +msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Advanced protection mode turned on." + +msgid "IDS_ST_HEADER_DETAILS_SWA" +msgstr "Details" + +msgid "IDS_ST_BODY_STRING_TYPE_SWA" +msgstr "String type" + +msgid "IDS_ST_BODY_SEARCH_TERM_SWA" +msgstr "Search term" + +msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA" +msgstr "Leaks captured" + +msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA" +msgstr "Total leaks" + +msgid "IDS_ST_HEADER_RULE_DETAILS_SWA" +msgstr "Rule details" + +msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA" +msgstr "Pattern details" diff --git a/po/ko_KR.po b/po/ko_KR.po index a79d62b..6ab9fe2 100755 --- a/po/ko_KR.po +++ b/po/ko_KR.po @@ -31,3 +31,272 @@ msgstr "%d회" msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB" msgstr "개인정보 보호 및 보안" +msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA" +msgstr "Prevent apps from leaking your sensitive data without authorisation." + +msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA" +msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts." + +msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA" +msgstr "Protection mode" + +msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA" +msgstr "Basic" + +msgid "IDS_ST_SBODY_MONITOR_YOUR_MAIN_SENSITIVE_DATA_TO_PREVENT_IT_FROM_BEING_LEAKED_BY_MOST_APPS_THIS_MODE_IS_SUITABLE_FOR_REGULAR_USERS_SWA" +msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users." + +msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA" +msgstr "Advanced" + +msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA" +msgstr "Set up strict rules to prevent data leakage." + +msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA" +msgstr "This mode will affect app performance." + +msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA" +msgstr "Some apps may be blocked." + +msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA" +msgstr "Turn on Advanced protection mode" + +msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA" +msgstr "Change default rules and patterns and create your own to set up a customised protection mode." + +msgid "IDS_ST_HEADER_REPORTS_SWA" +msgstr "Reports" + +msgid "IDS_ST_MBODY_FULL_REPORTS_SWA" +msgstr "Full reports" + +msgid "IDS_ST_MBODY_APP_RANKINGS_SWA" +msgstr "App rankings" + +msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA" +msgstr "Data statistics" + +msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA" +msgstr "Rules and patterns" + +msgid "IDS_ST_NPBODY_NO_REPORTS_SWA" +msgstr "No reports" + +msgid "IDS_ST_HEADER_SETTINGS_SWA" +msgstr "Settings" + +msgid "IDS_ST_MBODY_KEEP_LOGS_SWA" +msgstr "Keep logs" + +msgid "IDS_LOGS_CLEANED" +msgstr "Logs cleaned" + +msgid "IDS_LOGS_CLEANED_FAILED" +msgstr "Failed to clean logs" + +msgid "IDS_ST_OPT_1_WEEK_SWA" +msgstr "1 week" + +msgid "IDS_ST_OPT_1_DAY_SWA" +msgstr "1 day" + +msgid "IDS_ST_OPT_1_MONTH_SWA" +msgstr "1 month" + +msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA" +msgstr "Report details" + +msgid "IDS_ST_BODY_CATEGORY_C_SWA" +msgstr "Category:" + +msgid "IDS_ST_BODY_APP_C_SWA" +msgstr "App:" + +msgid "IDS_ST_BODY_DESTINATION_C_SWA" +msgstr "Destination:" + +msgid "IDS_ST_BODY_PATTERN_C_SWA" +msgstr "Pattern:" + +msgid "IDS_ST_BODY_DLP_ACTION" +msgstr "Action" + +msgid "IDS_ST_BODY_PACKET_C_SWA" +msgstr "Packet:" + +msgid "IDS_ST_BODY_DLP_ACTION_ALLOW" +msgstr "Allow" + +msgid "IDS_ST_BODY_DLP_ACTION_DENY" +msgstr "Deny" + +msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE" +msgstr "Sanitize" + +msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES" +msgstr "All Rules" + +msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA" +msgstr "Quick" + +msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA" +msgstr "Create rules quickly and easily." + +msgid "IDS_ST_MBODY_CUSTOM_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CREATE_RULES_FROM_SCRATCH_TO_GIVE_YOU_FULL_CONTROL_OF_YOUR_DATA_PROTECTION_USE_THIS_OPTION_TO_CREATE_NON_STANDARD_RULES_SWA" +msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules." + +msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA" +msgstr "Custom protection mode" + +msgid "IDS_ST_TAB_RULES_SWA" +msgstr "Rules" + +msgid "IDS_ST_TAB_PATTERNS_SWA" +msgstr "Patterns" + +msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA" +msgstr "Select template" + +msgid "IDS_ST_HEADER_SELECT_APPS_SWA" +msgstr "Select apps" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION" +msgstr "Select Action" + +msgid "IDS_ST_ACBUTTON_NEXT_SWA" +msgstr "NEXT" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK" +msgstr "OK" + +msgid "IDS_ST_ACBUTTON_DONE_SWA" +msgstr "DONE" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE" +msgstr "Rule created." + +msgid "IDS_ST_TPOP_RULE_DELETED_SWA" +msgstr "Rule deleted." + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE" +msgstr "Delete Rule" + +msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA" +msgstr "Delete patterns" + +msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA" +msgstr "This rule will be deleted." + +msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA" +msgstr "Create pattern" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN" +msgstr "Custom" + +msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA" +msgstr "%d patterns deleted." + +msgid "IDS_ST_OPT_EDIT_SWA" +msgstr "Edit" + +msgid "IDS_ST_OPT_CREATE_SWA" +msgstr "Create" + +msgid "IDS_ST_OPT_ALL_PATTERNS_SWA" +msgstr "All patterns" + +msgid "IDS_ST_BODY_NAME_SWA" +msgstr "Name" + +msgid "IDS_ST_BODY_DESCRIPTION_SWA" +msgstr "Description" + +msgid "IDS_ST_BODY_CATEGORY_SWA" +msgstr "Category" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME" +msgstr "Category name" + +msgid "IDS_ST_OPT_STRING_MATCH_SWA" +msgstr "String match" + +msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA" +msgstr "Regular expression" + +msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d patterns will be deleted." + +msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA" +msgstr "This report will be deleted." + +msgid "IDS_ST_OPT_DELETE_SWA" +msgstr "Delete" + +msgid "IDS_ST_HEADER_DELETE_REPORT_SWA" +msgstr "Delete report" + +msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d reports will be deleted." + +msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA" +msgstr "1 report deleted." + +msgid "IDS_ST_MBODY_SELECT_ALL_SWA" +msgstr "Select all" + +msgid "IDS_ST_ACBUTTON_DELETE_SWA" +msgstr "DELETE" + +msgid "IDS_ST_ACBUTTON_CANCEL_SWA" +msgstr "CANCEL" + +msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA" +msgstr "%d reports deleted." + +msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA" +msgstr "Select items" + +msgid "IDS_ST_HEADER_PD_SELECTED_SWA" +msgstr "%d selected" + +msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Basic protection mode turned on." + +msgid "IDS_ST_TPOP_RULE_CREATED_SWA" +msgstr "Rule created. Custom protection mode turned on." + +msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Advanced protection mode turned on." + +msgid "IDS_ST_HEADER_DETAILS_SWA" +msgstr "Details" + +msgid "IDS_ST_BODY_STRING_TYPE_SWA" +msgstr "String type" + +msgid "IDS_ST_BODY_SEARCH_TERM_SWA" +msgstr "Search term" + +msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA" +msgstr "Leaks captured" + +msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA" +msgstr "Total leaks" + +msgid "IDS_ST_HEADER_RULE_DETAILS_SWA" +msgstr "Rule details" + +msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA" +msgstr "Pattern details" @@ -31,3 +31,272 @@ msgstr "%d kartų" msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB" msgstr "Privatumas ir sauga" +msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA" +msgstr "Prevent apps from leaking your sensitive data without authorisation." + +msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA" +msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts." + +msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA" +msgstr "Protection mode" + +msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA" +msgstr "Basic" + +msgid "IDS_ST_SBODY_MONITOR_YOUR_MAIN_SENSITIVE_DATA_TO_PREVENT_IT_FROM_BEING_LEAKED_BY_MOST_APPS_THIS_MODE_IS_SUITABLE_FOR_REGULAR_USERS_SWA" +msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users." + +msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA" +msgstr "Advanced" + +msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA" +msgstr "Set up strict rules to prevent data leakage." + +msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA" +msgstr "This mode will affect app performance." + +msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA" +msgstr "Some apps may be blocked." + +msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA" +msgstr "Turn on Advanced protection mode" + +msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA" +msgstr "Change default rules and patterns and create your own to set up a customised protection mode." + +msgid "IDS_ST_HEADER_REPORTS_SWA" +msgstr "Reports" + +msgid "IDS_ST_MBODY_FULL_REPORTS_SWA" +msgstr "Full reports" + +msgid "IDS_ST_MBODY_APP_RANKINGS_SWA" +msgstr "App rankings" + +msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA" +msgstr "Data statistics" + +msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA" +msgstr "Rules and patterns" + +msgid "IDS_ST_NPBODY_NO_REPORTS_SWA" +msgstr "No reports" + +msgid "IDS_ST_HEADER_SETTINGS_SWA" +msgstr "Settings" + +msgid "IDS_ST_MBODY_KEEP_LOGS_SWA" +msgstr "Keep logs" + +msgid "IDS_LOGS_CLEANED" +msgstr "Logs cleaned" + +msgid "IDS_LOGS_CLEANED_FAILED" +msgstr "Failed to clean logs" + +msgid "IDS_ST_OPT_1_WEEK_SWA" +msgstr "1 week" + +msgid "IDS_ST_OPT_1_DAY_SWA" +msgstr "1 day" + +msgid "IDS_ST_OPT_1_MONTH_SWA" +msgstr "1 month" + +msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA" +msgstr "Report details" + +msgid "IDS_ST_BODY_CATEGORY_C_SWA" +msgstr "Category:" + +msgid "IDS_ST_BODY_APP_C_SWA" +msgstr "App:" + +msgid "IDS_ST_BODY_DESTINATION_C_SWA" +msgstr "Destination:" + +msgid "IDS_ST_BODY_PATTERN_C_SWA" +msgstr "Pattern:" + +msgid "IDS_ST_BODY_DLP_ACTION" +msgstr "Action" + +msgid "IDS_ST_BODY_PACKET_C_SWA" +msgstr "Packet:" + +msgid "IDS_ST_BODY_DLP_ACTION_ALLOW" +msgstr "Allow" + +msgid "IDS_ST_BODY_DLP_ACTION_DENY" +msgstr "Deny" + +msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE" +msgstr "Sanitize" + +msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES" +msgstr "All Rules" + +msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA" +msgstr "Quick" + +msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA" +msgstr "Create rules quickly and easily." + +msgid "IDS_ST_MBODY_CUSTOM_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CREATE_RULES_FROM_SCRATCH_TO_GIVE_YOU_FULL_CONTROL_OF_YOUR_DATA_PROTECTION_USE_THIS_OPTION_TO_CREATE_NON_STANDARD_RULES_SWA" +msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules." + +msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA" +msgstr "Custom protection mode" + +msgid "IDS_ST_TAB_RULES_SWA" +msgstr "Rules" + +msgid "IDS_ST_TAB_PATTERNS_SWA" +msgstr "Patterns" + +msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA" +msgstr "Select template" + +msgid "IDS_ST_HEADER_SELECT_APPS_SWA" +msgstr "Select apps" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION" +msgstr "Select Action" + +msgid "IDS_ST_ACBUTTON_NEXT_SWA" +msgstr "NEXT" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK" +msgstr "OK" + +msgid "IDS_ST_ACBUTTON_DONE_SWA" +msgstr "DONE" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE" +msgstr "Rule created." + +msgid "IDS_ST_TPOP_RULE_DELETED_SWA" +msgstr "Rule deleted." + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE" +msgstr "Delete Rule" + +msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA" +msgstr "Delete patterns" + +msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA" +msgstr "This rule will be deleted." + +msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA" +msgstr "Create pattern" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN" +msgstr "Custom" + +msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA" +msgstr "%d patterns deleted." + +msgid "IDS_ST_OPT_EDIT_SWA" +msgstr "Edit" + +msgid "IDS_ST_OPT_CREATE_SWA" +msgstr "Create" + +msgid "IDS_ST_OPT_ALL_PATTERNS_SWA" +msgstr "All patterns" + +msgid "IDS_ST_BODY_NAME_SWA" +msgstr "Name" + +msgid "IDS_ST_BODY_DESCRIPTION_SWA" +msgstr "Description" + +msgid "IDS_ST_BODY_CATEGORY_SWA" +msgstr "Category" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME" +msgstr "Category name" + +msgid "IDS_ST_OPT_STRING_MATCH_SWA" +msgstr "String match" + +msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA" +msgstr "Regular expression" + +msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d patterns will be deleted." + +msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA" +msgstr "This report will be deleted." + +msgid "IDS_ST_OPT_DELETE_SWA" +msgstr "Delete" + +msgid "IDS_ST_HEADER_DELETE_REPORT_SWA" +msgstr "Delete report" + +msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d reports will be deleted." + +msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA" +msgstr "1 report deleted." + +msgid "IDS_ST_MBODY_SELECT_ALL_SWA" +msgstr "Select all" + +msgid "IDS_ST_ACBUTTON_DELETE_SWA" +msgstr "DELETE" + +msgid "IDS_ST_ACBUTTON_CANCEL_SWA" +msgstr "CANCEL" + +msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA" +msgstr "%d reports deleted." + +msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA" +msgstr "Select items" + +msgid "IDS_ST_HEADER_PD_SELECTED_SWA" +msgstr "%d selected" + +msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Basic protection mode turned on." + +msgid "IDS_ST_TPOP_RULE_CREATED_SWA" +msgstr "Rule created. Custom protection mode turned on." + +msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Advanced protection mode turned on." + +msgid "IDS_ST_HEADER_DETAILS_SWA" +msgstr "Details" + +msgid "IDS_ST_BODY_STRING_TYPE_SWA" +msgstr "String type" + +msgid "IDS_ST_BODY_SEARCH_TERM_SWA" +msgstr "Search term" + +msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA" +msgstr "Leaks captured" + +msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA" +msgstr "Total leaks" + +msgid "IDS_ST_HEADER_RULE_DETAILS_SWA" +msgstr "Rule details" + +msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA" +msgstr "Pattern details" @@ -31,3 +31,272 @@ msgstr "%d reizes" msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB" msgstr "Konfidenc. un drošība" +msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA" +msgstr "Prevent apps from leaking your sensitive data without authorisation." + +msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA" +msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts." + +msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA" +msgstr "Protection mode" + +msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA" +msgstr "Basic" + +msgid "IDS_ST_SBODY_MONITOR_YOUR_MAIN_SENSITIVE_DATA_TO_PREVENT_IT_FROM_BEING_LEAKED_BY_MOST_APPS_THIS_MODE_IS_SUITABLE_FOR_REGULAR_USERS_SWA" +msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users." + +msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA" +msgstr "Advanced" + +msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA" +msgstr "Set up strict rules to prevent data leakage." + +msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA" +msgstr "This mode will affect app performance." + +msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA" +msgstr "Some apps may be blocked." + +msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA" +msgstr "Turn on Advanced protection mode" + +msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA" +msgstr "Change default rules and patterns and create your own to set up a customised protection mode." + +msgid "IDS_ST_HEADER_REPORTS_SWA" +msgstr "Reports" + +msgid "IDS_ST_MBODY_FULL_REPORTS_SWA" +msgstr "Full reports" + +msgid "IDS_ST_MBODY_APP_RANKINGS_SWA" +msgstr "App rankings" + +msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA" +msgstr "Data statistics" + +msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA" +msgstr "Rules and patterns" + +msgid "IDS_ST_NPBODY_NO_REPORTS_SWA" +msgstr "No reports" + +msgid "IDS_ST_HEADER_SETTINGS_SWA" +msgstr "Settings" + +msgid "IDS_ST_MBODY_KEEP_LOGS_SWA" +msgstr "Keep logs" + +msgid "IDS_LOGS_CLEANED" +msgstr "Logs cleaned" + +msgid "IDS_LOGS_CLEANED_FAILED" +msgstr "Failed to clean logs" + +msgid "IDS_ST_OPT_1_WEEK_SWA" +msgstr "1 week" + +msgid "IDS_ST_OPT_1_DAY_SWA" +msgstr "1 day" + +msgid "IDS_ST_OPT_1_MONTH_SWA" +msgstr "1 month" + +msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA" +msgstr "Report details" + +msgid "IDS_ST_BODY_CATEGORY_C_SWA" +msgstr "Category:" + +msgid "IDS_ST_BODY_APP_C_SWA" +msgstr "App:" + +msgid "IDS_ST_BODY_DESTINATION_C_SWA" +msgstr "Destination:" + +msgid "IDS_ST_BODY_PATTERN_C_SWA" +msgstr "Pattern:" + +msgid "IDS_ST_BODY_DLP_ACTION" +msgstr "Action" + +msgid "IDS_ST_BODY_PACKET_C_SWA" +msgstr "Packet:" + +msgid "IDS_ST_BODY_DLP_ACTION_ALLOW" +msgstr "Allow" + +msgid "IDS_ST_BODY_DLP_ACTION_DENY" +msgstr "Deny" + +msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE" +msgstr "Sanitize" + +msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES" +msgstr "All Rules" + +msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA" +msgstr "Quick" + +msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA" +msgstr "Create rules quickly and easily." + +msgid "IDS_ST_MBODY_CUSTOM_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CREATE_RULES_FROM_SCRATCH_TO_GIVE_YOU_FULL_CONTROL_OF_YOUR_DATA_PROTECTION_USE_THIS_OPTION_TO_CREATE_NON_STANDARD_RULES_SWA" +msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules." + +msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA" +msgstr "Custom protection mode" + +msgid "IDS_ST_TAB_RULES_SWA" +msgstr "Rules" + +msgid "IDS_ST_TAB_PATTERNS_SWA" +msgstr "Patterns" + +msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA" +msgstr "Select template" + +msgid "IDS_ST_HEADER_SELECT_APPS_SWA" +msgstr "Select apps" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION" +msgstr "Select Action" + +msgid "IDS_ST_ACBUTTON_NEXT_SWA" +msgstr "NEXT" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK" +msgstr "OK" + +msgid "IDS_ST_ACBUTTON_DONE_SWA" +msgstr "DONE" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE" +msgstr "Rule created." + +msgid "IDS_ST_TPOP_RULE_DELETED_SWA" +msgstr "Rule deleted." + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE" +msgstr "Delete Rule" + +msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA" +msgstr "Delete patterns" + +msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA" +msgstr "This rule will be deleted." + +msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA" +msgstr "Create pattern" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN" +msgstr "Custom" + +msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA" +msgstr "%d patterns deleted." + +msgid "IDS_ST_OPT_EDIT_SWA" +msgstr "Edit" + +msgid "IDS_ST_OPT_CREATE_SWA" +msgstr "Create" + +msgid "IDS_ST_OPT_ALL_PATTERNS_SWA" +msgstr "All patterns" + +msgid "IDS_ST_BODY_NAME_SWA" +msgstr "Name" + +msgid "IDS_ST_BODY_DESCRIPTION_SWA" +msgstr "Description" + +msgid "IDS_ST_BODY_CATEGORY_SWA" +msgstr "Category" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME" +msgstr "Category name" + +msgid "IDS_ST_OPT_STRING_MATCH_SWA" +msgstr "String match" + +msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA" +msgstr "Regular expression" + +msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d patterns will be deleted." + +msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA" +msgstr "This report will be deleted." + +msgid "IDS_ST_OPT_DELETE_SWA" +msgstr "Delete" + +msgid "IDS_ST_HEADER_DELETE_REPORT_SWA" +msgstr "Delete report" + +msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d reports will be deleted." + +msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA" +msgstr "1 report deleted." + +msgid "IDS_ST_MBODY_SELECT_ALL_SWA" +msgstr "Select all" + +msgid "IDS_ST_ACBUTTON_DELETE_SWA" +msgstr "DELETE" + +msgid "IDS_ST_ACBUTTON_CANCEL_SWA" +msgstr "CANCEL" + +msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA" +msgstr "%d reports deleted." + +msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA" +msgstr "Select items" + +msgid "IDS_ST_HEADER_PD_SELECTED_SWA" +msgstr "%d selected" + +msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Basic protection mode turned on." + +msgid "IDS_ST_TPOP_RULE_CREATED_SWA" +msgstr "Rule created. Custom protection mode turned on." + +msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Advanced protection mode turned on." + +msgid "IDS_ST_HEADER_DETAILS_SWA" +msgstr "Details" + +msgid "IDS_ST_BODY_STRING_TYPE_SWA" +msgstr "String type" + +msgid "IDS_ST_BODY_SEARCH_TERM_SWA" +msgstr "Search term" + +msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA" +msgstr "Leaks captured" + +msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA" +msgstr "Total leaks" + +msgid "IDS_ST_HEADER_RULE_DETAILS_SWA" +msgstr "Rule details" + +msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA" +msgstr "Pattern details" @@ -31,3 +31,272 @@ msgstr "%d пати" msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB" msgstr "Приват. и безбедност" +msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA" +msgstr "Prevent apps from leaking your sensitive data without authorisation." + +msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA" +msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts." + +msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA" +msgstr "Protection mode" + +msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA" +msgstr "Basic" + +msgid "IDS_ST_SBODY_MONITOR_YOUR_MAIN_SENSITIVE_DATA_TO_PREVENT_IT_FROM_BEING_LEAKED_BY_MOST_APPS_THIS_MODE_IS_SUITABLE_FOR_REGULAR_USERS_SWA" +msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users." + +msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA" +msgstr "Advanced" + +msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA" +msgstr "Set up strict rules to prevent data leakage." + +msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA" +msgstr "This mode will affect app performance." + +msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA" +msgstr "Some apps may be blocked." + +msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA" +msgstr "Turn on Advanced protection mode" + +msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA" +msgstr "Change default rules and patterns and create your own to set up a customised protection mode." + +msgid "IDS_ST_HEADER_REPORTS_SWA" +msgstr "Reports" + +msgid "IDS_ST_MBODY_FULL_REPORTS_SWA" +msgstr "Full reports" + +msgid "IDS_ST_MBODY_APP_RANKINGS_SWA" +msgstr "App rankings" + +msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA" +msgstr "Data statistics" + +msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA" +msgstr "Rules and patterns" + +msgid "IDS_ST_NPBODY_NO_REPORTS_SWA" +msgstr "No reports" + +msgid "IDS_ST_HEADER_SETTINGS_SWA" +msgstr "Settings" + +msgid "IDS_ST_MBODY_KEEP_LOGS_SWA" +msgstr "Keep logs" + +msgid "IDS_LOGS_CLEANED" +msgstr "Logs cleaned" + +msgid "IDS_LOGS_CLEANED_FAILED" +msgstr "Failed to clean logs" + +msgid "IDS_ST_OPT_1_WEEK_SWA" +msgstr "1 week" + +msgid "IDS_ST_OPT_1_DAY_SWA" +msgstr "1 day" + +msgid "IDS_ST_OPT_1_MONTH_SWA" +msgstr "1 month" + +msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA" +msgstr "Report details" + +msgid "IDS_ST_BODY_CATEGORY_C_SWA" +msgstr "Category:" + +msgid "IDS_ST_BODY_APP_C_SWA" +msgstr "App:" + +msgid "IDS_ST_BODY_DESTINATION_C_SWA" +msgstr "Destination:" + +msgid "IDS_ST_BODY_PATTERN_C_SWA" +msgstr "Pattern:" + +msgid "IDS_ST_BODY_DLP_ACTION" +msgstr "Action" + +msgid "IDS_ST_BODY_PACKET_C_SWA" +msgstr "Packet:" + +msgid "IDS_ST_BODY_DLP_ACTION_ALLOW" +msgstr "Allow" + +msgid "IDS_ST_BODY_DLP_ACTION_DENY" +msgstr "Deny" + +msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE" +msgstr "Sanitize" + +msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES" +msgstr "All Rules" + +msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA" +msgstr "Quick" + +msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA" +msgstr "Create rules quickly and easily." + +msgid "IDS_ST_MBODY_CUSTOM_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CREATE_RULES_FROM_SCRATCH_TO_GIVE_YOU_FULL_CONTROL_OF_YOUR_DATA_PROTECTION_USE_THIS_OPTION_TO_CREATE_NON_STANDARD_RULES_SWA" +msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules." + +msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA" +msgstr "Custom protection mode" + +msgid "IDS_ST_TAB_RULES_SWA" +msgstr "Rules" + +msgid "IDS_ST_TAB_PATTERNS_SWA" +msgstr "Patterns" + +msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA" +msgstr "Select template" + +msgid "IDS_ST_HEADER_SELECT_APPS_SWA" +msgstr "Select apps" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION" +msgstr "Select Action" + +msgid "IDS_ST_ACBUTTON_NEXT_SWA" +msgstr "NEXT" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK" +msgstr "OK" + +msgid "IDS_ST_ACBUTTON_DONE_SWA" +msgstr "DONE" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE" +msgstr "Rule created." + +msgid "IDS_ST_TPOP_RULE_DELETED_SWA" +msgstr "Rule deleted." + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE" +msgstr "Delete Rule" + +msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA" +msgstr "Delete patterns" + +msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA" +msgstr "This rule will be deleted." + +msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA" +msgstr "Create pattern" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN" +msgstr "Custom" + +msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA" +msgstr "%d patterns deleted." + +msgid "IDS_ST_OPT_EDIT_SWA" +msgstr "Edit" + +msgid "IDS_ST_OPT_CREATE_SWA" +msgstr "Create" + +msgid "IDS_ST_OPT_ALL_PATTERNS_SWA" +msgstr "All patterns" + +msgid "IDS_ST_BODY_NAME_SWA" +msgstr "Name" + +msgid "IDS_ST_BODY_DESCRIPTION_SWA" +msgstr "Description" + +msgid "IDS_ST_BODY_CATEGORY_SWA" +msgstr "Category" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME" +msgstr "Category name" + +msgid "IDS_ST_OPT_STRING_MATCH_SWA" +msgstr "String match" + +msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA" +msgstr "Regular expression" + +msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d patterns will be deleted." + +msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA" +msgstr "This report will be deleted." + +msgid "IDS_ST_OPT_DELETE_SWA" +msgstr "Delete" + +msgid "IDS_ST_HEADER_DELETE_REPORT_SWA" +msgstr "Delete report" + +msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d reports will be deleted." + +msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA" +msgstr "1 report deleted." + +msgid "IDS_ST_MBODY_SELECT_ALL_SWA" +msgstr "Select all" + +msgid "IDS_ST_ACBUTTON_DELETE_SWA" +msgstr "DELETE" + +msgid "IDS_ST_ACBUTTON_CANCEL_SWA" +msgstr "CANCEL" + +msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA" +msgstr "%d reports deleted." + +msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA" +msgstr "Select items" + +msgid "IDS_ST_HEADER_PD_SELECTED_SWA" +msgstr "%d selected" + +msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Basic protection mode turned on." + +msgid "IDS_ST_TPOP_RULE_CREATED_SWA" +msgstr "Rule created. Custom protection mode turned on." + +msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Advanced protection mode turned on." + +msgid "IDS_ST_HEADER_DETAILS_SWA" +msgstr "Details" + +msgid "IDS_ST_BODY_STRING_TYPE_SWA" +msgstr "String type" + +msgid "IDS_ST_BODY_SEARCH_TERM_SWA" +msgstr "Search term" + +msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA" +msgstr "Leaks captured" + +msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA" +msgstr "Total leaks" + +msgid "IDS_ST_HEADER_RULE_DETAILS_SWA" +msgstr "Rule details" + +msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA" +msgstr "Pattern details" @@ -31,3 +31,272 @@ msgstr "%d ganger" msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB" msgstr "Personv. og sikkerhet" +msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA" +msgstr "Prevent apps from leaking your sensitive data without authorisation." + +msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA" +msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts." + +msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA" +msgstr "Protection mode" + +msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA" +msgstr "Basic" + +msgid "IDS_ST_SBODY_MONITOR_YOUR_MAIN_SENSITIVE_DATA_TO_PREVENT_IT_FROM_BEING_LEAKED_BY_MOST_APPS_THIS_MODE_IS_SUITABLE_FOR_REGULAR_USERS_SWA" +msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users." + +msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA" +msgstr "Advanced" + +msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA" +msgstr "Set up strict rules to prevent data leakage." + +msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA" +msgstr "This mode will affect app performance." + +msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA" +msgstr "Some apps may be blocked." + +msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA" +msgstr "Turn on Advanced protection mode" + +msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA" +msgstr "Change default rules and patterns and create your own to set up a customised protection mode." + +msgid "IDS_ST_HEADER_REPORTS_SWA" +msgstr "Reports" + +msgid "IDS_ST_MBODY_FULL_REPORTS_SWA" +msgstr "Full reports" + +msgid "IDS_ST_MBODY_APP_RANKINGS_SWA" +msgstr "App rankings" + +msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA" +msgstr "Data statistics" + +msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA" +msgstr "Rules and patterns" + +msgid "IDS_ST_NPBODY_NO_REPORTS_SWA" +msgstr "No reports" + +msgid "IDS_ST_HEADER_SETTINGS_SWA" +msgstr "Settings" + +msgid "IDS_ST_MBODY_KEEP_LOGS_SWA" +msgstr "Keep logs" + +msgid "IDS_LOGS_CLEANED" +msgstr "Logs cleaned" + +msgid "IDS_LOGS_CLEANED_FAILED" +msgstr "Failed to clean logs" + +msgid "IDS_ST_OPT_1_WEEK_SWA" +msgstr "1 week" + +msgid "IDS_ST_OPT_1_DAY_SWA" +msgstr "1 day" + +msgid "IDS_ST_OPT_1_MONTH_SWA" +msgstr "1 month" + +msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA" +msgstr "Report details" + +msgid "IDS_ST_BODY_CATEGORY_C_SWA" +msgstr "Category:" + +msgid "IDS_ST_BODY_APP_C_SWA" +msgstr "App:" + +msgid "IDS_ST_BODY_DESTINATION_C_SWA" +msgstr "Destination:" + +msgid "IDS_ST_BODY_PATTERN_C_SWA" +msgstr "Pattern:" + +msgid "IDS_ST_BODY_DLP_ACTION" +msgstr "Action" + +msgid "IDS_ST_BODY_PACKET_C_SWA" +msgstr "Packet:" + +msgid "IDS_ST_BODY_DLP_ACTION_ALLOW" +msgstr "Allow" + +msgid "IDS_ST_BODY_DLP_ACTION_DENY" +msgstr "Deny" + +msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE" +msgstr "Sanitize" + +msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES" +msgstr "All Rules" + +msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA" +msgstr "Quick" + +msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA" +msgstr "Create rules quickly and easily." + +msgid "IDS_ST_MBODY_CUSTOM_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CREATE_RULES_FROM_SCRATCH_TO_GIVE_YOU_FULL_CONTROL_OF_YOUR_DATA_PROTECTION_USE_THIS_OPTION_TO_CREATE_NON_STANDARD_RULES_SWA" +msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules." + +msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA" +msgstr "Custom protection mode" + +msgid "IDS_ST_TAB_RULES_SWA" +msgstr "Rules" + +msgid "IDS_ST_TAB_PATTERNS_SWA" +msgstr "Patterns" + +msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA" +msgstr "Select template" + +msgid "IDS_ST_HEADER_SELECT_APPS_SWA" +msgstr "Select apps" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION" +msgstr "Select Action" + +msgid "IDS_ST_ACBUTTON_NEXT_SWA" +msgstr "NEXT" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK" +msgstr "OK" + +msgid "IDS_ST_ACBUTTON_DONE_SWA" +msgstr "DONE" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE" +msgstr "Rule created." + +msgid "IDS_ST_TPOP_RULE_DELETED_SWA" +msgstr "Rule deleted." + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE" +msgstr "Delete Rule" + +msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA" +msgstr "Delete patterns" + +msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA" +msgstr "This rule will be deleted." + +msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA" +msgstr "Create pattern" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN" +msgstr "Custom" + +msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA" +msgstr "%d patterns deleted." + +msgid "IDS_ST_OPT_EDIT_SWA" +msgstr "Edit" + +msgid "IDS_ST_OPT_CREATE_SWA" +msgstr "Create" + +msgid "IDS_ST_OPT_ALL_PATTERNS_SWA" +msgstr "All patterns" + +msgid "IDS_ST_BODY_NAME_SWA" +msgstr "Name" + +msgid "IDS_ST_BODY_DESCRIPTION_SWA" +msgstr "Description" + +msgid "IDS_ST_BODY_CATEGORY_SWA" +msgstr "Category" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME" +msgstr "Category name" + +msgid "IDS_ST_OPT_STRING_MATCH_SWA" +msgstr "String match" + +msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA" +msgstr "Regular expression" + +msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d patterns will be deleted." + +msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA" +msgstr "This report will be deleted." + +msgid "IDS_ST_OPT_DELETE_SWA" +msgstr "Delete" + +msgid "IDS_ST_HEADER_DELETE_REPORT_SWA" +msgstr "Delete report" + +msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d reports will be deleted." + +msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA" +msgstr "1 report deleted." + +msgid "IDS_ST_MBODY_SELECT_ALL_SWA" +msgstr "Select all" + +msgid "IDS_ST_ACBUTTON_DELETE_SWA" +msgstr "DELETE" + +msgid "IDS_ST_ACBUTTON_CANCEL_SWA" +msgstr "CANCEL" + +msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA" +msgstr "%d reports deleted." + +msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA" +msgstr "Select items" + +msgid "IDS_ST_HEADER_PD_SELECTED_SWA" +msgstr "%d selected" + +msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Basic protection mode turned on." + +msgid "IDS_ST_TPOP_RULE_CREATED_SWA" +msgstr "Rule created. Custom protection mode turned on." + +msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Advanced protection mode turned on." + +msgid "IDS_ST_HEADER_DETAILS_SWA" +msgstr "Details" + +msgid "IDS_ST_BODY_STRING_TYPE_SWA" +msgstr "String type" + +msgid "IDS_ST_BODY_SEARCH_TERM_SWA" +msgstr "Search term" + +msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA" +msgstr "Leaks captured" + +msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA" +msgstr "Total leaks" + +msgid "IDS_ST_HEADER_RULE_DETAILS_SWA" +msgstr "Rule details" + +msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA" +msgstr "Pattern details" @@ -31,3 +31,272 @@ msgstr "%d keer" msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB" msgstr "Privacy en beveiliging" +msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA" +msgstr "Prevent apps from leaking your sensitive data without authorisation." + +msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA" +msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts." + +msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA" +msgstr "Protection mode" + +msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA" +msgstr "Basic" + +msgid "IDS_ST_SBODY_MONITOR_YOUR_MAIN_SENSITIVE_DATA_TO_PREVENT_IT_FROM_BEING_LEAKED_BY_MOST_APPS_THIS_MODE_IS_SUITABLE_FOR_REGULAR_USERS_SWA" +msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users." + +msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA" +msgstr "Advanced" + +msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA" +msgstr "Set up strict rules to prevent data leakage." + +msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA" +msgstr "This mode will affect app performance." + +msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA" +msgstr "Some apps may be blocked." + +msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA" +msgstr "Turn on Advanced protection mode" + +msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA" +msgstr "Change default rules and patterns and create your own to set up a customised protection mode." + +msgid "IDS_ST_HEADER_REPORTS_SWA" +msgstr "Reports" + +msgid "IDS_ST_MBODY_FULL_REPORTS_SWA" +msgstr "Full reports" + +msgid "IDS_ST_MBODY_APP_RANKINGS_SWA" +msgstr "App rankings" + +msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA" +msgstr "Data statistics" + +msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA" +msgstr "Rules and patterns" + +msgid "IDS_ST_NPBODY_NO_REPORTS_SWA" +msgstr "No reports" + +msgid "IDS_ST_HEADER_SETTINGS_SWA" +msgstr "Settings" + +msgid "IDS_ST_MBODY_KEEP_LOGS_SWA" +msgstr "Keep logs" + +msgid "IDS_LOGS_CLEANED" +msgstr "Logs cleaned" + +msgid "IDS_LOGS_CLEANED_FAILED" +msgstr "Failed to clean logs" + +msgid "IDS_ST_OPT_1_WEEK_SWA" +msgstr "1 week" + +msgid "IDS_ST_OPT_1_DAY_SWA" +msgstr "1 day" + +msgid "IDS_ST_OPT_1_MONTH_SWA" +msgstr "1 month" + +msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA" +msgstr "Report details" + +msgid "IDS_ST_BODY_CATEGORY_C_SWA" +msgstr "Category:" + +msgid "IDS_ST_BODY_APP_C_SWA" +msgstr "App:" + +msgid "IDS_ST_BODY_DESTINATION_C_SWA" +msgstr "Destination:" + +msgid "IDS_ST_BODY_PATTERN_C_SWA" +msgstr "Pattern:" + +msgid "IDS_ST_BODY_DLP_ACTION" +msgstr "Action" + +msgid "IDS_ST_BODY_PACKET_C_SWA" +msgstr "Packet:" + +msgid "IDS_ST_BODY_DLP_ACTION_ALLOW" +msgstr "Allow" + +msgid "IDS_ST_BODY_DLP_ACTION_DENY" +msgstr "Deny" + +msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE" +msgstr "Sanitize" + +msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES" +msgstr "All Rules" + +msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA" +msgstr "Quick" + +msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA" +msgstr "Create rules quickly and easily." + +msgid "IDS_ST_MBODY_CUSTOM_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CREATE_RULES_FROM_SCRATCH_TO_GIVE_YOU_FULL_CONTROL_OF_YOUR_DATA_PROTECTION_USE_THIS_OPTION_TO_CREATE_NON_STANDARD_RULES_SWA" +msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules." + +msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA" +msgstr "Custom protection mode" + +msgid "IDS_ST_TAB_RULES_SWA" +msgstr "Rules" + +msgid "IDS_ST_TAB_PATTERNS_SWA" +msgstr "Patterns" + +msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA" +msgstr "Select template" + +msgid "IDS_ST_HEADER_SELECT_APPS_SWA" +msgstr "Select apps" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION" +msgstr "Select Action" + +msgid "IDS_ST_ACBUTTON_NEXT_SWA" +msgstr "NEXT" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK" +msgstr "OK" + +msgid "IDS_ST_ACBUTTON_DONE_SWA" +msgstr "DONE" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE" +msgstr "Rule created." + +msgid "IDS_ST_TPOP_RULE_DELETED_SWA" +msgstr "Rule deleted." + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE" +msgstr "Delete Rule" + +msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA" +msgstr "Delete patterns" + +msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA" +msgstr "This rule will be deleted." + +msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA" +msgstr "Create pattern" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN" +msgstr "Custom" + +msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA" +msgstr "%d patterns deleted." + +msgid "IDS_ST_OPT_EDIT_SWA" +msgstr "Edit" + +msgid "IDS_ST_OPT_CREATE_SWA" +msgstr "Create" + +msgid "IDS_ST_OPT_ALL_PATTERNS_SWA" +msgstr "All patterns" + +msgid "IDS_ST_BODY_NAME_SWA" +msgstr "Name" + +msgid "IDS_ST_BODY_DESCRIPTION_SWA" +msgstr "Description" + +msgid "IDS_ST_BODY_CATEGORY_SWA" +msgstr "Category" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME" +msgstr "Category name" + +msgid "IDS_ST_OPT_STRING_MATCH_SWA" +msgstr "String match" + +msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA" +msgstr "Regular expression" + +msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d patterns will be deleted." + +msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA" +msgstr "This report will be deleted." + +msgid "IDS_ST_OPT_DELETE_SWA" +msgstr "Delete" + +msgid "IDS_ST_HEADER_DELETE_REPORT_SWA" +msgstr "Delete report" + +msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d reports will be deleted." + +msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA" +msgstr "1 report deleted." + +msgid "IDS_ST_MBODY_SELECT_ALL_SWA" +msgstr "Select all" + +msgid "IDS_ST_ACBUTTON_DELETE_SWA" +msgstr "DELETE" + +msgid "IDS_ST_ACBUTTON_CANCEL_SWA" +msgstr "CANCEL" + +msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA" +msgstr "%d reports deleted." + +msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA" +msgstr "Select items" + +msgid "IDS_ST_HEADER_PD_SELECTED_SWA" +msgstr "%d selected" + +msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Basic protection mode turned on." + +msgid "IDS_ST_TPOP_RULE_CREATED_SWA" +msgstr "Rule created. Custom protection mode turned on." + +msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Advanced protection mode turned on." + +msgid "IDS_ST_HEADER_DETAILS_SWA" +msgstr "Details" + +msgid "IDS_ST_BODY_STRING_TYPE_SWA" +msgstr "String type" + +msgid "IDS_ST_BODY_SEARCH_TERM_SWA" +msgstr "Search term" + +msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA" +msgstr "Leaks captured" + +msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA" +msgstr "Total leaks" + +msgid "IDS_ST_HEADER_RULE_DETAILS_SWA" +msgstr "Rule details" + +msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA" +msgstr "Pattern details" @@ -31,3 +31,272 @@ msgstr "%d razy" msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB" msgstr "Prywatność i bezpiecz." +msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA" +msgstr "Prevent apps from leaking your sensitive data without authorisation." + +msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA" +msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts." + +msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA" +msgstr "Protection mode" + +msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA" +msgstr "Basic" + +msgid "IDS_ST_SBODY_MONITOR_YOUR_MAIN_SENSITIVE_DATA_TO_PREVENT_IT_FROM_BEING_LEAKED_BY_MOST_APPS_THIS_MODE_IS_SUITABLE_FOR_REGULAR_USERS_SWA" +msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users." + +msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA" +msgstr "Advanced" + +msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA" +msgstr "Set up strict rules to prevent data leakage." + +msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA" +msgstr "This mode will affect app performance." + +msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA" +msgstr "Some apps may be blocked." + +msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA" +msgstr "Turn on Advanced protection mode" + +msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA" +msgstr "Change default rules and patterns and create your own to set up a customised protection mode." + +msgid "IDS_ST_HEADER_REPORTS_SWA" +msgstr "Reports" + +msgid "IDS_ST_MBODY_FULL_REPORTS_SWA" +msgstr "Full reports" + +msgid "IDS_ST_MBODY_APP_RANKINGS_SWA" +msgstr "App rankings" + +msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA" +msgstr "Data statistics" + +msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA" +msgstr "Rules and patterns" + +msgid "IDS_ST_NPBODY_NO_REPORTS_SWA" +msgstr "No reports" + +msgid "IDS_ST_HEADER_SETTINGS_SWA" +msgstr "Settings" + +msgid "IDS_ST_MBODY_KEEP_LOGS_SWA" +msgstr "Keep logs" + +msgid "IDS_LOGS_CLEANED" +msgstr "Logs cleaned" + +msgid "IDS_LOGS_CLEANED_FAILED" +msgstr "Failed to clean logs" + +msgid "IDS_ST_OPT_1_WEEK_SWA" +msgstr "1 week" + +msgid "IDS_ST_OPT_1_DAY_SWA" +msgstr "1 day" + +msgid "IDS_ST_OPT_1_MONTH_SWA" +msgstr "1 month" + +msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA" +msgstr "Report details" + +msgid "IDS_ST_BODY_CATEGORY_C_SWA" +msgstr "Category:" + +msgid "IDS_ST_BODY_APP_C_SWA" +msgstr "App:" + +msgid "IDS_ST_BODY_DESTINATION_C_SWA" +msgstr "Destination:" + +msgid "IDS_ST_BODY_PATTERN_C_SWA" +msgstr "Pattern:" + +msgid "IDS_ST_BODY_DLP_ACTION" +msgstr "Action" + +msgid "IDS_ST_BODY_PACKET_C_SWA" +msgstr "Packet:" + +msgid "IDS_ST_BODY_DLP_ACTION_ALLOW" +msgstr "Allow" + +msgid "IDS_ST_BODY_DLP_ACTION_DENY" +msgstr "Deny" + +msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE" +msgstr "Sanitize" + +msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES" +msgstr "All Rules" + +msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA" +msgstr "Quick" + +msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA" +msgstr "Create rules quickly and easily." + +msgid "IDS_ST_MBODY_CUSTOM_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CREATE_RULES_FROM_SCRATCH_TO_GIVE_YOU_FULL_CONTROL_OF_YOUR_DATA_PROTECTION_USE_THIS_OPTION_TO_CREATE_NON_STANDARD_RULES_SWA" +msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules." + +msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA" +msgstr "Custom protection mode" + +msgid "IDS_ST_TAB_RULES_SWA" +msgstr "Rules" + +msgid "IDS_ST_TAB_PATTERNS_SWA" +msgstr "Patterns" + +msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA" +msgstr "Select template" + +msgid "IDS_ST_HEADER_SELECT_APPS_SWA" +msgstr "Select apps" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION" +msgstr "Select Action" + +msgid "IDS_ST_ACBUTTON_NEXT_SWA" +msgstr "NEXT" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK" +msgstr "OK" + +msgid "IDS_ST_ACBUTTON_DONE_SWA" +msgstr "DONE" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE" +msgstr "Rule created." + +msgid "IDS_ST_TPOP_RULE_DELETED_SWA" +msgstr "Rule deleted." + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE" +msgstr "Delete Rule" + +msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA" +msgstr "Delete patterns" + +msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA" +msgstr "This rule will be deleted." + +msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA" +msgstr "Create pattern" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN" +msgstr "Custom" + +msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA" +msgstr "%d patterns deleted." + +msgid "IDS_ST_OPT_EDIT_SWA" +msgstr "Edit" + +msgid "IDS_ST_OPT_CREATE_SWA" +msgstr "Create" + +msgid "IDS_ST_OPT_ALL_PATTERNS_SWA" +msgstr "All patterns" + +msgid "IDS_ST_BODY_NAME_SWA" +msgstr "Name" + +msgid "IDS_ST_BODY_DESCRIPTION_SWA" +msgstr "Description" + +msgid "IDS_ST_BODY_CATEGORY_SWA" +msgstr "Category" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME" +msgstr "Category name" + +msgid "IDS_ST_OPT_STRING_MATCH_SWA" +msgstr "String match" + +msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA" +msgstr "Regular expression" + +msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d patterns will be deleted." + +msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA" +msgstr "This report will be deleted." + +msgid "IDS_ST_OPT_DELETE_SWA" +msgstr "Delete" + +msgid "IDS_ST_HEADER_DELETE_REPORT_SWA" +msgstr "Delete report" + +msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d reports will be deleted." + +msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA" +msgstr "1 report deleted." + +msgid "IDS_ST_MBODY_SELECT_ALL_SWA" +msgstr "Select all" + +msgid "IDS_ST_ACBUTTON_DELETE_SWA" +msgstr "DELETE" + +msgid "IDS_ST_ACBUTTON_CANCEL_SWA" +msgstr "CANCEL" + +msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA" +msgstr "%d reports deleted." + +msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA" +msgstr "Select items" + +msgid "IDS_ST_HEADER_PD_SELECTED_SWA" +msgstr "%d selected" + +msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Basic protection mode turned on." + +msgid "IDS_ST_TPOP_RULE_CREATED_SWA" +msgstr "Rule created. Custom protection mode turned on." + +msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Advanced protection mode turned on." + +msgid "IDS_ST_HEADER_DETAILS_SWA" +msgstr "Details" + +msgid "IDS_ST_BODY_STRING_TYPE_SWA" +msgstr "String type" + +msgid "IDS_ST_BODY_SEARCH_TERM_SWA" +msgstr "Search term" + +msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA" +msgstr "Leaks captured" + +msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA" +msgstr "Total leaks" + +msgid "IDS_ST_HEADER_RULE_DETAILS_SWA" +msgstr "Rule details" + +msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA" +msgstr "Pattern details" diff --git a/po/pt_BR.po b/po/pt_BR.po index 3f98674..300aa8e 100755 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -31,3 +31,272 @@ msgstr "%d vezes" msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB" msgstr "Privacid. e segurança" +msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA" +msgstr "Prevent apps from leaking your sensitive data without authorisation." + +msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA" +msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts." + +msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA" +msgstr "Protection mode" + +msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA" +msgstr "Basic" + +msgid "IDS_ST_SBODY_MONITOR_YOUR_MAIN_SENSITIVE_DATA_TO_PREVENT_IT_FROM_BEING_LEAKED_BY_MOST_APPS_THIS_MODE_IS_SUITABLE_FOR_REGULAR_USERS_SWA" +msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users." + +msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA" +msgstr "Advanced" + +msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA" +msgstr "Set up strict rules to prevent data leakage." + +msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA" +msgstr "This mode will affect app performance." + +msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA" +msgstr "Some apps may be blocked." + +msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA" +msgstr "Turn on Advanced protection mode" + +msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA" +msgstr "Change default rules and patterns and create your own to set up a customised protection mode." + +msgid "IDS_ST_HEADER_REPORTS_SWA" +msgstr "Reports" + +msgid "IDS_ST_MBODY_FULL_REPORTS_SWA" +msgstr "Full reports" + +msgid "IDS_ST_MBODY_APP_RANKINGS_SWA" +msgstr "App rankings" + +msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA" +msgstr "Data statistics" + +msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA" +msgstr "Rules and patterns" + +msgid "IDS_ST_NPBODY_NO_REPORTS_SWA" +msgstr "No reports" + +msgid "IDS_ST_HEADER_SETTINGS_SWA" +msgstr "Settings" + +msgid "IDS_ST_MBODY_KEEP_LOGS_SWA" +msgstr "Keep logs" + +msgid "IDS_LOGS_CLEANED" +msgstr "Logs cleaned" + +msgid "IDS_LOGS_CLEANED_FAILED" +msgstr "Failed to clean logs" + +msgid "IDS_ST_OPT_1_WEEK_SWA" +msgstr "1 week" + +msgid "IDS_ST_OPT_1_DAY_SWA" +msgstr "1 day" + +msgid "IDS_ST_OPT_1_MONTH_SWA" +msgstr "1 month" + +msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA" +msgstr "Report details" + +msgid "IDS_ST_BODY_CATEGORY_C_SWA" +msgstr "Category:" + +msgid "IDS_ST_BODY_APP_C_SWA" +msgstr "App:" + +msgid "IDS_ST_BODY_DESTINATION_C_SWA" +msgstr "Destination:" + +msgid "IDS_ST_BODY_PATTERN_C_SWA" +msgstr "Pattern:" + +msgid "IDS_ST_BODY_DLP_ACTION" +msgstr "Action" + +msgid "IDS_ST_BODY_PACKET_C_SWA" +msgstr "Packet:" + +msgid "IDS_ST_BODY_DLP_ACTION_ALLOW" +msgstr "Allow" + +msgid "IDS_ST_BODY_DLP_ACTION_DENY" +msgstr "Deny" + +msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE" +msgstr "Sanitize" + +msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES" +msgstr "All Rules" + +msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA" +msgstr "Quick" + +msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA" +msgstr "Create rules quickly and easily." + +msgid "IDS_ST_MBODY_CUSTOM_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CREATE_RULES_FROM_SCRATCH_TO_GIVE_YOU_FULL_CONTROL_OF_YOUR_DATA_PROTECTION_USE_THIS_OPTION_TO_CREATE_NON_STANDARD_RULES_SWA" +msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules." + +msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA" +msgstr "Custom protection mode" + +msgid "IDS_ST_TAB_RULES_SWA" +msgstr "Rules" + +msgid "IDS_ST_TAB_PATTERNS_SWA" +msgstr "Patterns" + +msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA" +msgstr "Select template" + +msgid "IDS_ST_HEADER_SELECT_APPS_SWA" +msgstr "Select apps" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION" +msgstr "Select Action" + +msgid "IDS_ST_ACBUTTON_NEXT_SWA" +msgstr "NEXT" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK" +msgstr "OK" + +msgid "IDS_ST_ACBUTTON_DONE_SWA" +msgstr "DONE" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE" +msgstr "Rule created." + +msgid "IDS_ST_TPOP_RULE_DELETED_SWA" +msgstr "Rule deleted." + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE" +msgstr "Delete Rule" + +msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA" +msgstr "Delete patterns" + +msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA" +msgstr "This rule will be deleted." + +msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA" +msgstr "Create pattern" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN" +msgstr "Custom" + +msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA" +msgstr "%d patterns deleted." + +msgid "IDS_ST_OPT_EDIT_SWA" +msgstr "Edit" + +msgid "IDS_ST_OPT_CREATE_SWA" +msgstr "Create" + +msgid "IDS_ST_OPT_ALL_PATTERNS_SWA" +msgstr "All patterns" + +msgid "IDS_ST_BODY_NAME_SWA" +msgstr "Name" + +msgid "IDS_ST_BODY_DESCRIPTION_SWA" +msgstr "Description" + +msgid "IDS_ST_BODY_CATEGORY_SWA" +msgstr "Category" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME" +msgstr "Category name" + +msgid "IDS_ST_OPT_STRING_MATCH_SWA" +msgstr "String match" + +msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA" +msgstr "Regular expression" + +msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d patterns will be deleted." + +msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA" +msgstr "This report will be deleted." + +msgid "IDS_ST_OPT_DELETE_SWA" +msgstr "Delete" + +msgid "IDS_ST_HEADER_DELETE_REPORT_SWA" +msgstr "Delete report" + +msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d reports will be deleted." + +msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA" +msgstr "1 report deleted." + +msgid "IDS_ST_MBODY_SELECT_ALL_SWA" +msgstr "Select all" + +msgid "IDS_ST_ACBUTTON_DELETE_SWA" +msgstr "DELETE" + +msgid "IDS_ST_ACBUTTON_CANCEL_SWA" +msgstr "CANCEL" + +msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA" +msgstr "%d reports deleted." + +msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA" +msgstr "Select items" + +msgid "IDS_ST_HEADER_PD_SELECTED_SWA" +msgstr "%d selected" + +msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Basic protection mode turned on." + +msgid "IDS_ST_TPOP_RULE_CREATED_SWA" +msgstr "Rule created. Custom protection mode turned on." + +msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Advanced protection mode turned on." + +msgid "IDS_ST_HEADER_DETAILS_SWA" +msgstr "Details" + +msgid "IDS_ST_BODY_STRING_TYPE_SWA" +msgstr "String type" + +msgid "IDS_ST_BODY_SEARCH_TERM_SWA" +msgstr "Search term" + +msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA" +msgstr "Leaks captured" + +msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA" +msgstr "Total leaks" + +msgid "IDS_ST_HEADER_RULE_DETAILS_SWA" +msgstr "Rule details" + +msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA" +msgstr "Pattern details" diff --git a/po/pt_PT.po b/po/pt_PT.po index ea115dc..ec8e8b3 100755 --- a/po/pt_PT.po +++ b/po/pt_PT.po @@ -31,3 +31,272 @@ msgstr "%d vezes" msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB" msgstr "Privacidade e segurança" +msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA" +msgstr "Prevent apps from leaking your sensitive data without authorisation." + +msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA" +msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts." + +msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA" +msgstr "Protection mode" + +msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA" +msgstr "Basic" + +msgid "IDS_ST_SBODY_MONITOR_YOUR_MAIN_SENSITIVE_DATA_TO_PREVENT_IT_FROM_BEING_LEAKED_BY_MOST_APPS_THIS_MODE_IS_SUITABLE_FOR_REGULAR_USERS_SWA" +msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users." + +msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA" +msgstr "Advanced" + +msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA" +msgstr "Set up strict rules to prevent data leakage." + +msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA" +msgstr "This mode will affect app performance." + +msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA" +msgstr "Some apps may be blocked." + +msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA" +msgstr "Turn on Advanced protection mode" + +msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA" +msgstr "Change default rules and patterns and create your own to set up a customised protection mode." + +msgid "IDS_ST_HEADER_REPORTS_SWA" +msgstr "Reports" + +msgid "IDS_ST_MBODY_FULL_REPORTS_SWA" +msgstr "Full reports" + +msgid "IDS_ST_MBODY_APP_RANKINGS_SWA" +msgstr "App rankings" + +msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA" +msgstr "Data statistics" + +msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA" +msgstr "Rules and patterns" + +msgid "IDS_ST_NPBODY_NO_REPORTS_SWA" +msgstr "No reports" + +msgid "IDS_ST_HEADER_SETTINGS_SWA" +msgstr "Settings" + +msgid "IDS_ST_MBODY_KEEP_LOGS_SWA" +msgstr "Keep logs" + +msgid "IDS_LOGS_CLEANED" +msgstr "Logs cleaned" + +msgid "IDS_LOGS_CLEANED_FAILED" +msgstr "Failed to clean logs" + +msgid "IDS_ST_OPT_1_WEEK_SWA" +msgstr "1 week" + +msgid "IDS_ST_OPT_1_DAY_SWA" +msgstr "1 day" + +msgid "IDS_ST_OPT_1_MONTH_SWA" +msgstr "1 month" + +msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA" +msgstr "Report details" + +msgid "IDS_ST_BODY_CATEGORY_C_SWA" +msgstr "Category:" + +msgid "IDS_ST_BODY_APP_C_SWA" +msgstr "App:" + +msgid "IDS_ST_BODY_DESTINATION_C_SWA" +msgstr "Destination:" + +msgid "IDS_ST_BODY_PATTERN_C_SWA" +msgstr "Pattern:" + +msgid "IDS_ST_BODY_DLP_ACTION" +msgstr "Action" + +msgid "IDS_ST_BODY_PACKET_C_SWA" +msgstr "Packet:" + +msgid "IDS_ST_BODY_DLP_ACTION_ALLOW" +msgstr "Allow" + +msgid "IDS_ST_BODY_DLP_ACTION_DENY" +msgstr "Deny" + +msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE" +msgstr "Sanitize" + +msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES" +msgstr "All Rules" + +msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA" +msgstr "Quick" + +msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA" +msgstr "Create rules quickly and easily." + +msgid "IDS_ST_MBODY_CUSTOM_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CREATE_RULES_FROM_SCRATCH_TO_GIVE_YOU_FULL_CONTROL_OF_YOUR_DATA_PROTECTION_USE_THIS_OPTION_TO_CREATE_NON_STANDARD_RULES_SWA" +msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules." + +msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA" +msgstr "Custom protection mode" + +msgid "IDS_ST_TAB_RULES_SWA" +msgstr "Rules" + +msgid "IDS_ST_TAB_PATTERNS_SWA" +msgstr "Patterns" + +msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA" +msgstr "Select template" + +msgid "IDS_ST_HEADER_SELECT_APPS_SWA" +msgstr "Select apps" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION" +msgstr "Select Action" + +msgid "IDS_ST_ACBUTTON_NEXT_SWA" +msgstr "NEXT" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK" +msgstr "OK" + +msgid "IDS_ST_ACBUTTON_DONE_SWA" +msgstr "DONE" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE" +msgstr "Rule created." + +msgid "IDS_ST_TPOP_RULE_DELETED_SWA" +msgstr "Rule deleted." + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE" +msgstr "Delete Rule" + +msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA" +msgstr "Delete patterns" + +msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA" +msgstr "This rule will be deleted." + +msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA" +msgstr "Create pattern" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN" +msgstr "Custom" + +msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA" +msgstr "%d patterns deleted." + +msgid "IDS_ST_OPT_EDIT_SWA" +msgstr "Edit" + +msgid "IDS_ST_OPT_CREATE_SWA" +msgstr "Create" + +msgid "IDS_ST_OPT_ALL_PATTERNS_SWA" +msgstr "All patterns" + +msgid "IDS_ST_BODY_NAME_SWA" +msgstr "Name" + +msgid "IDS_ST_BODY_DESCRIPTION_SWA" +msgstr "Description" + +msgid "IDS_ST_BODY_CATEGORY_SWA" +msgstr "Category" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME" +msgstr "Category name" + +msgid "IDS_ST_OPT_STRING_MATCH_SWA" +msgstr "String match" + +msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA" +msgstr "Regular expression" + +msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d patterns will be deleted." + +msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA" +msgstr "This report will be deleted." + +msgid "IDS_ST_OPT_DELETE_SWA" +msgstr "Delete" + +msgid "IDS_ST_HEADER_DELETE_REPORT_SWA" +msgstr "Delete report" + +msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d reports will be deleted." + +msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA" +msgstr "1 report deleted." + +msgid "IDS_ST_MBODY_SELECT_ALL_SWA" +msgstr "Select all" + +msgid "IDS_ST_ACBUTTON_DELETE_SWA" +msgstr "DELETE" + +msgid "IDS_ST_ACBUTTON_CANCEL_SWA" +msgstr "CANCEL" + +msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA" +msgstr "%d reports deleted." + +msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA" +msgstr "Select items" + +msgid "IDS_ST_HEADER_PD_SELECTED_SWA" +msgstr "%d selected" + +msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Basic protection mode turned on." + +msgid "IDS_ST_TPOP_RULE_CREATED_SWA" +msgstr "Rule created. Custom protection mode turned on." + +msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Advanced protection mode turned on." + +msgid "IDS_ST_HEADER_DETAILS_SWA" +msgstr "Details" + +msgid "IDS_ST_BODY_STRING_TYPE_SWA" +msgstr "String type" + +msgid "IDS_ST_BODY_SEARCH_TERM_SWA" +msgstr "Search term" + +msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA" +msgstr "Leaks captured" + +msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA" +msgstr "Total leaks" + +msgid "IDS_ST_HEADER_RULE_DETAILS_SWA" +msgstr "Rule details" + +msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA" +msgstr "Pattern details" @@ -31,3 +31,272 @@ msgstr "%d ori" msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB" msgstr "Confid. și securitate" +msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA" +msgstr "Prevent apps from leaking your sensitive data without authorisation." + +msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA" +msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts." + +msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA" +msgstr "Protection mode" + +msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA" +msgstr "Basic" + +msgid "IDS_ST_SBODY_MONITOR_YOUR_MAIN_SENSITIVE_DATA_TO_PREVENT_IT_FROM_BEING_LEAKED_BY_MOST_APPS_THIS_MODE_IS_SUITABLE_FOR_REGULAR_USERS_SWA" +msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users." + +msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA" +msgstr "Advanced" + +msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA" +msgstr "Set up strict rules to prevent data leakage." + +msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA" +msgstr "This mode will affect app performance." + +msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA" +msgstr "Some apps may be blocked." + +msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA" +msgstr "Turn on Advanced protection mode" + +msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA" +msgstr "Change default rules and patterns and create your own to set up a customised protection mode." + +msgid "IDS_ST_HEADER_REPORTS_SWA" +msgstr "Reports" + +msgid "IDS_ST_MBODY_FULL_REPORTS_SWA" +msgstr "Full reports" + +msgid "IDS_ST_MBODY_APP_RANKINGS_SWA" +msgstr "App rankings" + +msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA" +msgstr "Data statistics" + +msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA" +msgstr "Rules and patterns" + +msgid "IDS_ST_NPBODY_NO_REPORTS_SWA" +msgstr "No reports" + +msgid "IDS_ST_HEADER_SETTINGS_SWA" +msgstr "Settings" + +msgid "IDS_ST_MBODY_KEEP_LOGS_SWA" +msgstr "Keep logs" + +msgid "IDS_LOGS_CLEANED" +msgstr "Logs cleaned" + +msgid "IDS_LOGS_CLEANED_FAILED" +msgstr "Failed to clean logs" + +msgid "IDS_ST_OPT_1_WEEK_SWA" +msgstr "1 week" + +msgid "IDS_ST_OPT_1_DAY_SWA" +msgstr "1 day" + +msgid "IDS_ST_OPT_1_MONTH_SWA" +msgstr "1 month" + +msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA" +msgstr "Report details" + +msgid "IDS_ST_BODY_CATEGORY_C_SWA" +msgstr "Category:" + +msgid "IDS_ST_BODY_APP_C_SWA" +msgstr "App:" + +msgid "IDS_ST_BODY_DESTINATION_C_SWA" +msgstr "Destination:" + +msgid "IDS_ST_BODY_PATTERN_C_SWA" +msgstr "Pattern:" + +msgid "IDS_ST_BODY_DLP_ACTION" +msgstr "Action" + +msgid "IDS_ST_BODY_PACKET_C_SWA" +msgstr "Packet:" + +msgid "IDS_ST_BODY_DLP_ACTION_ALLOW" +msgstr "Allow" + +msgid "IDS_ST_BODY_DLP_ACTION_DENY" +msgstr "Deny" + +msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE" +msgstr "Sanitize" + +msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES" +msgstr "All Rules" + +msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA" +msgstr "Quick" + +msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA" +msgstr "Create rules quickly and easily." + +msgid "IDS_ST_MBODY_CUSTOM_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CREATE_RULES_FROM_SCRATCH_TO_GIVE_YOU_FULL_CONTROL_OF_YOUR_DATA_PROTECTION_USE_THIS_OPTION_TO_CREATE_NON_STANDARD_RULES_SWA" +msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules." + +msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA" +msgstr "Custom protection mode" + +msgid "IDS_ST_TAB_RULES_SWA" +msgstr "Rules" + +msgid "IDS_ST_TAB_PATTERNS_SWA" +msgstr "Patterns" + +msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA" +msgstr "Select template" + +msgid "IDS_ST_HEADER_SELECT_APPS_SWA" +msgstr "Select apps" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION" +msgstr "Select Action" + +msgid "IDS_ST_ACBUTTON_NEXT_SWA" +msgstr "NEXT" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK" +msgstr "OK" + +msgid "IDS_ST_ACBUTTON_DONE_SWA" +msgstr "DONE" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE" +msgstr "Rule created." + +msgid "IDS_ST_TPOP_RULE_DELETED_SWA" +msgstr "Rule deleted." + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE" +msgstr "Delete Rule" + +msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA" +msgstr "Delete patterns" + +msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA" +msgstr "This rule will be deleted." + +msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA" +msgstr "Create pattern" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN" +msgstr "Custom" + +msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA" +msgstr "%d patterns deleted." + +msgid "IDS_ST_OPT_EDIT_SWA" +msgstr "Edit" + +msgid "IDS_ST_OPT_CREATE_SWA" +msgstr "Create" + +msgid "IDS_ST_OPT_ALL_PATTERNS_SWA" +msgstr "All patterns" + +msgid "IDS_ST_BODY_NAME_SWA" +msgstr "Name" + +msgid "IDS_ST_BODY_DESCRIPTION_SWA" +msgstr "Description" + +msgid "IDS_ST_BODY_CATEGORY_SWA" +msgstr "Category" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME" +msgstr "Category name" + +msgid "IDS_ST_OPT_STRING_MATCH_SWA" +msgstr "String match" + +msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA" +msgstr "Regular expression" + +msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d patterns will be deleted." + +msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA" +msgstr "This report will be deleted." + +msgid "IDS_ST_OPT_DELETE_SWA" +msgstr "Delete" + +msgid "IDS_ST_HEADER_DELETE_REPORT_SWA" +msgstr "Delete report" + +msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d reports will be deleted." + +msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA" +msgstr "1 report deleted." + +msgid "IDS_ST_MBODY_SELECT_ALL_SWA" +msgstr "Select all" + +msgid "IDS_ST_ACBUTTON_DELETE_SWA" +msgstr "DELETE" + +msgid "IDS_ST_ACBUTTON_CANCEL_SWA" +msgstr "CANCEL" + +msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA" +msgstr "%d reports deleted." + +msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA" +msgstr "Select items" + +msgid "IDS_ST_HEADER_PD_SELECTED_SWA" +msgstr "%d selected" + +msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Basic protection mode turned on." + +msgid "IDS_ST_TPOP_RULE_CREATED_SWA" +msgstr "Rule created. Custom protection mode turned on." + +msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Advanced protection mode turned on." + +msgid "IDS_ST_HEADER_DETAILS_SWA" +msgstr "Details" + +msgid "IDS_ST_BODY_STRING_TYPE_SWA" +msgstr "String type" + +msgid "IDS_ST_BODY_SEARCH_TERM_SWA" +msgstr "Search term" + +msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA" +msgstr "Leaks captured" + +msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA" +msgstr "Total leaks" + +msgid "IDS_ST_HEADER_RULE_DETAILS_SWA" +msgstr "Rule details" + +msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA" +msgstr "Pattern details" diff --git a/po/ru_RU.po b/po/ru_RU.po index 31691d0..01b9337 100755 --- a/po/ru_RU.po +++ b/po/ru_RU.po @@ -31,3 +31,272 @@ msgstr "%d раз." msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB" msgstr "Конфиденц. и безопасн." +msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA" +msgstr "Prevent apps from leaking your sensitive data without authorisation." + +msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA" +msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts." + +msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA" +msgstr "Protection mode" + +msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA" +msgstr "Basic" + +msgid "IDS_ST_SBODY_MONITOR_YOUR_MAIN_SENSITIVE_DATA_TO_PREVENT_IT_FROM_BEING_LEAKED_BY_MOST_APPS_THIS_MODE_IS_SUITABLE_FOR_REGULAR_USERS_SWA" +msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users." + +msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA" +msgstr "Advanced" + +msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA" +msgstr "Set up strict rules to prevent data leakage." + +msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA" +msgstr "This mode will affect app performance." + +msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA" +msgstr "Some apps may be blocked." + +msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA" +msgstr "Turn on Advanced protection mode" + +msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA" +msgstr "Change default rules and patterns and create your own to set up a customised protection mode." + +msgid "IDS_ST_HEADER_REPORTS_SWA" +msgstr "Reports" + +msgid "IDS_ST_MBODY_FULL_REPORTS_SWA" +msgstr "Full reports" + +msgid "IDS_ST_MBODY_APP_RANKINGS_SWA" +msgstr "App rankings" + +msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA" +msgstr "Data statistics" + +msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA" +msgstr "Rules and patterns" + +msgid "IDS_ST_NPBODY_NO_REPORTS_SWA" +msgstr "No reports" + +msgid "IDS_ST_HEADER_SETTINGS_SWA" +msgstr "Settings" + +msgid "IDS_ST_MBODY_KEEP_LOGS_SWA" +msgstr "Keep logs" + +msgid "IDS_LOGS_CLEANED" +msgstr "Logs cleaned" + +msgid "IDS_LOGS_CLEANED_FAILED" +msgstr "Failed to clean logs" + +msgid "IDS_ST_OPT_1_WEEK_SWA" +msgstr "1 week" + +msgid "IDS_ST_OPT_1_DAY_SWA" +msgstr "1 day" + +msgid "IDS_ST_OPT_1_MONTH_SWA" +msgstr "1 month" + +msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA" +msgstr "Report details" + +msgid "IDS_ST_BODY_CATEGORY_C_SWA" +msgstr "Category:" + +msgid "IDS_ST_BODY_APP_C_SWA" +msgstr "App:" + +msgid "IDS_ST_BODY_DESTINATION_C_SWA" +msgstr "Destination:" + +msgid "IDS_ST_BODY_PATTERN_C_SWA" +msgstr "Pattern:" + +msgid "IDS_ST_BODY_DLP_ACTION" +msgstr "Action" + +msgid "IDS_ST_BODY_PACKET_C_SWA" +msgstr "Packet:" + +msgid "IDS_ST_BODY_DLP_ACTION_ALLOW" +msgstr "Allow" + +msgid "IDS_ST_BODY_DLP_ACTION_DENY" +msgstr "Deny" + +msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE" +msgstr "Sanitize" + +msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES" +msgstr "All Rules" + +msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA" +msgstr "Quick" + +msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA" +msgstr "Create rules quickly and easily." + +msgid "IDS_ST_MBODY_CUSTOM_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CREATE_RULES_FROM_SCRATCH_TO_GIVE_YOU_FULL_CONTROL_OF_YOUR_DATA_PROTECTION_USE_THIS_OPTION_TO_CREATE_NON_STANDARD_RULES_SWA" +msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules." + +msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA" +msgstr "Custom protection mode" + +msgid "IDS_ST_TAB_RULES_SWA" +msgstr "Rules" + +msgid "IDS_ST_TAB_PATTERNS_SWA" +msgstr "Patterns" + +msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA" +msgstr "Select template" + +msgid "IDS_ST_HEADER_SELECT_APPS_SWA" +msgstr "Select apps" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION" +msgstr "Select Action" + +msgid "IDS_ST_ACBUTTON_NEXT_SWA" +msgstr "NEXT" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK" +msgstr "OK" + +msgid "IDS_ST_ACBUTTON_DONE_SWA" +msgstr "DONE" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE" +msgstr "Rule created." + +msgid "IDS_ST_TPOP_RULE_DELETED_SWA" +msgstr "Rule deleted." + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE" +msgstr "Delete Rule" + +msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA" +msgstr "Delete patterns" + +msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA" +msgstr "This rule will be deleted." + +msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA" +msgstr "Create pattern" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN" +msgstr "Custom" + +msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA" +msgstr "%d patterns deleted." + +msgid "IDS_ST_OPT_EDIT_SWA" +msgstr "Edit" + +msgid "IDS_ST_OPT_CREATE_SWA" +msgstr "Create" + +msgid "IDS_ST_OPT_ALL_PATTERNS_SWA" +msgstr "All patterns" + +msgid "IDS_ST_BODY_NAME_SWA" +msgstr "Name" + +msgid "IDS_ST_BODY_DESCRIPTION_SWA" +msgstr "Description" + +msgid "IDS_ST_BODY_CATEGORY_SWA" +msgstr "Category" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME" +msgstr "Category name" + +msgid "IDS_ST_OPT_STRING_MATCH_SWA" +msgstr "String match" + +msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA" +msgstr "Regular expression" + +msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d patterns will be deleted." + +msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA" +msgstr "This report will be deleted." + +msgid "IDS_ST_OPT_DELETE_SWA" +msgstr "Delete" + +msgid "IDS_ST_HEADER_DELETE_REPORT_SWA" +msgstr "Delete report" + +msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d reports will be deleted." + +msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA" +msgstr "1 report deleted." + +msgid "IDS_ST_MBODY_SELECT_ALL_SWA" +msgstr "Select all" + +msgid "IDS_ST_ACBUTTON_DELETE_SWA" +msgstr "DELETE" + +msgid "IDS_ST_ACBUTTON_CANCEL_SWA" +msgstr "CANCEL" + +msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA" +msgstr "%d reports deleted." + +msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA" +msgstr "Select items" + +msgid "IDS_ST_HEADER_PD_SELECTED_SWA" +msgstr "%d selected" + +msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Basic protection mode turned on." + +msgid "IDS_ST_TPOP_RULE_CREATED_SWA" +msgstr "Rule created. Custom protection mode turned on." + +msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Advanced protection mode turned on." + +msgid "IDS_ST_HEADER_DETAILS_SWA" +msgstr "Details" + +msgid "IDS_ST_BODY_STRING_TYPE_SWA" +msgstr "String type" + +msgid "IDS_ST_BODY_SEARCH_TERM_SWA" +msgstr "Search term" + +msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA" +msgstr "Leaks captured" + +msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA" +msgstr "Total leaks" + +msgid "IDS_ST_HEADER_RULE_DETAILS_SWA" +msgstr "Rule details" + +msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA" +msgstr "Pattern details" @@ -31,3 +31,272 @@ msgstr "%d krát" msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB" msgstr "Súkromie a zabezpečenie" +msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA" +msgstr "Prevent apps from leaking your sensitive data without authorisation." + +msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA" +msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts." + +msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA" +msgstr "Protection mode" + +msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA" +msgstr "Basic" + +msgid "IDS_ST_SBODY_MONITOR_YOUR_MAIN_SENSITIVE_DATA_TO_PREVENT_IT_FROM_BEING_LEAKED_BY_MOST_APPS_THIS_MODE_IS_SUITABLE_FOR_REGULAR_USERS_SWA" +msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users." + +msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA" +msgstr "Advanced" + +msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA" +msgstr "Set up strict rules to prevent data leakage." + +msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA" +msgstr "This mode will affect app performance." + +msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA" +msgstr "Some apps may be blocked." + +msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA" +msgstr "Turn on Advanced protection mode" + +msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA" +msgstr "Change default rules and patterns and create your own to set up a customised protection mode." + +msgid "IDS_ST_HEADER_REPORTS_SWA" +msgstr "Reports" + +msgid "IDS_ST_MBODY_FULL_REPORTS_SWA" +msgstr "Full reports" + +msgid "IDS_ST_MBODY_APP_RANKINGS_SWA" +msgstr "App rankings" + +msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA" +msgstr "Data statistics" + +msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA" +msgstr "Rules and patterns" + +msgid "IDS_ST_NPBODY_NO_REPORTS_SWA" +msgstr "No reports" + +msgid "IDS_ST_HEADER_SETTINGS_SWA" +msgstr "Settings" + +msgid "IDS_ST_MBODY_KEEP_LOGS_SWA" +msgstr "Keep logs" + +msgid "IDS_LOGS_CLEANED" +msgstr "Logs cleaned" + +msgid "IDS_LOGS_CLEANED_FAILED" +msgstr "Failed to clean logs" + +msgid "IDS_ST_OPT_1_WEEK_SWA" +msgstr "1 week" + +msgid "IDS_ST_OPT_1_DAY_SWA" +msgstr "1 day" + +msgid "IDS_ST_OPT_1_MONTH_SWA" +msgstr "1 month" + +msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA" +msgstr "Report details" + +msgid "IDS_ST_BODY_CATEGORY_C_SWA" +msgstr "Category:" + +msgid "IDS_ST_BODY_APP_C_SWA" +msgstr "App:" + +msgid "IDS_ST_BODY_DESTINATION_C_SWA" +msgstr "Destination:" + +msgid "IDS_ST_BODY_PATTERN_C_SWA" +msgstr "Pattern:" + +msgid "IDS_ST_BODY_DLP_ACTION" +msgstr "Action" + +msgid "IDS_ST_BODY_PACKET_C_SWA" +msgstr "Packet:" + +msgid "IDS_ST_BODY_DLP_ACTION_ALLOW" +msgstr "Allow" + +msgid "IDS_ST_BODY_DLP_ACTION_DENY" +msgstr "Deny" + +msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE" +msgstr "Sanitize" + +msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES" +msgstr "All Rules" + +msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA" +msgstr "Quick" + +msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA" +msgstr "Create rules quickly and easily." + +msgid "IDS_ST_MBODY_CUSTOM_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CREATE_RULES_FROM_SCRATCH_TO_GIVE_YOU_FULL_CONTROL_OF_YOUR_DATA_PROTECTION_USE_THIS_OPTION_TO_CREATE_NON_STANDARD_RULES_SWA" +msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules." + +msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA" +msgstr "Custom protection mode" + +msgid "IDS_ST_TAB_RULES_SWA" +msgstr "Rules" + +msgid "IDS_ST_TAB_PATTERNS_SWA" +msgstr "Patterns" + +msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA" +msgstr "Select template" + +msgid "IDS_ST_HEADER_SELECT_APPS_SWA" +msgstr "Select apps" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION" +msgstr "Select Action" + +msgid "IDS_ST_ACBUTTON_NEXT_SWA" +msgstr "NEXT" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK" +msgstr "OK" + +msgid "IDS_ST_ACBUTTON_DONE_SWA" +msgstr "DONE" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE" +msgstr "Rule created." + +msgid "IDS_ST_TPOP_RULE_DELETED_SWA" +msgstr "Rule deleted." + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE" +msgstr "Delete Rule" + +msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA" +msgstr "Delete patterns" + +msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA" +msgstr "This rule will be deleted." + +msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA" +msgstr "Create pattern" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN" +msgstr "Custom" + +msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA" +msgstr "%d patterns deleted." + +msgid "IDS_ST_OPT_EDIT_SWA" +msgstr "Edit" + +msgid "IDS_ST_OPT_CREATE_SWA" +msgstr "Create" + +msgid "IDS_ST_OPT_ALL_PATTERNS_SWA" +msgstr "All patterns" + +msgid "IDS_ST_BODY_NAME_SWA" +msgstr "Name" + +msgid "IDS_ST_BODY_DESCRIPTION_SWA" +msgstr "Description" + +msgid "IDS_ST_BODY_CATEGORY_SWA" +msgstr "Category" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME" +msgstr "Category name" + +msgid "IDS_ST_OPT_STRING_MATCH_SWA" +msgstr "String match" + +msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA" +msgstr "Regular expression" + +msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d patterns will be deleted." + +msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA" +msgstr "This report will be deleted." + +msgid "IDS_ST_OPT_DELETE_SWA" +msgstr "Delete" + +msgid "IDS_ST_HEADER_DELETE_REPORT_SWA" +msgstr "Delete report" + +msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d reports will be deleted." + +msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA" +msgstr "1 report deleted." + +msgid "IDS_ST_MBODY_SELECT_ALL_SWA" +msgstr "Select all" + +msgid "IDS_ST_ACBUTTON_DELETE_SWA" +msgstr "DELETE" + +msgid "IDS_ST_ACBUTTON_CANCEL_SWA" +msgstr "CANCEL" + +msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA" +msgstr "%d reports deleted." + +msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA" +msgstr "Select items" + +msgid "IDS_ST_HEADER_PD_SELECTED_SWA" +msgstr "%d selected" + +msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Basic protection mode turned on." + +msgid "IDS_ST_TPOP_RULE_CREATED_SWA" +msgstr "Rule created. Custom protection mode turned on." + +msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Advanced protection mode turned on." + +msgid "IDS_ST_HEADER_DETAILS_SWA" +msgstr "Details" + +msgid "IDS_ST_BODY_STRING_TYPE_SWA" +msgstr "String type" + +msgid "IDS_ST_BODY_SEARCH_TERM_SWA" +msgstr "Search term" + +msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA" +msgstr "Leaks captured" + +msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA" +msgstr "Total leaks" + +msgid "IDS_ST_HEADER_RULE_DETAILS_SWA" +msgstr "Rule details" + +msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA" +msgstr "Pattern details" @@ -31,3 +31,272 @@ msgstr "%d-krat" msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB" msgstr "Zasebnost in varnost" +msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA" +msgstr "Prevent apps from leaking your sensitive data without authorisation." + +msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA" +msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts." + +msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA" +msgstr "Protection mode" + +msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA" +msgstr "Basic" + +msgid "IDS_ST_SBODY_MONITOR_YOUR_MAIN_SENSITIVE_DATA_TO_PREVENT_IT_FROM_BEING_LEAKED_BY_MOST_APPS_THIS_MODE_IS_SUITABLE_FOR_REGULAR_USERS_SWA" +msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users." + +msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA" +msgstr "Advanced" + +msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA" +msgstr "Set up strict rules to prevent data leakage." + +msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA" +msgstr "This mode will affect app performance." + +msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA" +msgstr "Some apps may be blocked." + +msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA" +msgstr "Turn on Advanced protection mode" + +msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA" +msgstr "Change default rules and patterns and create your own to set up a customised protection mode." + +msgid "IDS_ST_HEADER_REPORTS_SWA" +msgstr "Reports" + +msgid "IDS_ST_MBODY_FULL_REPORTS_SWA" +msgstr "Full reports" + +msgid "IDS_ST_MBODY_APP_RANKINGS_SWA" +msgstr "App rankings" + +msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA" +msgstr "Data statistics" + +msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA" +msgstr "Rules and patterns" + +msgid "IDS_ST_NPBODY_NO_REPORTS_SWA" +msgstr "No reports" + +msgid "IDS_ST_HEADER_SETTINGS_SWA" +msgstr "Settings" + +msgid "IDS_ST_MBODY_KEEP_LOGS_SWA" +msgstr "Keep logs" + +msgid "IDS_LOGS_CLEANED" +msgstr "Logs cleaned" + +msgid "IDS_LOGS_CLEANED_FAILED" +msgstr "Failed to clean logs" + +msgid "IDS_ST_OPT_1_WEEK_SWA" +msgstr "1 week" + +msgid "IDS_ST_OPT_1_DAY_SWA" +msgstr "1 day" + +msgid "IDS_ST_OPT_1_MONTH_SWA" +msgstr "1 month" + +msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA" +msgstr "Report details" + +msgid "IDS_ST_BODY_CATEGORY_C_SWA" +msgstr "Category:" + +msgid "IDS_ST_BODY_APP_C_SWA" +msgstr "App:" + +msgid "IDS_ST_BODY_DESTINATION_C_SWA" +msgstr "Destination:" + +msgid "IDS_ST_BODY_PATTERN_C_SWA" +msgstr "Pattern:" + +msgid "IDS_ST_BODY_DLP_ACTION" +msgstr "Action" + +msgid "IDS_ST_BODY_PACKET_C_SWA" +msgstr "Packet:" + +msgid "IDS_ST_BODY_DLP_ACTION_ALLOW" +msgstr "Allow" + +msgid "IDS_ST_BODY_DLP_ACTION_DENY" +msgstr "Deny" + +msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE" +msgstr "Sanitize" + +msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES" +msgstr "All Rules" + +msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA" +msgstr "Quick" + +msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA" +msgstr "Create rules quickly and easily." + +msgid "IDS_ST_MBODY_CUSTOM_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CREATE_RULES_FROM_SCRATCH_TO_GIVE_YOU_FULL_CONTROL_OF_YOUR_DATA_PROTECTION_USE_THIS_OPTION_TO_CREATE_NON_STANDARD_RULES_SWA" +msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules." + +msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA" +msgstr "Custom protection mode" + +msgid "IDS_ST_TAB_RULES_SWA" +msgstr "Rules" + +msgid "IDS_ST_TAB_PATTERNS_SWA" +msgstr "Patterns" + +msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA" +msgstr "Select template" + +msgid "IDS_ST_HEADER_SELECT_APPS_SWA" +msgstr "Select apps" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION" +msgstr "Select Action" + +msgid "IDS_ST_ACBUTTON_NEXT_SWA" +msgstr "NEXT" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK" +msgstr "OK" + +msgid "IDS_ST_ACBUTTON_DONE_SWA" +msgstr "DONE" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE" +msgstr "Rule created." + +msgid "IDS_ST_TPOP_RULE_DELETED_SWA" +msgstr "Rule deleted." + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE" +msgstr "Delete Rule" + +msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA" +msgstr "Delete patterns" + +msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA" +msgstr "This rule will be deleted." + +msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA" +msgstr "Create pattern" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN" +msgstr "Custom" + +msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA" +msgstr "%d patterns deleted." + +msgid "IDS_ST_OPT_EDIT_SWA" +msgstr "Edit" + +msgid "IDS_ST_OPT_CREATE_SWA" +msgstr "Create" + +msgid "IDS_ST_OPT_ALL_PATTERNS_SWA" +msgstr "All patterns" + +msgid "IDS_ST_BODY_NAME_SWA" +msgstr "Name" + +msgid "IDS_ST_BODY_DESCRIPTION_SWA" +msgstr "Description" + +msgid "IDS_ST_BODY_CATEGORY_SWA" +msgstr "Category" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME" +msgstr "Category name" + +msgid "IDS_ST_OPT_STRING_MATCH_SWA" +msgstr "String match" + +msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA" +msgstr "Regular expression" + +msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d patterns will be deleted." + +msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA" +msgstr "This report will be deleted." + +msgid "IDS_ST_OPT_DELETE_SWA" +msgstr "Delete" + +msgid "IDS_ST_HEADER_DELETE_REPORT_SWA" +msgstr "Delete report" + +msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d reports will be deleted." + +msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA" +msgstr "1 report deleted." + +msgid "IDS_ST_MBODY_SELECT_ALL_SWA" +msgstr "Select all" + +msgid "IDS_ST_ACBUTTON_DELETE_SWA" +msgstr "DELETE" + +msgid "IDS_ST_ACBUTTON_CANCEL_SWA" +msgstr "CANCEL" + +msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA" +msgstr "%d reports deleted." + +msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA" +msgstr "Select items" + +msgid "IDS_ST_HEADER_PD_SELECTED_SWA" +msgstr "%d selected" + +msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Basic protection mode turned on." + +msgid "IDS_ST_TPOP_RULE_CREATED_SWA" +msgstr "Rule created. Custom protection mode turned on." + +msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Advanced protection mode turned on." + +msgid "IDS_ST_HEADER_DETAILS_SWA" +msgstr "Details" + +msgid "IDS_ST_BODY_STRING_TYPE_SWA" +msgstr "String type" + +msgid "IDS_ST_BODY_SEARCH_TERM_SWA" +msgstr "Search term" + +msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA" +msgstr "Leaks captured" + +msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA" +msgstr "Total leaks" + +msgid "IDS_ST_HEADER_RULE_DETAILS_SWA" +msgstr "Rule details" + +msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA" +msgstr "Pattern details" @@ -31,3 +31,272 @@ msgstr "%d puta" msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB" msgstr "Privatnost i bezbednost" +msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA" +msgstr "Prevent apps from leaking your sensitive data without authorisation." + +msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA" +msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts." + +msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA" +msgstr "Protection mode" + +msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA" +msgstr "Basic" + +msgid "IDS_ST_SBODY_MONITOR_YOUR_MAIN_SENSITIVE_DATA_TO_PREVENT_IT_FROM_BEING_LEAKED_BY_MOST_APPS_THIS_MODE_IS_SUITABLE_FOR_REGULAR_USERS_SWA" +msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users." + +msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA" +msgstr "Advanced" + +msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA" +msgstr "Set up strict rules to prevent data leakage." + +msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA" +msgstr "This mode will affect app performance." + +msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA" +msgstr "Some apps may be blocked." + +msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA" +msgstr "Turn on Advanced protection mode" + +msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA" +msgstr "Change default rules and patterns and create your own to set up a customised protection mode." + +msgid "IDS_ST_HEADER_REPORTS_SWA" +msgstr "Reports" + +msgid "IDS_ST_MBODY_FULL_REPORTS_SWA" +msgstr "Full reports" + +msgid "IDS_ST_MBODY_APP_RANKINGS_SWA" +msgstr "App rankings" + +msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA" +msgstr "Data statistics" + +msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA" +msgstr "Rules and patterns" + +msgid "IDS_ST_NPBODY_NO_REPORTS_SWA" +msgstr "No reports" + +msgid "IDS_ST_HEADER_SETTINGS_SWA" +msgstr "Settings" + +msgid "IDS_ST_MBODY_KEEP_LOGS_SWA" +msgstr "Keep logs" + +msgid "IDS_LOGS_CLEANED" +msgstr "Logs cleaned" + +msgid "IDS_LOGS_CLEANED_FAILED" +msgstr "Failed to clean logs" + +msgid "IDS_ST_OPT_1_WEEK_SWA" +msgstr "1 week" + +msgid "IDS_ST_OPT_1_DAY_SWA" +msgstr "1 day" + +msgid "IDS_ST_OPT_1_MONTH_SWA" +msgstr "1 month" + +msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA" +msgstr "Report details" + +msgid "IDS_ST_BODY_CATEGORY_C_SWA" +msgstr "Category:" + +msgid "IDS_ST_BODY_APP_C_SWA" +msgstr "App:" + +msgid "IDS_ST_BODY_DESTINATION_C_SWA" +msgstr "Destination:" + +msgid "IDS_ST_BODY_PATTERN_C_SWA" +msgstr "Pattern:" + +msgid "IDS_ST_BODY_DLP_ACTION" +msgstr "Action" + +msgid "IDS_ST_BODY_PACKET_C_SWA" +msgstr "Packet:" + +msgid "IDS_ST_BODY_DLP_ACTION_ALLOW" +msgstr "Allow" + +msgid "IDS_ST_BODY_DLP_ACTION_DENY" +msgstr "Deny" + +msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE" +msgstr "Sanitize" + +msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES" +msgstr "All Rules" + +msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA" +msgstr "Quick" + +msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA" +msgstr "Create rules quickly and easily." + +msgid "IDS_ST_MBODY_CUSTOM_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CREATE_RULES_FROM_SCRATCH_TO_GIVE_YOU_FULL_CONTROL_OF_YOUR_DATA_PROTECTION_USE_THIS_OPTION_TO_CREATE_NON_STANDARD_RULES_SWA" +msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules." + +msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA" +msgstr "Custom protection mode" + +msgid "IDS_ST_TAB_RULES_SWA" +msgstr "Rules" + +msgid "IDS_ST_TAB_PATTERNS_SWA" +msgstr "Patterns" + +msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA" +msgstr "Select template" + +msgid "IDS_ST_HEADER_SELECT_APPS_SWA" +msgstr "Select apps" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION" +msgstr "Select Action" + +msgid "IDS_ST_ACBUTTON_NEXT_SWA" +msgstr "NEXT" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK" +msgstr "OK" + +msgid "IDS_ST_ACBUTTON_DONE_SWA" +msgstr "DONE" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE" +msgstr "Rule created." + +msgid "IDS_ST_TPOP_RULE_DELETED_SWA" +msgstr "Rule deleted." + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE" +msgstr "Delete Rule" + +msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA" +msgstr "Delete patterns" + +msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA" +msgstr "This rule will be deleted." + +msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA" +msgstr "Create pattern" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN" +msgstr "Custom" + +msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA" +msgstr "%d patterns deleted." + +msgid "IDS_ST_OPT_EDIT_SWA" +msgstr "Edit" + +msgid "IDS_ST_OPT_CREATE_SWA" +msgstr "Create" + +msgid "IDS_ST_OPT_ALL_PATTERNS_SWA" +msgstr "All patterns" + +msgid "IDS_ST_BODY_NAME_SWA" +msgstr "Name" + +msgid "IDS_ST_BODY_DESCRIPTION_SWA" +msgstr "Description" + +msgid "IDS_ST_BODY_CATEGORY_SWA" +msgstr "Category" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME" +msgstr "Category name" + +msgid "IDS_ST_OPT_STRING_MATCH_SWA" +msgstr "String match" + +msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA" +msgstr "Regular expression" + +msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d patterns will be deleted." + +msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA" +msgstr "This report will be deleted." + +msgid "IDS_ST_OPT_DELETE_SWA" +msgstr "Delete" + +msgid "IDS_ST_HEADER_DELETE_REPORT_SWA" +msgstr "Delete report" + +msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d reports will be deleted." + +msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA" +msgstr "1 report deleted." + +msgid "IDS_ST_MBODY_SELECT_ALL_SWA" +msgstr "Select all" + +msgid "IDS_ST_ACBUTTON_DELETE_SWA" +msgstr "DELETE" + +msgid "IDS_ST_ACBUTTON_CANCEL_SWA" +msgstr "CANCEL" + +msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA" +msgstr "%d reports deleted." + +msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA" +msgstr "Select items" + +msgid "IDS_ST_HEADER_PD_SELECTED_SWA" +msgstr "%d selected" + +msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Basic protection mode turned on." + +msgid "IDS_ST_TPOP_RULE_CREATED_SWA" +msgstr "Rule created. Custom protection mode turned on." + +msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Advanced protection mode turned on." + +msgid "IDS_ST_HEADER_DETAILS_SWA" +msgstr "Details" + +msgid "IDS_ST_BODY_STRING_TYPE_SWA" +msgstr "String type" + +msgid "IDS_ST_BODY_SEARCH_TERM_SWA" +msgstr "Search term" + +msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA" +msgstr "Leaks captured" + +msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA" +msgstr "Total leaks" + +msgid "IDS_ST_HEADER_RULE_DETAILS_SWA" +msgstr "Rule details" + +msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA" +msgstr "Pattern details" @@ -31,3 +31,272 @@ msgstr "%d gånger" msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB" msgstr "Sekretess och säkerhet" +msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA" +msgstr "Prevent apps from leaking your sensitive data without authorisation." + +msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA" +msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts." + +msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA" +msgstr "Protection mode" + +msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA" +msgstr "Basic" + +msgid "IDS_ST_SBODY_MONITOR_YOUR_MAIN_SENSITIVE_DATA_TO_PREVENT_IT_FROM_BEING_LEAKED_BY_MOST_APPS_THIS_MODE_IS_SUITABLE_FOR_REGULAR_USERS_SWA" +msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users." + +msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA" +msgstr "Advanced" + +msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA" +msgstr "Set up strict rules to prevent data leakage." + +msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA" +msgstr "This mode will affect app performance." + +msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA" +msgstr "Some apps may be blocked." + +msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA" +msgstr "Turn on Advanced protection mode" + +msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA" +msgstr "Change default rules and patterns and create your own to set up a customised protection mode." + +msgid "IDS_ST_HEADER_REPORTS_SWA" +msgstr "Reports" + +msgid "IDS_ST_MBODY_FULL_REPORTS_SWA" +msgstr "Full reports" + +msgid "IDS_ST_MBODY_APP_RANKINGS_SWA" +msgstr "App rankings" + +msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA" +msgstr "Data statistics" + +msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA" +msgstr "Rules and patterns" + +msgid "IDS_ST_NPBODY_NO_REPORTS_SWA" +msgstr "No reports" + +msgid "IDS_ST_HEADER_SETTINGS_SWA" +msgstr "Settings" + +msgid "IDS_ST_MBODY_KEEP_LOGS_SWA" +msgstr "Keep logs" + +msgid "IDS_LOGS_CLEANED" +msgstr "Logs cleaned" + +msgid "IDS_LOGS_CLEANED_FAILED" +msgstr "Failed to clean logs" + +msgid "IDS_ST_OPT_1_WEEK_SWA" +msgstr "1 week" + +msgid "IDS_ST_OPT_1_DAY_SWA" +msgstr "1 day" + +msgid "IDS_ST_OPT_1_MONTH_SWA" +msgstr "1 month" + +msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA" +msgstr "Report details" + +msgid "IDS_ST_BODY_CATEGORY_C_SWA" +msgstr "Category:" + +msgid "IDS_ST_BODY_APP_C_SWA" +msgstr "App:" + +msgid "IDS_ST_BODY_DESTINATION_C_SWA" +msgstr "Destination:" + +msgid "IDS_ST_BODY_PATTERN_C_SWA" +msgstr "Pattern:" + +msgid "IDS_ST_BODY_DLP_ACTION" +msgstr "Action" + +msgid "IDS_ST_BODY_PACKET_C_SWA" +msgstr "Packet:" + +msgid "IDS_ST_BODY_DLP_ACTION_ALLOW" +msgstr "Allow" + +msgid "IDS_ST_BODY_DLP_ACTION_DENY" +msgstr "Deny" + +msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE" +msgstr "Sanitize" + +msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES" +msgstr "All Rules" + +msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA" +msgstr "Quick" + +msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA" +msgstr "Create rules quickly and easily." + +msgid "IDS_ST_MBODY_CUSTOM_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CREATE_RULES_FROM_SCRATCH_TO_GIVE_YOU_FULL_CONTROL_OF_YOUR_DATA_PROTECTION_USE_THIS_OPTION_TO_CREATE_NON_STANDARD_RULES_SWA" +msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules." + +msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA" +msgstr "Custom protection mode" + +msgid "IDS_ST_TAB_RULES_SWA" +msgstr "Rules" + +msgid "IDS_ST_TAB_PATTERNS_SWA" +msgstr "Patterns" + +msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA" +msgstr "Select template" + +msgid "IDS_ST_HEADER_SELECT_APPS_SWA" +msgstr "Select apps" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION" +msgstr "Select Action" + +msgid "IDS_ST_ACBUTTON_NEXT_SWA" +msgstr "NEXT" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK" +msgstr "OK" + +msgid "IDS_ST_ACBUTTON_DONE_SWA" +msgstr "DONE" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE" +msgstr "Rule created." + +msgid "IDS_ST_TPOP_RULE_DELETED_SWA" +msgstr "Rule deleted." + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE" +msgstr "Delete Rule" + +msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA" +msgstr "Delete patterns" + +msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA" +msgstr "This rule will be deleted." + +msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA" +msgstr "Create pattern" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN" +msgstr "Custom" + +msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA" +msgstr "%d patterns deleted." + +msgid "IDS_ST_OPT_EDIT_SWA" +msgstr "Edit" + +msgid "IDS_ST_OPT_CREATE_SWA" +msgstr "Create" + +msgid "IDS_ST_OPT_ALL_PATTERNS_SWA" +msgstr "All patterns" + +msgid "IDS_ST_BODY_NAME_SWA" +msgstr "Name" + +msgid "IDS_ST_BODY_DESCRIPTION_SWA" +msgstr "Description" + +msgid "IDS_ST_BODY_CATEGORY_SWA" +msgstr "Category" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME" +msgstr "Category name" + +msgid "IDS_ST_OPT_STRING_MATCH_SWA" +msgstr "String match" + +msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA" +msgstr "Regular expression" + +msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d patterns will be deleted." + +msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA" +msgstr "This report will be deleted." + +msgid "IDS_ST_OPT_DELETE_SWA" +msgstr "Delete" + +msgid "IDS_ST_HEADER_DELETE_REPORT_SWA" +msgstr "Delete report" + +msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d reports will be deleted." + +msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA" +msgstr "1 report deleted." + +msgid "IDS_ST_MBODY_SELECT_ALL_SWA" +msgstr "Select all" + +msgid "IDS_ST_ACBUTTON_DELETE_SWA" +msgstr "DELETE" + +msgid "IDS_ST_ACBUTTON_CANCEL_SWA" +msgstr "CANCEL" + +msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA" +msgstr "%d reports deleted." + +msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA" +msgstr "Select items" + +msgid "IDS_ST_HEADER_PD_SELECTED_SWA" +msgstr "%d selected" + +msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Basic protection mode turned on." + +msgid "IDS_ST_TPOP_RULE_CREATED_SWA" +msgstr "Rule created. Custom protection mode turned on." + +msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Advanced protection mode turned on." + +msgid "IDS_ST_HEADER_DETAILS_SWA" +msgstr "Details" + +msgid "IDS_ST_BODY_STRING_TYPE_SWA" +msgstr "String type" + +msgid "IDS_ST_BODY_SEARCH_TERM_SWA" +msgstr "Search term" + +msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA" +msgstr "Leaks captured" + +msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA" +msgstr "Total leaks" + +msgid "IDS_ST_HEADER_RULE_DETAILS_SWA" +msgstr "Rule details" + +msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA" +msgstr "Pattern details" diff --git a/po/tr_TR.po b/po/tr_TR.po index 8ced949..3f670f8 100755 --- a/po/tr_TR.po +++ b/po/tr_TR.po @@ -31,3 +31,272 @@ msgstr "%d kere" msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB" msgstr "Gizlilik ve güvenlik" +msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA" +msgstr "Prevent apps from leaking your sensitive data without authorisation." + +msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA" +msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts." + +msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA" +msgstr "Protection mode" + +msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA" +msgstr "Basic" + +msgid "IDS_ST_SBODY_MONITOR_YOUR_MAIN_SENSITIVE_DATA_TO_PREVENT_IT_FROM_BEING_LEAKED_BY_MOST_APPS_THIS_MODE_IS_SUITABLE_FOR_REGULAR_USERS_SWA" +msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users." + +msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA" +msgstr "Advanced" + +msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA" +msgstr "Set up strict rules to prevent data leakage." + +msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA" +msgstr "This mode will affect app performance." + +msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA" +msgstr "Some apps may be blocked." + +msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA" +msgstr "Turn on Advanced protection mode" + +msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA" +msgstr "Change default rules and patterns and create your own to set up a customised protection mode." + +msgid "IDS_ST_HEADER_REPORTS_SWA" +msgstr "Reports" + +msgid "IDS_ST_MBODY_FULL_REPORTS_SWA" +msgstr "Full reports" + +msgid "IDS_ST_MBODY_APP_RANKINGS_SWA" +msgstr "App rankings" + +msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA" +msgstr "Data statistics" + +msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA" +msgstr "Rules and patterns" + +msgid "IDS_ST_NPBODY_NO_REPORTS_SWA" +msgstr "No reports" + +msgid "IDS_ST_HEADER_SETTINGS_SWA" +msgstr "Settings" + +msgid "IDS_ST_MBODY_KEEP_LOGS_SWA" +msgstr "Keep logs" + +msgid "IDS_LOGS_CLEANED" +msgstr "Logs cleaned" + +msgid "IDS_LOGS_CLEANED_FAILED" +msgstr "Failed to clean logs" + +msgid "IDS_ST_OPT_1_WEEK_SWA" +msgstr "1 week" + +msgid "IDS_ST_OPT_1_DAY_SWA" +msgstr "1 day" + +msgid "IDS_ST_OPT_1_MONTH_SWA" +msgstr "1 month" + +msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA" +msgstr "Report details" + +msgid "IDS_ST_BODY_CATEGORY_C_SWA" +msgstr "Category:" + +msgid "IDS_ST_BODY_APP_C_SWA" +msgstr "App:" + +msgid "IDS_ST_BODY_DESTINATION_C_SWA" +msgstr "Destination:" + +msgid "IDS_ST_BODY_PATTERN_C_SWA" +msgstr "Pattern:" + +msgid "IDS_ST_BODY_DLP_ACTION" +msgstr "Action" + +msgid "IDS_ST_BODY_PACKET_C_SWA" +msgstr "Packet:" + +msgid "IDS_ST_BODY_DLP_ACTION_ALLOW" +msgstr "Allow" + +msgid "IDS_ST_BODY_DLP_ACTION_DENY" +msgstr "Deny" + +msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE" +msgstr "Sanitize" + +msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES" +msgstr "All Rules" + +msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA" +msgstr "Quick" + +msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA" +msgstr "Create rules quickly and easily." + +msgid "IDS_ST_MBODY_CUSTOM_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CREATE_RULES_FROM_SCRATCH_TO_GIVE_YOU_FULL_CONTROL_OF_YOUR_DATA_PROTECTION_USE_THIS_OPTION_TO_CREATE_NON_STANDARD_RULES_SWA" +msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules." + +msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA" +msgstr "Custom protection mode" + +msgid "IDS_ST_TAB_RULES_SWA" +msgstr "Rules" + +msgid "IDS_ST_TAB_PATTERNS_SWA" +msgstr "Patterns" + +msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA" +msgstr "Select template" + +msgid "IDS_ST_HEADER_SELECT_APPS_SWA" +msgstr "Select apps" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION" +msgstr "Select Action" + +msgid "IDS_ST_ACBUTTON_NEXT_SWA" +msgstr "NEXT" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK" +msgstr "OK" + +msgid "IDS_ST_ACBUTTON_DONE_SWA" +msgstr "DONE" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE" +msgstr "Rule created." + +msgid "IDS_ST_TPOP_RULE_DELETED_SWA" +msgstr "Rule deleted." + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE" +msgstr "Delete Rule" + +msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA" +msgstr "Delete patterns" + +msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA" +msgstr "This rule will be deleted." + +msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA" +msgstr "Create pattern" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN" +msgstr "Custom" + +msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA" +msgstr "%d patterns deleted." + +msgid "IDS_ST_OPT_EDIT_SWA" +msgstr "Edit" + +msgid "IDS_ST_OPT_CREATE_SWA" +msgstr "Create" + +msgid "IDS_ST_OPT_ALL_PATTERNS_SWA" +msgstr "All patterns" + +msgid "IDS_ST_BODY_NAME_SWA" +msgstr "Name" + +msgid "IDS_ST_BODY_DESCRIPTION_SWA" +msgstr "Description" + +msgid "IDS_ST_BODY_CATEGORY_SWA" +msgstr "Category" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME" +msgstr "Category name" + +msgid "IDS_ST_OPT_STRING_MATCH_SWA" +msgstr "String match" + +msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA" +msgstr "Regular expression" + +msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d patterns will be deleted." + +msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA" +msgstr "This report will be deleted." + +msgid "IDS_ST_OPT_DELETE_SWA" +msgstr "Delete" + +msgid "IDS_ST_HEADER_DELETE_REPORT_SWA" +msgstr "Delete report" + +msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d reports will be deleted." + +msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA" +msgstr "1 report deleted." + +msgid "IDS_ST_MBODY_SELECT_ALL_SWA" +msgstr "Select all" + +msgid "IDS_ST_ACBUTTON_DELETE_SWA" +msgstr "DELETE" + +msgid "IDS_ST_ACBUTTON_CANCEL_SWA" +msgstr "CANCEL" + +msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA" +msgstr "%d reports deleted." + +msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA" +msgstr "Select items" + +msgid "IDS_ST_HEADER_PD_SELECTED_SWA" +msgstr "%d selected" + +msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Basic protection mode turned on." + +msgid "IDS_ST_TPOP_RULE_CREATED_SWA" +msgstr "Rule created. Custom protection mode turned on." + +msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Advanced protection mode turned on." + +msgid "IDS_ST_HEADER_DETAILS_SWA" +msgstr "Details" + +msgid "IDS_ST_BODY_STRING_TYPE_SWA" +msgstr "String type" + +msgid "IDS_ST_BODY_SEARCH_TERM_SWA" +msgstr "Search term" + +msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA" +msgstr "Leaks captured" + +msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA" +msgstr "Total leaks" + +msgid "IDS_ST_HEADER_RULE_DETAILS_SWA" +msgstr "Rule details" + +msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA" +msgstr "Pattern details" @@ -31,3 +31,272 @@ msgstr "%d разів" msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB" msgstr "Конфіденц. та безпека" +msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA" +msgstr "Prevent apps from leaking your sensitive data without authorisation." + +msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA" +msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts." + +msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA" +msgstr "Protection mode" + +msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA" +msgstr "Basic" + +msgid "IDS_ST_SBODY_MONITOR_YOUR_MAIN_SENSITIVE_DATA_TO_PREVENT_IT_FROM_BEING_LEAKED_BY_MOST_APPS_THIS_MODE_IS_SUITABLE_FOR_REGULAR_USERS_SWA" +msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users." + +msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA" +msgstr "Advanced" + +msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA" +msgstr "Set up strict rules to prevent data leakage." + +msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA" +msgstr "This mode will affect app performance." + +msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA" +msgstr "Some apps may be blocked." + +msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA" +msgstr "Turn on Advanced protection mode" + +msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA" +msgstr "Change default rules and patterns and create your own to set up a customised protection mode." + +msgid "IDS_ST_HEADER_REPORTS_SWA" +msgstr "Reports" + +msgid "IDS_ST_MBODY_FULL_REPORTS_SWA" +msgstr "Full reports" + +msgid "IDS_ST_MBODY_APP_RANKINGS_SWA" +msgstr "App rankings" + +msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA" +msgstr "Data statistics" + +msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA" +msgstr "Rules and patterns" + +msgid "IDS_ST_NPBODY_NO_REPORTS_SWA" +msgstr "No reports" + +msgid "IDS_ST_HEADER_SETTINGS_SWA" +msgstr "Settings" + +msgid "IDS_ST_MBODY_KEEP_LOGS_SWA" +msgstr "Keep logs" + +msgid "IDS_LOGS_CLEANED" +msgstr "Logs cleaned" + +msgid "IDS_LOGS_CLEANED_FAILED" +msgstr "Failed to clean logs" + +msgid "IDS_ST_OPT_1_WEEK_SWA" +msgstr "1 week" + +msgid "IDS_ST_OPT_1_DAY_SWA" +msgstr "1 day" + +msgid "IDS_ST_OPT_1_MONTH_SWA" +msgstr "1 month" + +msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA" +msgstr "Report details" + +msgid "IDS_ST_BODY_CATEGORY_C_SWA" +msgstr "Category:" + +msgid "IDS_ST_BODY_APP_C_SWA" +msgstr "App:" + +msgid "IDS_ST_BODY_DESTINATION_C_SWA" +msgstr "Destination:" + +msgid "IDS_ST_BODY_PATTERN_C_SWA" +msgstr "Pattern:" + +msgid "IDS_ST_BODY_DLP_ACTION" +msgstr "Action" + +msgid "IDS_ST_BODY_PACKET_C_SWA" +msgstr "Packet:" + +msgid "IDS_ST_BODY_DLP_ACTION_ALLOW" +msgstr "Allow" + +msgid "IDS_ST_BODY_DLP_ACTION_DENY" +msgstr "Deny" + +msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE" +msgstr "Sanitize" + +msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES" +msgstr "All Rules" + +msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA" +msgstr "Quick" + +msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA" +msgstr "Create rules quickly and easily." + +msgid "IDS_ST_MBODY_CUSTOM_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CREATE_RULES_FROM_SCRATCH_TO_GIVE_YOU_FULL_CONTROL_OF_YOUR_DATA_PROTECTION_USE_THIS_OPTION_TO_CREATE_NON_STANDARD_RULES_SWA" +msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules." + +msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA" +msgstr "Custom protection mode" + +msgid "IDS_ST_TAB_RULES_SWA" +msgstr "Rules" + +msgid "IDS_ST_TAB_PATTERNS_SWA" +msgstr "Patterns" + +msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA" +msgstr "Select template" + +msgid "IDS_ST_HEADER_SELECT_APPS_SWA" +msgstr "Select apps" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION" +msgstr "Select Action" + +msgid "IDS_ST_ACBUTTON_NEXT_SWA" +msgstr "NEXT" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK" +msgstr "OK" + +msgid "IDS_ST_ACBUTTON_DONE_SWA" +msgstr "DONE" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE" +msgstr "Rule created." + +msgid "IDS_ST_TPOP_RULE_DELETED_SWA" +msgstr "Rule deleted." + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE" +msgstr "Delete Rule" + +msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA" +msgstr "Delete patterns" + +msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA" +msgstr "This rule will be deleted." + +msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA" +msgstr "Create pattern" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN" +msgstr "Custom" + +msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA" +msgstr "%d patterns deleted." + +msgid "IDS_ST_OPT_EDIT_SWA" +msgstr "Edit" + +msgid "IDS_ST_OPT_CREATE_SWA" +msgstr "Create" + +msgid "IDS_ST_OPT_ALL_PATTERNS_SWA" +msgstr "All patterns" + +msgid "IDS_ST_BODY_NAME_SWA" +msgstr "Name" + +msgid "IDS_ST_BODY_DESCRIPTION_SWA" +msgstr "Description" + +msgid "IDS_ST_BODY_CATEGORY_SWA" +msgstr "Category" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME" +msgstr "Category name" + +msgid "IDS_ST_OPT_STRING_MATCH_SWA" +msgstr "String match" + +msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA" +msgstr "Regular expression" + +msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d patterns will be deleted." + +msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA" +msgstr "This report will be deleted." + +msgid "IDS_ST_OPT_DELETE_SWA" +msgstr "Delete" + +msgid "IDS_ST_HEADER_DELETE_REPORT_SWA" +msgstr "Delete report" + +msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d reports will be deleted." + +msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA" +msgstr "1 report deleted." + +msgid "IDS_ST_MBODY_SELECT_ALL_SWA" +msgstr "Select all" + +msgid "IDS_ST_ACBUTTON_DELETE_SWA" +msgstr "DELETE" + +msgid "IDS_ST_ACBUTTON_CANCEL_SWA" +msgstr "CANCEL" + +msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA" +msgstr "%d reports deleted." + +msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA" +msgstr "Select items" + +msgid "IDS_ST_HEADER_PD_SELECTED_SWA" +msgstr "%d selected" + +msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Basic protection mode turned on." + +msgid "IDS_ST_TPOP_RULE_CREATED_SWA" +msgstr "Rule created. Custom protection mode turned on." + +msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Advanced protection mode turned on." + +msgid "IDS_ST_HEADER_DETAILS_SWA" +msgstr "Details" + +msgid "IDS_ST_BODY_STRING_TYPE_SWA" +msgstr "String type" + +msgid "IDS_ST_BODY_SEARCH_TERM_SWA" +msgstr "Search term" + +msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA" +msgstr "Leaks captured" + +msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA" +msgstr "Total leaks" + +msgid "IDS_ST_HEADER_RULE_DETAILS_SWA" +msgstr "Rule details" + +msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA" +msgstr "Pattern details" @@ -31,3 +31,272 @@ msgstr "%d marta" msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB" msgstr "Maxfiy. va xavfsizlik" +msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA" +msgstr "Prevent apps from leaking your sensitive data without authorisation." + +msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA" +msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts." + +msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA" +msgstr "Protection mode" + +msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA" +msgstr "Basic" + +msgid "IDS_ST_SBODY_MONITOR_YOUR_MAIN_SENSITIVE_DATA_TO_PREVENT_IT_FROM_BEING_LEAKED_BY_MOST_APPS_THIS_MODE_IS_SUITABLE_FOR_REGULAR_USERS_SWA" +msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users." + +msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA" +msgstr "Advanced" + +msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA" +msgstr "Set up strict rules to prevent data leakage." + +msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA" +msgstr "This mode will affect app performance." + +msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA" +msgstr "Some apps may be blocked." + +msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA" +msgstr "Turn on Advanced protection mode" + +msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA" +msgstr "Change default rules and patterns and create your own to set up a customised protection mode." + +msgid "IDS_ST_HEADER_REPORTS_SWA" +msgstr "Reports" + +msgid "IDS_ST_MBODY_FULL_REPORTS_SWA" +msgstr "Full reports" + +msgid "IDS_ST_MBODY_APP_RANKINGS_SWA" +msgstr "App rankings" + +msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA" +msgstr "Data statistics" + +msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA" +msgstr "Rules and patterns" + +msgid "IDS_ST_NPBODY_NO_REPORTS_SWA" +msgstr "No reports" + +msgid "IDS_ST_HEADER_SETTINGS_SWA" +msgstr "Settings" + +msgid "IDS_ST_MBODY_KEEP_LOGS_SWA" +msgstr "Keep logs" + +msgid "IDS_LOGS_CLEANED" +msgstr "Logs cleaned" + +msgid "IDS_LOGS_CLEANED_FAILED" +msgstr "Failed to clean logs" + +msgid "IDS_ST_OPT_1_WEEK_SWA" +msgstr "1 week" + +msgid "IDS_ST_OPT_1_DAY_SWA" +msgstr "1 day" + +msgid "IDS_ST_OPT_1_MONTH_SWA" +msgstr "1 month" + +msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA" +msgstr "Report details" + +msgid "IDS_ST_BODY_CATEGORY_C_SWA" +msgstr "Category:" + +msgid "IDS_ST_BODY_APP_C_SWA" +msgstr "App:" + +msgid "IDS_ST_BODY_DESTINATION_C_SWA" +msgstr "Destination:" + +msgid "IDS_ST_BODY_PATTERN_C_SWA" +msgstr "Pattern:" + +msgid "IDS_ST_BODY_DLP_ACTION" +msgstr "Action" + +msgid "IDS_ST_BODY_PACKET_C_SWA" +msgstr "Packet:" + +msgid "IDS_ST_BODY_DLP_ACTION_ALLOW" +msgstr "Allow" + +msgid "IDS_ST_BODY_DLP_ACTION_DENY" +msgstr "Deny" + +msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE" +msgstr "Sanitize" + +msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES" +msgstr "All Rules" + +msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA" +msgstr "Quick" + +msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA" +msgstr "Create rules quickly and easily." + +msgid "IDS_ST_MBODY_CUSTOM_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CREATE_RULES_FROM_SCRATCH_TO_GIVE_YOU_FULL_CONTROL_OF_YOUR_DATA_PROTECTION_USE_THIS_OPTION_TO_CREATE_NON_STANDARD_RULES_SWA" +msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules." + +msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA" +msgstr "Custom protection mode" + +msgid "IDS_ST_TAB_RULES_SWA" +msgstr "Rules" + +msgid "IDS_ST_TAB_PATTERNS_SWA" +msgstr "Patterns" + +msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA" +msgstr "Select template" + +msgid "IDS_ST_HEADER_SELECT_APPS_SWA" +msgstr "Select apps" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION" +msgstr "Select Action" + +msgid "IDS_ST_ACBUTTON_NEXT_SWA" +msgstr "NEXT" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK" +msgstr "OK" + +msgid "IDS_ST_ACBUTTON_DONE_SWA" +msgstr "DONE" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE" +msgstr "Rule created." + +msgid "IDS_ST_TPOP_RULE_DELETED_SWA" +msgstr "Rule deleted." + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE" +msgstr "Delete Rule" + +msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA" +msgstr "Delete patterns" + +msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA" +msgstr "This rule will be deleted." + +msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA" +msgstr "Create pattern" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN" +msgstr "Custom" + +msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA" +msgstr "%d patterns deleted." + +msgid "IDS_ST_OPT_EDIT_SWA" +msgstr "Edit" + +msgid "IDS_ST_OPT_CREATE_SWA" +msgstr "Create" + +msgid "IDS_ST_OPT_ALL_PATTERNS_SWA" +msgstr "All patterns" + +msgid "IDS_ST_BODY_NAME_SWA" +msgstr "Name" + +msgid "IDS_ST_BODY_DESCRIPTION_SWA" +msgstr "Description" + +msgid "IDS_ST_BODY_CATEGORY_SWA" +msgstr "Category" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME" +msgstr "Category name" + +msgid "IDS_ST_OPT_STRING_MATCH_SWA" +msgstr "String match" + +msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA" +msgstr "Regular expression" + +msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d patterns will be deleted." + +msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA" +msgstr "This report will be deleted." + +msgid "IDS_ST_OPT_DELETE_SWA" +msgstr "Delete" + +msgid "IDS_ST_HEADER_DELETE_REPORT_SWA" +msgstr "Delete report" + +msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d reports will be deleted." + +msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA" +msgstr "1 report deleted." + +msgid "IDS_ST_MBODY_SELECT_ALL_SWA" +msgstr "Select all" + +msgid "IDS_ST_ACBUTTON_DELETE_SWA" +msgstr "DELETE" + +msgid "IDS_ST_ACBUTTON_CANCEL_SWA" +msgstr "CANCEL" + +msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA" +msgstr "%d reports deleted." + +msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA" +msgstr "Select items" + +msgid "IDS_ST_HEADER_PD_SELECTED_SWA" +msgstr "%d selected" + +msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Basic protection mode turned on." + +msgid "IDS_ST_TPOP_RULE_CREATED_SWA" +msgstr "Rule created. Custom protection mode turned on." + +msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Advanced protection mode turned on." + +msgid "IDS_ST_HEADER_DETAILS_SWA" +msgstr "Details" + +msgid "IDS_ST_BODY_STRING_TYPE_SWA" +msgstr "String type" + +msgid "IDS_ST_BODY_SEARCH_TERM_SWA" +msgstr "Search term" + +msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA" +msgstr "Leaks captured" + +msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA" +msgstr "Total leaks" + +msgid "IDS_ST_HEADER_RULE_DETAILS_SWA" +msgstr "Rule details" + +msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA" +msgstr "Pattern details" diff --git a/po/zh_CN.po b/po/zh_CN.po index e9161cc..5000e39 100755 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -31,3 +31,272 @@ msgstr "%d 次" msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB" msgstr "隐私和安全" +msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA" +msgstr "Prevent apps from leaking your sensitive data without authorisation." + +msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA" +msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts." + +msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA" +msgstr "Protection mode" + +msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA" +msgstr "Basic" + +msgid "IDS_ST_SBODY_MONITOR_YOUR_MAIN_SENSITIVE_DATA_TO_PREVENT_IT_FROM_BEING_LEAKED_BY_MOST_APPS_THIS_MODE_IS_SUITABLE_FOR_REGULAR_USERS_SWA" +msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users." + +msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA" +msgstr "Advanced" + +msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA" +msgstr "Set up strict rules to prevent data leakage." + +msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA" +msgstr "This mode will affect app performance." + +msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA" +msgstr "Some apps may be blocked." + +msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA" +msgstr "Turn on Advanced protection mode" + +msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA" +msgstr "Change default rules and patterns and create your own to set up a customised protection mode." + +msgid "IDS_ST_HEADER_REPORTS_SWA" +msgstr "Reports" + +msgid "IDS_ST_MBODY_FULL_REPORTS_SWA" +msgstr "Full reports" + +msgid "IDS_ST_MBODY_APP_RANKINGS_SWA" +msgstr "App rankings" + +msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA" +msgstr "Data statistics" + +msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA" +msgstr "Rules and patterns" + +msgid "IDS_ST_NPBODY_NO_REPORTS_SWA" +msgstr "No reports" + +msgid "IDS_ST_HEADER_SETTINGS_SWA" +msgstr "Settings" + +msgid "IDS_ST_MBODY_KEEP_LOGS_SWA" +msgstr "Keep logs" + +msgid "IDS_LOGS_CLEANED" +msgstr "Logs cleaned" + +msgid "IDS_LOGS_CLEANED_FAILED" +msgstr "Failed to clean logs" + +msgid "IDS_ST_OPT_1_WEEK_SWA" +msgstr "1 week" + +msgid "IDS_ST_OPT_1_DAY_SWA" +msgstr "1 day" + +msgid "IDS_ST_OPT_1_MONTH_SWA" +msgstr "1 month" + +msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA" +msgstr "Report details" + +msgid "IDS_ST_BODY_CATEGORY_C_SWA" +msgstr "Category:" + +msgid "IDS_ST_BODY_APP_C_SWA" +msgstr "App:" + +msgid "IDS_ST_BODY_DESTINATION_C_SWA" +msgstr "Destination:" + +msgid "IDS_ST_BODY_PATTERN_C_SWA" +msgstr "Pattern:" + +msgid "IDS_ST_BODY_DLP_ACTION" +msgstr "Action" + +msgid "IDS_ST_BODY_PACKET_C_SWA" +msgstr "Packet:" + +msgid "IDS_ST_BODY_DLP_ACTION_ALLOW" +msgstr "Allow" + +msgid "IDS_ST_BODY_DLP_ACTION_DENY" +msgstr "Deny" + +msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE" +msgstr "Sanitize" + +msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES" +msgstr "All Rules" + +msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA" +msgstr "Quick" + +msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA" +msgstr "Create rules quickly and easily." + +msgid "IDS_ST_MBODY_CUSTOM_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CREATE_RULES_FROM_SCRATCH_TO_GIVE_YOU_FULL_CONTROL_OF_YOUR_DATA_PROTECTION_USE_THIS_OPTION_TO_CREATE_NON_STANDARD_RULES_SWA" +msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules." + +msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA" +msgstr "Custom protection mode" + +msgid "IDS_ST_TAB_RULES_SWA" +msgstr "Rules" + +msgid "IDS_ST_TAB_PATTERNS_SWA" +msgstr "Patterns" + +msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA" +msgstr "Select template" + +msgid "IDS_ST_HEADER_SELECT_APPS_SWA" +msgstr "Select apps" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION" +msgstr "Select Action" + +msgid "IDS_ST_ACBUTTON_NEXT_SWA" +msgstr "NEXT" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK" +msgstr "OK" + +msgid "IDS_ST_ACBUTTON_DONE_SWA" +msgstr "DONE" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE" +msgstr "Rule created." + +msgid "IDS_ST_TPOP_RULE_DELETED_SWA" +msgstr "Rule deleted." + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE" +msgstr "Delete Rule" + +msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA" +msgstr "Delete patterns" + +msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA" +msgstr "This rule will be deleted." + +msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA" +msgstr "Create pattern" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN" +msgstr "Custom" + +msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA" +msgstr "%d patterns deleted." + +msgid "IDS_ST_OPT_EDIT_SWA" +msgstr "Edit" + +msgid "IDS_ST_OPT_CREATE_SWA" +msgstr "Create" + +msgid "IDS_ST_OPT_ALL_PATTERNS_SWA" +msgstr "All patterns" + +msgid "IDS_ST_BODY_NAME_SWA" +msgstr "Name" + +msgid "IDS_ST_BODY_DESCRIPTION_SWA" +msgstr "Description" + +msgid "IDS_ST_BODY_CATEGORY_SWA" +msgstr "Category" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME" +msgstr "Category name" + +msgid "IDS_ST_OPT_STRING_MATCH_SWA" +msgstr "String match" + +msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA" +msgstr "Regular expression" + +msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d patterns will be deleted." + +msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA" +msgstr "This report will be deleted." + +msgid "IDS_ST_OPT_DELETE_SWA" +msgstr "Delete" + +msgid "IDS_ST_HEADER_DELETE_REPORT_SWA" +msgstr "Delete report" + +msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d reports will be deleted." + +msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA" +msgstr "1 report deleted." + +msgid "IDS_ST_MBODY_SELECT_ALL_SWA" +msgstr "Select all" + +msgid "IDS_ST_ACBUTTON_DELETE_SWA" +msgstr "DELETE" + +msgid "IDS_ST_ACBUTTON_CANCEL_SWA" +msgstr "CANCEL" + +msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA" +msgstr "%d reports deleted." + +msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA" +msgstr "Select items" + +msgid "IDS_ST_HEADER_PD_SELECTED_SWA" +msgstr "%d selected" + +msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Basic protection mode turned on." + +msgid "IDS_ST_TPOP_RULE_CREATED_SWA" +msgstr "Rule created. Custom protection mode turned on." + +msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Advanced protection mode turned on." + +msgid "IDS_ST_HEADER_DETAILS_SWA" +msgstr "Details" + +msgid "IDS_ST_BODY_STRING_TYPE_SWA" +msgstr "String type" + +msgid "IDS_ST_BODY_SEARCH_TERM_SWA" +msgstr "Search term" + +msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA" +msgstr "Leaks captured" + +msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA" +msgstr "Total leaks" + +msgid "IDS_ST_HEADER_RULE_DETAILS_SWA" +msgstr "Rule details" + +msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA" +msgstr "Pattern details" diff --git a/po/zh_HK.po b/po/zh_HK.po index 15e5ebb..a5d2d43 100755 --- a/po/zh_HK.po +++ b/po/zh_HK.po @@ -31,3 +31,272 @@ msgstr "%d 次" msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB" msgstr "私隱與安全" +msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA" +msgstr "Prevent apps from leaking your sensitive data without authorisation." + +msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA" +msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts." + +msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA" +msgstr "Protection mode" + +msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA" +msgstr "Basic" + +msgid "IDS_ST_SBODY_MONITOR_YOUR_MAIN_SENSITIVE_DATA_TO_PREVENT_IT_FROM_BEING_LEAKED_BY_MOST_APPS_THIS_MODE_IS_SUITABLE_FOR_REGULAR_USERS_SWA" +msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users." + +msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA" +msgstr "Advanced" + +msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA" +msgstr "Set up strict rules to prevent data leakage." + +msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA" +msgstr "This mode will affect app performance." + +msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA" +msgstr "Some apps may be blocked." + +msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA" +msgstr "Turn on Advanced protection mode" + +msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA" +msgstr "Change default rules and patterns and create your own to set up a customised protection mode." + +msgid "IDS_ST_HEADER_REPORTS_SWA" +msgstr "Reports" + +msgid "IDS_ST_MBODY_FULL_REPORTS_SWA" +msgstr "Full reports" + +msgid "IDS_ST_MBODY_APP_RANKINGS_SWA" +msgstr "App rankings" + +msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA" +msgstr "Data statistics" + +msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA" +msgstr "Rules and patterns" + +msgid "IDS_ST_NPBODY_NO_REPORTS_SWA" +msgstr "No reports" + +msgid "IDS_ST_HEADER_SETTINGS_SWA" +msgstr "Settings" + +msgid "IDS_ST_MBODY_KEEP_LOGS_SWA" +msgstr "Keep logs" + +msgid "IDS_LOGS_CLEANED" +msgstr "Logs cleaned" + +msgid "IDS_LOGS_CLEANED_FAILED" +msgstr "Failed to clean logs" + +msgid "IDS_ST_OPT_1_WEEK_SWA" +msgstr "1 week" + +msgid "IDS_ST_OPT_1_DAY_SWA" +msgstr "1 day" + +msgid "IDS_ST_OPT_1_MONTH_SWA" +msgstr "1 month" + +msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA" +msgstr "Report details" + +msgid "IDS_ST_BODY_CATEGORY_C_SWA" +msgstr "Category:" + +msgid "IDS_ST_BODY_APP_C_SWA" +msgstr "App:" + +msgid "IDS_ST_BODY_DESTINATION_C_SWA" +msgstr "Destination:" + +msgid "IDS_ST_BODY_PATTERN_C_SWA" +msgstr "Pattern:" + +msgid "IDS_ST_BODY_DLP_ACTION" +msgstr "Action" + +msgid "IDS_ST_BODY_PACKET_C_SWA" +msgstr "Packet:" + +msgid "IDS_ST_BODY_DLP_ACTION_ALLOW" +msgstr "Allow" + +msgid "IDS_ST_BODY_DLP_ACTION_DENY" +msgstr "Deny" + +msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE" +msgstr "Sanitize" + +msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES" +msgstr "All Rules" + +msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA" +msgstr "Quick" + +msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA" +msgstr "Create rules quickly and easily." + +msgid "IDS_ST_MBODY_CUSTOM_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CREATE_RULES_FROM_SCRATCH_TO_GIVE_YOU_FULL_CONTROL_OF_YOUR_DATA_PROTECTION_USE_THIS_OPTION_TO_CREATE_NON_STANDARD_RULES_SWA" +msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules." + +msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA" +msgstr "Custom protection mode" + +msgid "IDS_ST_TAB_RULES_SWA" +msgstr "Rules" + +msgid "IDS_ST_TAB_PATTERNS_SWA" +msgstr "Patterns" + +msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA" +msgstr "Select template" + +msgid "IDS_ST_HEADER_SELECT_APPS_SWA" +msgstr "Select apps" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION" +msgstr "Select Action" + +msgid "IDS_ST_ACBUTTON_NEXT_SWA" +msgstr "NEXT" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK" +msgstr "OK" + +msgid "IDS_ST_ACBUTTON_DONE_SWA" +msgstr "DONE" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE" +msgstr "Rule created." + +msgid "IDS_ST_TPOP_RULE_DELETED_SWA" +msgstr "Rule deleted." + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE" +msgstr "Delete Rule" + +msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA" +msgstr "Delete patterns" + +msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA" +msgstr "This rule will be deleted." + +msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA" +msgstr "Create pattern" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN" +msgstr "Custom" + +msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA" +msgstr "%d patterns deleted." + +msgid "IDS_ST_OPT_EDIT_SWA" +msgstr "Edit" + +msgid "IDS_ST_OPT_CREATE_SWA" +msgstr "Create" + +msgid "IDS_ST_OPT_ALL_PATTERNS_SWA" +msgstr "All patterns" + +msgid "IDS_ST_BODY_NAME_SWA" +msgstr "Name" + +msgid "IDS_ST_BODY_DESCRIPTION_SWA" +msgstr "Description" + +msgid "IDS_ST_BODY_CATEGORY_SWA" +msgstr "Category" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME" +msgstr "Category name" + +msgid "IDS_ST_OPT_STRING_MATCH_SWA" +msgstr "String match" + +msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA" +msgstr "Regular expression" + +msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d patterns will be deleted." + +msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA" +msgstr "This report will be deleted." + +msgid "IDS_ST_OPT_DELETE_SWA" +msgstr "Delete" + +msgid "IDS_ST_HEADER_DELETE_REPORT_SWA" +msgstr "Delete report" + +msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d reports will be deleted." + +msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA" +msgstr "1 report deleted." + +msgid "IDS_ST_MBODY_SELECT_ALL_SWA" +msgstr "Select all" + +msgid "IDS_ST_ACBUTTON_DELETE_SWA" +msgstr "DELETE" + +msgid "IDS_ST_ACBUTTON_CANCEL_SWA" +msgstr "CANCEL" + +msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA" +msgstr "%d reports deleted." + +msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA" +msgstr "Select items" + +msgid "IDS_ST_HEADER_PD_SELECTED_SWA" +msgstr "%d selected" + +msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Basic protection mode turned on." + +msgid "IDS_ST_TPOP_RULE_CREATED_SWA" +msgstr "Rule created. Custom protection mode turned on." + +msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Advanced protection mode turned on." + +msgid "IDS_ST_HEADER_DETAILS_SWA" +msgstr "Details" + +msgid "IDS_ST_BODY_STRING_TYPE_SWA" +msgstr "String type" + +msgid "IDS_ST_BODY_SEARCH_TERM_SWA" +msgstr "Search term" + +msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA" +msgstr "Leaks captured" + +msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA" +msgstr "Total leaks" + +msgid "IDS_ST_HEADER_RULE_DETAILS_SWA" +msgstr "Rule details" + +msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA" +msgstr "Pattern details" diff --git a/po/zh_TW.po b/po/zh_TW.po index 2c437ee..6ad7077 100755 --- a/po/zh_TW.po +++ b/po/zh_TW.po @@ -31,3 +31,272 @@ msgstr "%d 次" msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB" msgstr "隱私權與安全性" +msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA" +msgstr "Data leak monitor" + +msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA" +msgstr "Prevent apps from leaking your sensitive data without authorisation." + +msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA" +msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts." + +msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA" +msgstr "Protection mode" + +msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA" +msgstr "Basic" + +msgid "IDS_ST_SBODY_MONITOR_YOUR_MAIN_SENSITIVE_DATA_TO_PREVENT_IT_FROM_BEING_LEAKED_BY_MOST_APPS_THIS_MODE_IS_SUITABLE_FOR_REGULAR_USERS_SWA" +msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users." + +msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA" +msgstr "Advanced" + +msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA" +msgstr "Set up strict rules to prevent data leakage." + +msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA" +msgstr "This mode will affect app performance." + +msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA" +msgstr "Some apps may be blocked." + +msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA" +msgstr "Turn on Advanced protection mode" + +msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA" +msgstr "Change default rules and patterns and create your own to set up a customised protection mode." + +msgid "IDS_ST_HEADER_REPORTS_SWA" +msgstr "Reports" + +msgid "IDS_ST_MBODY_FULL_REPORTS_SWA" +msgstr "Full reports" + +msgid "IDS_ST_MBODY_APP_RANKINGS_SWA" +msgstr "App rankings" + +msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA" +msgstr "Data statistics" + +msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA" +msgstr "Rules and patterns" + +msgid "IDS_ST_NPBODY_NO_REPORTS_SWA" +msgstr "No reports" + +msgid "IDS_ST_HEADER_SETTINGS_SWA" +msgstr "Settings" + +msgid "IDS_ST_MBODY_KEEP_LOGS_SWA" +msgstr "Keep logs" + +msgid "IDS_LOGS_CLEANED" +msgstr "Logs cleaned" + +msgid "IDS_LOGS_CLEANED_FAILED" +msgstr "Failed to clean logs" + +msgid "IDS_ST_OPT_1_WEEK_SWA" +msgstr "1 week" + +msgid "IDS_ST_OPT_1_DAY_SWA" +msgstr "1 day" + +msgid "IDS_ST_OPT_1_MONTH_SWA" +msgstr "1 month" + +msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA" +msgstr "Report details" + +msgid "IDS_ST_BODY_CATEGORY_C_SWA" +msgstr "Category:" + +msgid "IDS_ST_BODY_APP_C_SWA" +msgstr "App:" + +msgid "IDS_ST_BODY_DESTINATION_C_SWA" +msgstr "Destination:" + +msgid "IDS_ST_BODY_PATTERN_C_SWA" +msgstr "Pattern:" + +msgid "IDS_ST_BODY_DLP_ACTION" +msgstr "Action" + +msgid "IDS_ST_BODY_PACKET_C_SWA" +msgstr "Packet:" + +msgid "IDS_ST_BODY_DLP_ACTION_ALLOW" +msgstr "Allow" + +msgid "IDS_ST_BODY_DLP_ACTION_DENY" +msgstr "Deny" + +msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE" +msgstr "Sanitize" + +msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES" +msgstr "All Rules" + +msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA" +msgstr "Quick" + +msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA" +msgstr "Create rules quickly and easily." + +msgid "IDS_ST_MBODY_CUSTOM_SWA" +msgstr "Custom" + +msgid "IDS_ST_SBODY_CREATE_RULES_FROM_SCRATCH_TO_GIVE_YOU_FULL_CONTROL_OF_YOUR_DATA_PROTECTION_USE_THIS_OPTION_TO_CREATE_NON_STANDARD_RULES_SWA" +msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules." + +msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA" +msgstr "Custom protection mode" + +msgid "IDS_ST_TAB_RULES_SWA" +msgstr "Rules" + +msgid "IDS_ST_TAB_PATTERNS_SWA" +msgstr "Patterns" + +msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA" +msgstr "Select template" + +msgid "IDS_ST_HEADER_SELECT_APPS_SWA" +msgstr "Select apps" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION" +msgstr "Select Action" + +msgid "IDS_ST_ACBUTTON_NEXT_SWA" +msgstr "NEXT" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK" +msgstr "OK" + +msgid "IDS_ST_ACBUTTON_DONE_SWA" +msgstr "DONE" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE" +msgstr "Rule created." + +msgid "IDS_ST_TPOP_RULE_DELETED_SWA" +msgstr "Rule deleted." + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE" +msgstr "Delete Rule" + +msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA" +msgstr "Delete patterns" + +msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA" +msgstr "This rule will be deleted." + +msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA" +msgstr "Create pattern" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN" +msgstr "Custom" + +msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA" +msgstr "%d patterns deleted." + +msgid "IDS_ST_OPT_EDIT_SWA" +msgstr "Edit" + +msgid "IDS_ST_OPT_CREATE_SWA" +msgstr "Create" + +msgid "IDS_ST_OPT_ALL_PATTERNS_SWA" +msgstr "All patterns" + +msgid "IDS_ST_BODY_NAME_SWA" +msgstr "Name" + +msgid "IDS_ST_BODY_DESCRIPTION_SWA" +msgstr "Description" + +msgid "IDS_ST_BODY_CATEGORY_SWA" +msgstr "Category" + +msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME" +msgstr "Category name" + +msgid "IDS_ST_OPT_STRING_MATCH_SWA" +msgstr "String match" + +msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA" +msgstr "Regular expression" + +msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d patterns will be deleted." + +msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA" +msgstr "This report will be deleted." + +msgid "IDS_ST_OPT_DELETE_SWA" +msgstr "Delete" + +msgid "IDS_ST_HEADER_DELETE_REPORT_SWA" +msgstr "Delete report" + +msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA" +msgstr "%d reports will be deleted." + +msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA" +msgstr "1 report deleted." + +msgid "IDS_ST_MBODY_SELECT_ALL_SWA" +msgstr "Select all" + +msgid "IDS_ST_ACBUTTON_DELETE_SWA" +msgstr "DELETE" + +msgid "IDS_ST_ACBUTTON_CANCEL_SWA" +msgstr "CANCEL" + +msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA" +msgstr "%d reports deleted." + +msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA" +msgstr "Select items" + +msgid "IDS_ST_HEADER_PD_SELECTED_SWA" +msgstr "%d selected" + +msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Basic protection mode turned on." + +msgid "IDS_ST_TPOP_RULE_CREATED_SWA" +msgstr "Rule created. Custom protection mode turned on." + +msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA" +msgstr "Advanced protection mode turned on." + +msgid "IDS_ST_HEADER_DETAILS_SWA" +msgstr "Details" + +msgid "IDS_ST_BODY_STRING_TYPE_SWA" +msgstr "String type" + +msgid "IDS_ST_BODY_SEARCH_TERM_SWA" +msgstr "Search term" + +msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA" +msgstr "Leaks captured" + +msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA" +msgstr "Total leaks" + +msgid "IDS_ST_HEADER_RULE_DETAILS_SWA" +msgstr "Rule details" + +msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA" +msgstr "Pattern details" diff --git a/ui/CMakeLists.txt b/ui/CMakeLists.txt index f712051..1c9ea65 100755 --- a/ui/CMakeLists.txt +++ b/ui/CMakeLists.txt @@ -5,12 +5,34 @@ pkg_check_modules(${pkg_name} REQUIRED glib-2.0 evas elementary edje eina efl-ex SET(SRCS ${CMAKE_SOURCE_DIR}/common/src/common_utils.c + ${CMAKE_SOURCE_DIR}/common/src/common_ctxpopup.c + ${CMAKE_SOURCE_DIR}/common/src/common_edit_field.c + ${CMAKE_SOURCE_DIR}/common/src/common_popup.c src/main_privacy_setting.c src/privacy_menu_view.c src/privacy_list_view.c src/privacy_package_list_view.c src/privacy_guard_list_view.c src/privacy_guard_package_list_view.c + src/privacy_dlp_menu_view.c + src/privacy_dlp_reports_full_view.c + src/privacy_dlp_reports_app_rank_view.c + src/privacy_dlp_reports_data_stat_view.c + src/privacy_dlp_log_detailed_view.c + src/privacy_dlp_reports_rules_and_patterns_view.c + src/privacy_dlp_rule_list_view.c + src/privacy_dlp_rule_delete_view.c + src/privacy_dlp_rule_detailed_view.c + src/privacy_dlp_rule_edit_view.c + src/privacy_dlp_pattern_list_view.c + src/privacy_dlp_pattern_detailed_view.c + src/privacy_dlp_reports_del_view.c + src/privacy_dlp_choose_rule_template_view.c + src/privacy_dlp_choose_apps_view.c + src/privacy_dlp_rule_create_view.c + src/privacy_dlp_pattern_create_view.c + src/privacy_dlp_pattern_delete_view.c + src/privacy_view.c ) FOREACH(flag ${${pkg_name}_CFLAGS}) diff --git a/ui/include/privacy_setting.h b/ui/include/privacy_setting.h index a7c9cb5..0993de1 100644 --- a/ui/include/privacy_setting.h +++ b/ui/include/privacy_setting.h @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -/* +/** * @file privacy_setting.h * @author Yunjin Lee <yunjin-.lee@samsung.com> * @version 1.0 @@ -26,9 +26,103 @@ #include <Elementary.h> #include <glib.h> #include <app.h> +#include <privacy_guard_client.h> #define PRIVACY_MENU_SETTING "IDS_ST_HEADER_PRIVACY_SETTINGS_ABB" #define PRIVACY_MENU_MONITOR "IDS_ST_HEADER_PRIVACY_MONITOR" +#define PRIVACY_MENU_DLP "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA" +#define PRIVACY_MENU_DLP_TITLE "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA" +#define PRIVACY_MENU_DLP_DESCRIPTION "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA" +#define PRIVACY_MENU_DLP_DESCRIPTION_NOTE "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA" +#define PRIVACY_MENU_DLP_PROFILE "IDS_ST_MBODY_PROTECTION_MODE_SWA" +#define PRIVACY_MENU_DLP_PROFILE_BASIC "IDS_ST_MBODY_BASIC_M_MODE_SWA" +#define PRIVACY_MENU_DLP_PROFILE_ADVANCED "IDS_ST_MBODY_ADVANCED_M_MODE_SWA" +#define PRIVACY_MENU_DLP_PROFILE_CUSTOM "IDS_ST_MBODY_CUSTOM_M_MODE_SWA" +#define PRIVACY_MENU_DLP_PROFILE_BASIC_DESCRIPTION "IDS_ST_SBODY_MONITOR_YOUR_MAIN_SENSITIVE_DATA_TO_PREVENT_IT_FROM_BEING_LEAKED_BY_MOST_APPS_THIS_MODE_IS_SUITABLE_FOR_REGULAR_USERS_SWA" +#define PRIVACY_MENU_DLP_PROFILE_ADVANCED_DESCRIPTION "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA" +#define PRIVACY_MENU_DLP_PROFILE_ADVANCED_DESCRIPTION_NOTE "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA" +#define PRIVACY_MENU_DLP_PROFILE_ADVANCED_ALERT "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA" +#define PRIVACY_MENU_DLP_PROFILE_ADVANCED_MODE "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA" +#define PRIVACY_MENU_DLP_PROFILE_CUSTOM_DESCRIPTION "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA" +#define PRIVACY_MENU_DLP_REPORTS "IDS_ST_HEADER_REPORTS_SWA" +#define PRIVACY_MENU_DLP_REPORTS_FULL "IDS_ST_MBODY_FULL_REPORTS_SWA" +#define PRIVACY_MENU_DLP_REPORTS_APP_RANK "IDS_ST_MBODY_APP_RANKINGS_SWA" +#define PRIVACY_MENU_DLP_REPORTS_STATISTICS "IDS_ST_MBODY_DATA_STATISTICS_SWA" +#define PRIVACY_MENU_DLP_REPORTS_RULES_AND_PATTERNS "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA" +#define PRIVACY_MENU_DLP_REPORTS_EMPTY "IDS_ST_NPBODY_NO_REPORTS_SWA" +#define PRIVACY_MENU_DLP_REPORTS_LOG_TITLE "IDS_ST_HEADER_REPORT_DETAILS_SWA" +#define PRIVACY_MENU_DLP_REPORTS_TOTAL_LEAKS "IDS_ST_SBODY_TOTAL_LEAKS_SWA" +#define PRIVACY_MENU_DLP_SETTINGS "IDS_ST_HEADER_SETTINGS_SWA" +#define PRIVACY_MENU_DLP_SETTINGS_LOGS_PERIOD "IDS_ST_MBODY_KEEP_LOGS_SWA" +#define PRIVACY_MENU_DLP_SETTINGS_LOGS_CLEANED "IDS_LOGS_CLEANED" +#define PRIVACY_MENU_DLP_SETTINGS_LOGS_CLEANED_FAILED "IDS_LOGS_CLEANED_FAILED" +#define PRIVACY_MENU_DLP_SETTINGS_LOGS_CLEAN_PERIOD_1_DAY "IDS_ST_OPT_1_DAY_SWA" +#define PRIVACY_MENU_DLP_SETTINGS_LOGS_CLEAN_PERIOD_1_WEEK "IDS_ST_OPT_1_WEEK_SWA" +#define PRIVACY_MENU_DLP_SETTINGS_LOGS_CLEAN_PERIOD_1_MONTH "IDS_ST_OPT_1_MONTH_SWA" +#define PRIVACY_MENU_DLP_REPORTS_DETAILS_CATEGORY "IDS_ST_BODY_CATEGORY_C_SWA" +#define PRIVACY_MENU_DLP_REPORTS_DETAILS_APPLICATION "IDS_ST_BODY_APP_C_SWA" +#define PRIVACY_MENU_DLP_REPORTS_DETAILS_DESTINATION "IDS_ST_BODY_DESTINATION_C_SWA" +#define PRIVACY_MENU_DLP_REPORTS_DETAILS_PATTERN "IDS_ST_BODY_PATTERN_C_SWA" +#define PRIVACY_MENU_DLP_REPORTS_DETAILS_ACTION "IDS_ST_BODY_DLP_ACTION" +#define PRIVACY_MENU_DLP_REPORTS_DETAILS_LOG "IDS_ST_BODY_PACKET_C_SWA" +#define PRIVACY_MENU_DLP_REPORTS_DETAILS_ACTION_ALLOW "IDS_ST_BODY_DLP_ACTION_ALLOW" +#define PRIVACY_MENU_DLP_REPORTS_DETAILS_ACTION_DENY "IDS_ST_BODY_DLP_ACTION_DENY" +#define PRIVACY_MENU_DLP_REPORTS_DETAILS_ACTION_SANITIZE "IDS_ST_BODY_DLP_ACTION_SANITIZE" +#define PRIVACY_MENU_DLP_REPORTS_DETAILS_ACTION_ALL_RULES "IDS_ST_BODY_DLP_ACTION_ALL_RULES" +#define PRIVACY_MENU_DLP_CREATE_RULE_QUICK "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA" +#define PRIVACY_MENU_DLP_CREATE_RULE_QUICK_DESCRIPTION "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA" +#define PRIVACY_MENU_DLP_CREATE_RULE_CUSTOM "IDS_ST_MBODY_CUSTOM_SWA" +#define PRIVACY_MENU_DLP_CREATE_RULE_CUSTOM_DESCRIPTION "IDS_ST_SBODY_CREATE_RULES_FROM_SCRATCH_TO_GIVE_YOU_FULL_CONTROL_OF_YOUR_DATA_PROTECTION_USE_THIS_OPTION_TO_CREATE_NON_STANDARD_RULES_SWA" +#define PRIVACY_MENU_DLP_RULES_N_PATTERNS_TITLE "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA" +#define PRIVACY_MENU_DLP_RULES_N_PATTERNS_TITLE_RULES "IDS_ST_TAB_RULES_SWA" +#define PRIVACY_MENU_DLP_RULES_N_PATTERNS_TITLE_PATTERNS "IDS_ST_TAB_PATTERNS_SWA" +#define PRIVACY_MENU_DLP_RULE_DETAIL_TITLE "IDS_ST_HEADER_RULE_DETAILS_SWA" +#define PRIVACY_MENU_DLP_PATTERN_DETAIL_TITLE "IDS_ST_HEADER_PATTERN_DETAILS_SWA" +#define PRIVACY_MENU_DLP_CREATE_RULES_CHOOSE_TEMPLATE "IDS_ST_HEADER_SELECT_TEMPLATE_SWA" +#define PRIVACY_MENU_DLP_CREATE_RULES_CHOOSE_APPS "IDS_ST_HEADER_SELECT_APPS_SWA" +#define PRIVACY_MENU_DLP_CREATE_RULES_CHOOSE_ACTION "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION" +#define PRIVACY_MENU_DLP_CREATE_RULES_MENU_NEXT "IDS_ST_ACBUTTON_NEXT_SWA" +#define PRIVACY_MENU_DLP_CREATE_RULES_MENU_CANCEL "IDS_ST_ACBUTTON_CANCEL_SWA" +#define PRIVACY_MENU_DLP_CREATE_RULES_MENU_DONE "IDS_ST_ACBUTTON_DONE_SWA" +#define PRIVACY_MENU_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE" +#define PRIVACY_MENU_DLP_CREATE_RULES_MENU_OK "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK" +#define PRIVACY_MENU_DLP_CREATE_RULES_MENU_DELETE "IDS_ST_OPT_DELETE_SWA" +#define PRIVACY_MENU_DLP_CREATE_RULES_MENU_DELETE_RULE_MESSAGE "IDS_ST_TPOP_RULE_DELETED_SWA" +#define PRIVACY_MENU_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE" +#define PRIVACY_MENU_DLP_CREATE_RULES_MENU_DELETE_RULE_MESSAGE_MESSAGE "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA" +#define PRIVACY_MENU_DLP_CREATE_RULES_MENU_DELETE_PATTERN_POPUP_TITLE "IDS_ST_HEADER_DELETE_PATTERNS_SWA" +#define PRIVACY_MENU_DLP_CREATE_RULES_MENU_DELETE_PATTERN_POPUP_MESSAGE_MESSAGE "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA" +#define PRIVACY_MENU_DLP_CREATE_RULES_MENU_DELETE_PATTERN_MESSAGE "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA" +#define PRIVACY_MENU_DLP_CREATE_RULES_MENU_EDIT "IDS_ST_OPT_EDIT_SWA" +#define PRIVACY_MENU_DLP_CREATE_RULES_MENU_SELECT_ALL "IDS_ST_MBODY_SELECT_ALL_SWA" +#define PRIVACY_MENU_DLP_CREATE_RULES_MENU_CREATE "IDS_ST_OPT_CREATE_SWA" +#define PRIVACY_MENU_DLP_CREATE_RULES_MENU_ALL_PATTERNS "IDS_ST_OPT_ALL_PATTERNS_SWA" +#define PRIVACY_MENU_DLP_CREATE_RULES_MENU_NAME "IDS_ST_BODY_NAME_SWA" +#define PRIVACY_MENU_DLP_CREATE_RULES_MENU_DESCRIPTION "IDS_ST_BODY_DESCRIPTION_SWA" +#define PRIVACY_MENU_DLP_CREATE_RULES_MENU_CATEGORY "IDS_ST_BODY_CATEGORY_SWA" +#define PRIVACY_MENU_DLP_CREATE_RULES_MENU_CATEGORY_NAME "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME" +#define PRIVACY_MENU_DLP_CREATE_RULES_MENU_SEARCH_TYPE_STRING_MATCH "IDS_ST_OPT_STRING_MATCH_SWA" +#define PRIVACY_MENU_DLP_CREATE_RULES_MENU_SEARCH_TYPE_REGULAR_EXPRESSION "IDS_ST_OPT_REGULAR_EXPRESSION_SWA" +#define PRIVACY_MENU_DLP_CREATE_PATTERN "IDS_ST_HEADER_CREATE_PATTERN_SWA" +#define PRIVACY_MENU_DLP_LOG_ITEM_WILL_BE_DELETED "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA" +#define PRIVACY_MENU_DLP_LOG_DELETE "IDS_ST_OPT_DELETE_SWA" +#define PRIVACY_MENU_DLP_LOG_DELETE_LOG "IDS_ST_HEADER_DELETE_REPORT_SWA" +#define PRIVACY_MENU_DLP_LOG_LOGS_WILL_BE_DELETED "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA" +#define PRIVACY_MENU_DLP_LOG_DELETED "IDS_ST_TPOP_1_REPORT_DELETED_SWA" +#define PRIVACY_MENU_DLP_LOG_SELECT_ALL "IDS_ST_MBODY_SELECT_ALL_SWA" +#define PRIVACY_MENU_DLP_LOG_DELETE_BTN "IDS_ST_ACBUTTON_DELETE_SWA" +#define PRIVACY_MENU_DLP_LOG_CANCEL_BTN "IDS_ST_ACBUTTON_CANCEL_SWA" +#define PRIVACY_MENU_DLP_LOG_LOGS_DELETED "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA" +#define PRIVACY_MENU_DLP_LOG_DELETE_LOGS_TITLE "IDS_ST_HEADER_SELECT_ITEMS_SWA" +#define PRIVACY_MENU_DLP_LOG_DELETE_LOGS_TITLE_SELECTED "IDS_ST_HEADER_PD_SELECTED_SWA" +#define PRIVACY_MENU_DLP_BASIC_PROTECTION_MODE_APPLIED "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA" +#define PRIVACY_MENU_DLP_CUSTOM_PROTECTION_MODE_APPLIED "IDS_ST_TPOP_RULE_CREATED_SWA" +#define PRIVACY_MENU_DLP_ADVANCED_PROTECTION_MODE_APPLIED "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA" +#define PRIVACY_MENU_DLP_DETAILS "IDS_ST_HEADER_DETAILS_SWA" +#define PRIVACY_MENU_DLP_LEAKS_CAPTURED "IDS_ST_BODY_LEAKS_CAPTURED_SWA" +#define PRIVACY_MENU_DLP_STRING_TYPE "IDS_ST_BODY_STRING_TYPE_SWA" +#define PRIVACY_MENU_DLP_SEARCH_TERM "IDS_ST_BODY_SEARCH_TERM_SWA" +#define PRIVACY_MENU_DLP_CATEGORY "IDS_ST_BODY_CATEGORY_SWA" struct app_data_s { Evas_Object *parent_layout; diff --git a/ui/include/privacy_view.h b/ui/include/privacy_view.h index c2c6d95..5c8146f 100644 --- a/ui/include/privacy_view.h +++ b/ui/include/privacy_view.h @@ -13,20 +13,29 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -/* +/** * @file privacy_view.h * @author Yunjin Lee <yunjin-.lee@samsung.com> * @version 1.0 * @brief */ +#ifndef __UI_PRIVACY_SETTING_PRIVACY_VIEW_H_ +#define __UI_PRIVACY_SETTING_PRIVACY_VIEW_H_ #include <Elementary.h> #include <glib.h> #include <app.h> +#include <dlog.h> #include "privacy_setting.h" +#define KEEP_LOG_1_DAY 1 +#define KEEP_LOG_1_WEEK 7 +#define KEEP_LOG_1_MONTH 30 + +#define SELECT_ALL_APPS_ITEM_ID NULL + typedef struct { char* pkgid; char* label; @@ -66,13 +75,165 @@ typedef struct { bool status; } pg_item_data_s; +typedef struct { + int log_id; + char* app_name; + char* app_icon; + time_t time_stamp; + PgDlpAction action; + char* destination; +} dlp_log_s; + +typedef struct { + dlp_log_s* data; + Evas_Object* check; + bool is_checked; +} dlp_item_log_s; + +typedef struct { + char* app_name; + char* app_icon; + GList* logs_list; +} dlp_item_report_s; + +typedef struct { + get_custom_rule_s* data; +} dlp_item_rule_s; + +typedef struct { + get_pattern_s* data; +} dlp_item_pattern_s; + +/** + * @brief internal callback called when retrieving logs for the Application Ranking view + * @param[in] user_id The user_id + * @param[in] name The application name + * @param[in] callback The actual callback function to use + * @param[in] user_data User data to pass to the callback + * + * @return the result of operation (ERRORCODE : success, ....) + * + */ +typedef int (*dlp_foreach_leak_logs_cb) (const int, const char *, privacy_guard_client_leak_logs_cb, void *); + +/** + * @brief callback called to update the Application Ranking view + * @param[in] sd app_data structure whose naviframe should be used + */ +typedef void (*dlp_update_stats_cb)(struct app_data_s *); + +typedef struct { + const char* name; + dlp_foreach_leak_logs_cb foreach_leak_logs; + dlp_update_stats_cb update_stats; +} dlp_statistics_cb_s; + +typedef struct { + char *id; + char *name; + char *icon_path; + bool is_checked; + Evas_Object *check; +} application_item_s; + +// Options used in rule action filters (dropdowns) +typedef enum { + ACTION_ALL = 0, + ACTION_ALLOW, + ACTION_DENY, + ACTION_SANITIZE, + ACTION_TOTAL ///< Defines the number of action options +} rule_action_filter; + +/* privacy_package_list_view */ void create_privacy_package_list_view(struct app_data_s *ad); +/* privacy_list_view */ void create_privacy_list_view(struct app_data_s *ad); +/* privacy_menu_view */ void create_privacy_menu_view(struct app_data_s *ad); +/* privacy_guard_list_view */ void create_privacy_guard_list_view(struct app_data_s *ad); +/* privacy_guard_package_list_view */ void create_privacy_guard_package_list_view(struct app_data_s *ad); +/* privacy_dlp_menu_view */ +void create_privacy_dlp_menu_view(struct app_data_s *ad); + +/* privacy_dlp_reports_full_view */ +void create_privacy_dlp_reports_full_view(dlp_statistics_cb_s *scb, struct app_data_s *ad); + +void update_privacy_dlp_reports_full_view(void); + +/* privacy_dlp_reports_app_rank_view */ +void create_privacy_dlp_reports_app_rank_view(struct app_data_s *ad); + +/* privacy_dlp_reports_data_stat_view */ +void create_privacy_dlp_reports_data_stat_view(struct app_data_s *ad); + +/* privacy_dlp_log_detailed_view */ +void create_privacy_dlp_log_detailed_view(dlp_item_log_s *item, struct app_data_s *ad); + +/* privacy_dlp_reports_rules_and_patterns_view */ +void create_privacy_dlp_reports_rules_and_patterns_view(struct app_data_s *ad, const dlp_profile_s *config); + +/* privacy_dlp_rule_list_view */ +void update_privacy_dlp_rules_list_view(void *rule_list_data); + +void create_privacy_dlp_rules_list_view(struct app_data_s *ad, Evas_Object *parent, Elm_Object_Item *pop_to_nf_it, const dlp_profile_s *config); + +/* privacy_dlp_pattern_list_view */ +void update_privacy_dlp_patterns_list_view(void *pattern_list_data); + +void create_privacy_dlp_patterns_list_view(struct app_data_s *ad, Evas_Object *parent, const dlp_profile_s *config); + +/* privacy_dlp_rule_detailed_view */ +void update_privacy_dlp_rule_detailed_view(void *rule_detailed_view_data, const int pattern_id, const char *rule_name, const char *rule_description); + +void create_privacy_dlp_rule_detailed_view(struct app_data_s *ad, Elm_Object_Item *pop_to_nf_it, get_custom_rule_s *current_rule, const dlp_profile_s *config, void *rule_list_data); + +/* privacy_dlp_rule_edit_view */ +void create_privacy_dlp_rule_edit_view(struct app_data_s *ad, Elm_Object_Item *pop_to_nf_it, dlp_profile_s *config, const get_custom_rule_s *current_rule, const GList *app_list, void *rule_list_data, void *rule_detailed_view_data); + +/* privacy_dlp_rule_delete_view */ +void create_privacy_dlp_rule_delete_view(struct app_data_s *ad, const GList *rule_list, void *rule_list_data); + +/* privacy_dlp_rule_create_view */ +void deselect_create_rule_radio_group(void); + +/* privacy_dlp_rule_edit_view */ +void update_privacy_dlp_rule_edit_view(void *rule_edit_data, const char *pattern, const PgDlpPatternType pattern_type, bool undeletable); + +/* privacy_dlp_rule_create_view */ +void create_privacy_dlp_rule_create_view(struct app_data_s *ad, Elm_Object_Item *pop_to_nf_it, dlp_profile_s *config, void *rule_list_data); + +/* privacy_dlp_pattern_detailed_view */ +void create_privacy_dlp_pattern_detailed_view(struct app_data_s *ad, const get_pattern_s *current_pattern, const dlp_profile_s *config, void *pattern_list_data); + +/* privacy_dlp_reports_del_view */ +void create_privacy_dlp_reports_del_view(GList* log_list, int action, struct app_data_s *ad); + +/* privacy_dlp_choose_rule_template_view */ +void clean_up_privacy_dlp_choose_rule_template_view(void); + +void create_privacy_dlp_choose_rule_template_view(struct app_data_s *ad, Elm_Object_Item *pop_to_nf_it, dlp_profile_s *config, void *rule_list_view_data); + +/* privacy_dlp_choose_apps_view */ +void create_privacy_dlp_choose_apps_view(struct app_data_s *ad, Elm_Object_Item *pop_to_nf_it, dlp_profile_s *config, const get_pattern_s *rule_template, void *rule_list_data, const get_custom_rule_s *editing_rule, const get_custom_rule_s *original_rule); + +bool filter_rule_by_action(int rule_action, rule_action_filter filter_action); + +/* privacy_dlp_pattern_create_view */ +void create_privacy_dlp_pattern_create_view(struct app_data_s *ad, void *rule_edit_view_data, void *pattern_list_view_data); + +/* privacy_dlp_pattern_delete_view */ +void create_privacy_dlp_pattern_delete_view(struct app_data_s *ad, const GList *pattern_list, void *pattern_list_data); + +// NOTE: code below is commented out because only allow actions will be +// released to Tizen 4.0, so action icons become meaningless. +//void overlay_action_image(Evas_Object *icon, PgDlpAction action); + +#endif /* __UI_PRIVACY_SETTING_COMMON_UTILS_H_ */ diff --git a/ui/src/privacy_dlp_choose_apps_view.c b/ui/src/privacy_dlp_choose_apps_view.c new file mode 100644 index 0000000..f3bc0eb --- /dev/null +++ b/ui/src/privacy_dlp_choose_apps_view.c @@ -0,0 +1,577 @@ +/* + * Copyright (c) 2017 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* + * @file privacy_dlp_choose_apps_view.c + * @version 1.0 + * @brief + */ + +#include "common_utils.h" +#include "privacy_view.h" +#include <privacy_guard_client.h> +#include <app_manager.h> + +typedef struct { + struct app_data_s *ad; + GList *app_list; + dlp_profile_s *config; + const get_pattern_s *rule_template; + const get_custom_rule_s *editing_rule; + const get_custom_rule_s *original_rule; + GList *editing_rules_list; + void *rule_list_data; + Evas_Object *genlist; + Evas_Object *done_button; + Evas_Object *next_button; + Elm_Object_Item *pop_to_nf_it; +} choose_app_data_s; + +void free_application_item(void *item) +{ + if (NULL != item) { + application_item_s *app_item = item; + free(app_item->id); + free(app_item->name); + free(app_item->icon_path); + free(app_item); + } +} + +size_t get_number_of_selected_apps(Evas_Object *genlist); +void set_app_item_check_state(Elm_Object_Item *item, const bool state); +void delete_unchecked_apps_rules(const GList *editing_rules_list, GList *selected_apps_list); + +static bool _choose_apps_get_custom_rules_cb(int id, PgDlpAction action, int pattern_id, const char *name, const char *description, const char *application_id, int leaks_count, void *user_data) +{ + choose_app_data_s *data = user_data; + const get_custom_rule_s *original_rule = data->original_rule; + if (original_rule->action == action && original_rule->pattern_id == pattern_id) { + // Note that rule will be freed in _choose_app_nf_pop_cb(), together with data->editing_rules_list + get_custom_rule_s *rule = malloc(sizeof(get_custom_rule_s)); + + if (rule != NULL) { + rule->id = id; + rule->action = action; + rule->pattern_id = pattern_id; + strncpy(rule->name, name, LEN_NAME); + rule->name[LEN_NAME - 1] = '\0'; + strncpy(rule->description, description, LEN_DESCRIPTION); + rule->description[LEN_DESCRIPTION - 1] = '\0'; + rule->leaks_count = leaks_count; + strncpy(rule->application_id, application_id, LEN_APPLICATION_ID); + rule->application_id[LEN_APPLICATION_ID - 1] = '\0'; + + data->editing_rules_list = g_list_prepend(data->editing_rules_list, rule); + } else { + return false; + } + } + return true; +} + +static gint _compare_rule_app_id_cb(gconstpointer lhs, gconstpointer rhs) +{ + return strcmp(((const get_custom_rule_s *)lhs)->application_id, (const char *)rhs); +} + +static gint _compare_selected_app_id_cb(gconstpointer lhs, gconstpointer rhs) +{ + return strcmp((const char *)lhs, (const char *)rhs); +} + +/** + * @brief Internal callback function used to retrieve application information + * @param[in] app_info appliation handle + * @param[in] user_data the user data + * @return this function always returns true + */ +static bool _choose_app_app_info_cb(app_info_h app_info, void *user_data) +{ + // Note that app will be freed in _choose_app_nf_pop_cb(), together with choose_app_data->app_list + application_item_s *app = malloc(sizeof(application_item_s)); + + if (app != NULL) { + app->id = NULL; + int res = app_info_get_app_id(app_info, &(app->id)); + if (res < 0) { + LOGE("app_info_get_id() failed. Error=%d", res); + // without an app_id it is not possible to create + // an app specific DLP rule, so we bail out + return true; + } + + // Note that app->name bellow will be freed by free_application_item(), + // called in _choose_app_nf_pop_cb() + char *label = NULL; + res = app_info_get_label(app_info, &label); + if (res < 0) { + LOGE("%s: app_info_get_label() failed. Error=%d", app->id, res); + app->name = strdup(""); + } else { + app->name = label; + } + + // Note that app->icon_path bellow will be freed by free_application_item(), + // called in _choose_app_nf_pop_cb() + app->icon_path = NULL; + res = app_info_get_icon(app_info, &(app->icon_path)); + if (res < 0) { + LOGE("app_info_get_icon() failed. Error=%d", res); + app->icon_path = strdup(""); + } + + choose_app_data_s *choose_app_data = user_data; + if (NULL == choose_app_data->editing_rule) + app->is_checked = true; + else { + app->is_checked = (0 == strcmp(choose_app_data->editing_rule->application_id, "") + || g_list_find_custom(choose_app_data->editing_rules_list, app->id, _compare_rule_app_id_cb)); + } + + app->check = NULL; + + choose_app_data->app_list = g_list_prepend(choose_app_data->app_list, app); + } + return true; +} + +static gint _compare_apps_cb(gconstpointer lhs, gconstpointer rhs) +{ + return strcasecmp(((const application_item_s *)lhs)->name, ((const application_item_s *)rhs)->name); +} + +static gint _compare_apps_id_cb(gconstpointer lhs, gconstpointer rhs) +{ + return strcmp(((const application_item_s *)lhs)->id, (const char*)rhs); +} + +/** + * @brief Internal callback function invoked when application genlist item is displayed + * @param[in] data The item data passed to the elm_genlist_item_append() function + * @param[in] obj The object invoking this callback function + * @param[in] part The name of the item's part being rendered + * @return the text to be displayed + */ +static char *_gl_choose_app_text_get_cb(void *data, Evas_Object *obj, const char *part) +{ + application_item_s *app_item = data; + + if (!strcmp(part, "elm.text")) + return strdup(app_item->name); + + if (strcmp(part, "elm.text.multiline") == 0) { + if (SELECT_ALL_APPS_ITEM_ID != app_item->id) + return strdup(app_item->id); + } + + return NULL; +} + +/** + * @brief Internal callback function invoked when application genlist item is displayed + * @param[in] data The item data passed to the elm_genlist_item_append() function + * @param[in] obj The object invoking this callback function + * @param[in] part The name of the item's part being rendered + * @return the application icon to be displayed + */ +static Evas_Object *_gl_choose_app_content_get_cb(void *data, Evas_Object *obj, const char *part) +{ + application_item_s *app_item = data; + + if (strcmp(part, "elm.swallow.icon") == 0) { + if (SELECT_ALL_APPS_ITEM_ID != app_item->id) { + Evas_Object *icon = elm_icon_add(obj); + elm_image_file_set(icon, app_item->icon_path, NULL); + evas_object_size_hint_min_set(icon, ELM_SCALE_SIZE(50), ELM_SCALE_SIZE(50)); + return icon; + } + } + + if (strcmp(part, "elm.swallow.end") == 0) { + Evas_Object *check = common_create_check(obj); + elm_check_state_set(check, app_item->is_checked ? EINA_TRUE : EINA_FALSE); + app_item->check = check; + return check; + } + + return NULL; +} + +/** + * @brief Internal callback function when the choose application menu is popped from naviframe + * @param[in] data The user data passed to the callback function + * @param[in] obj The object invoking this callback function + * @return This function always returns EINA_TRUE + */ +static Eina_Bool _choose_app_nf_pop_cb(void *data, Evas_Object* obj) +{ + choose_app_data_s *choose_app_data = data; + g_list_free_full(choose_app_data->app_list, free_application_item); + choose_app_data->app_list = NULL; + + g_list_free_full(choose_app_data->editing_rules_list, free); + choose_app_data->editing_rules_list = NULL; + + if (NULL == choose_app_data->rule_template) + // in the create custom rule flow, we return to the create + // rule menu so we need to reset that radio group + deselect_create_rule_radio_group(); + + return EINA_TRUE; +} + +/** + * @brief Internal callback function when the cancel button is pressed + * @param[in] data The user data passed to the callback function + * @param[in] obj The object invoking this callback function + * @param[in] event_info The structure containing the information on this event + */ +static void _choose_app_cancel_cb(void *data, Evas_Object *obj, void *event_info) +{ + choose_app_data_s *choose_app_data = data; + elm_naviframe_item_pop(choose_app_data->ad->nf); +} + +/** + * @brief Internal callback function when the done button is pressed + * @param[in] data The user data passed to the callback function + * @param[in] obj The object invoking this callback function + * @param[in] event_info The structure containing the information on this event + */ +static void _choose_app_done_cb(void *data, Evas_Object *obj, void *event_info) +{ + const choose_app_data_s *choose_app_data = data; + const get_pattern_s *template = choose_app_data->rule_template; + const get_custom_rule_s *editing_rule = choose_app_data->editing_rule; + bool custom_rule_created = false; + GList *selected_apps_list = NULL; + GList *l; // note that the 0th element is "select all" + for (l = choose_app_data->app_list; l != NULL; l = l->next) { + const application_item_s *app_item = l->data; + if (NULL == app_item) + continue; + if (!app_item->is_checked) + continue; + + const char *app_id = (SELECT_ALL_APPS_ITEM_ID == app_item->id) ? "" : app_item->id; + if (NULL == editing_rule) { + // Rule creation + const int res = privacy_guard_client_add_dlp_custom_rule( + getuid(), + PRIV_GUARD_DLP_ACTION_ALLOW, + template->id, + template->name, + template->description, + app_id); + if (PRIV_GUARD_ERROR_SUCCESS == res) { + LOGI("Created custom rule (template id=%d, app id=%s)", template->id, app_item->id); + custom_rule_created = true; + } else { + LOGE("Failed to create custom rule (template id=%d, app id=%s). Error=%d", template->id, app_item->id, res); + } + } else { + // Rule editing + const GList *found = g_list_find_custom(choose_app_data->editing_rules_list, app_id, _compare_rule_app_id_cb); + if (NULL != found) { + const get_custom_rule_s *found_rule = found->data; + const int res = privacy_guard_client_update_dlp_custom_rule( + found_rule->id, + editing_rule->action, + editing_rule->pattern_id, + editing_rule->name, + editing_rule->description, + app_id); + if (PRIV_GUARD_ERROR_SUCCESS == res) + LOGI("Updated custom rule (id=%d)", found_rule->id); + else + LOGI("Failed to update custom rule (id=%d). Error=%d", editing_rule->id, res); + } else { + const int res = privacy_guard_client_add_dlp_custom_rule( + getuid(), + editing_rule->action, + editing_rule->pattern_id, + editing_rule->name, + editing_rule->description, + app_id); + if (PRIV_GUARD_ERROR_SUCCESS == res) + LOGI("Created custom rule (app id=%s)", app_id); + else + LOGE("Failed to create custom rule (app id=%s). Error=%d", app_id, res); + } + selected_apps_list = g_list_prepend(selected_apps_list, (SELECT_ALL_APPS_ITEM_ID == app_item->id) ? "" : app_item->id); + } + + if (SELECT_ALL_APPS_ITEM_ID == app_item->id) + break; + } + + if (NULL != editing_rule) { + // delete rules that were unchecked by the user + delete_unchecked_apps_rules(choose_app_data->editing_rules_list, selected_apps_list); + } + + g_list_free(selected_apps_list); + + if (custom_rule_created) { + if (NULL == choose_app_data->rule_list_data) { + show_toast_notification( + dgettext("privacy-setting", PRIVACY_MENU_DLP_CUSTOM_PROTECTION_MODE_APPLIED), + choose_app_data->ad->win); + } else { + show_toast_notification( + dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE), + choose_app_data->ad->win); + } + } + + // Update profile + if (NULL != choose_app_data->config) { + choose_app_data->config->profile = PRIV_GUARD_DLP_PROFILE_CUSTOM; + privacy_guard_client_set_dlp_profile(getuid(), choose_app_data->config); + } + // Refresh main menu to update new profile value + elm_genlist_realized_items_update(elm_object_item_part_content_get(choose_app_data->pop_to_nf_it, "default")); + + clean_up_privacy_dlp_choose_rule_template_view(); + + elm_naviframe_item_pop_to(choose_app_data->pop_to_nf_it); + + if (NULL != choose_app_data->rule_list_data) + // Update rules list view + update_privacy_dlp_rules_list_view(choose_app_data->rule_list_data); + else + // Create rules list view + create_privacy_dlp_reports_rules_and_patterns_view(choose_app_data->ad, choose_app_data->config); +} + +static void _choose_app_next_cb(void *data, Evas_Object *obj, void *event_info) +{ + choose_app_data_s *choose_app_data = data; + create_privacy_dlp_rule_edit_view( + choose_app_data->ad, + choose_app_data->pop_to_nf_it, + choose_app_data->config, + NULL, + choose_app_data->app_list, + choose_app_data->rule_list_data, + NULL); +} + +/** + * @brief Internal callback function when an application item is selected. + * @param[in] data The user data passed to the elm_genlist_item_append() function + * @param[in] obj The object invoking this callback function + * @param[in] event_info The structure containing the information on this event + */ +static void _choose_app_menu_item_selected_cb(void *data, Evas_Object *obj, void *event_info) +{ + /* Get selected item */ + Elm_Object_Item *ei = event_info; + application_item_s *app_item = elm_object_item_data_get(ei); + + /* Unhighlight selected item */ + elm_genlist_item_selected_set(ei, EINA_FALSE); + + app_item->is_checked = !app_item->is_checked; + + /* Set check box state, in case user tapped outside it */ + elm_check_state_set(app_item->check, app_item->is_checked ? EINA_TRUE : EINA_FALSE); + + choose_app_data_s *choose_app_data = data; + if (SELECT_ALL_APPS_ITEM_ID != app_item->id) { + Elm_Object_Item *select_all_item = elm_genlist_nth_item_get(choose_app_data->genlist, 0); + if (!app_item->is_checked) { + /* set "Select all" check off */ + set_app_item_check_state(select_all_item, false); + } else { + bool all_selected = true; + GList *l; + // check if all items are selected. Note that the 1st element of app_list + // is the select button, so we start looping from the 2nd element + for (l = g_list_nth(choose_app_data->app_list, 1); l != NULL; l = l->next) { + if (!((application_item_s *)l->data)->is_checked) { + all_selected = false; + break; + } + } + /* if all items are selected, set select all check on */ + if (all_selected) + set_app_item_check_state(select_all_item, true); + } + } else { + /* Select or deselect items */ + ei = elm_genlist_item_next_get(ei); + while (NULL != ei) { + set_app_item_check_state(ei, app_item->is_checked); + ei = elm_genlist_item_next_get(ei); + } + } + + const Eina_Bool disable_next_button = get_number_of_selected_apps(choose_app_data->genlist) == 0 ? EINA_TRUE : EINA_FALSE; + if (NULL != choose_app_data->done_button) + elm_object_disabled_set(choose_app_data->done_button, disable_next_button); + else if (NULL != choose_app_data->next_button) + elm_object_disabled_set(choose_app_data->next_button, disable_next_button); +} + +size_t get_number_of_selected_apps(Evas_Object *genlist) +{ + const size_t total_apps = elm_genlist_items_count(genlist); + size_t app_count = 0; + size_t i; + // Count checked log ids + for (i = 1; i <= total_apps; ++i) { // note that 0th item is "Select all", so we skip it + Elm_Object_Item *item = elm_genlist_nth_item_get(genlist, i); + if (NULL != item) { + application_item_s *app_item = elm_object_item_data_get(item); + if (NULL != app_item && app_item->is_checked) + ++app_count; + } + } + + return app_count; +} + +void create_select_all_apps_item(choose_app_data_s *data) +{ + // Note that select_all_item bellow will be freed by free_application_item(), + // called in _choose_app_nf_pop_cb() + application_item_s *select_all_item = calloc(1, sizeof(application_item_s)); + if (NULL != select_all_item) { + select_all_item->id = SELECT_ALL_APPS_ITEM_ID; + select_all_item->name = strdup(dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_SELECT_ALL)); + const get_custom_rule_s *editing_rule = data->editing_rule; + select_all_item->is_checked = (NULL == editing_rule || (NULL != editing_rule && '\0' == editing_rule->application_id[0])); + select_all_item->check = NULL; + data->app_list = g_list_prepend(data->app_list, select_all_item); + } +} + +void set_app_item_check_state(Elm_Object_Item *item, const bool state) +{ + if (NULL != item) { + application_item_s *app_item = elm_object_item_data_get(item); + app_item->is_checked = state; + elm_check_state_set(app_item->check, state ? EINA_TRUE : EINA_FALSE); + } +} + +void delete_unchecked_apps_rules(const GList *editing_rules_list, GList *selected_apps_list) +{ + const GList *l; + for (l = editing_rules_list; l != NULL; l = l->next) { + const get_custom_rule_s *rule = l->data; + if (NULL != g_list_find_custom(selected_apps_list, rule->application_id, _compare_selected_app_id_cb)) + continue; + + const int res = privacy_guard_client_delete_dlp_custom_rule(rule->id); + if (PRIV_GUARD_ERROR_SUCCESS == res) + LOGD("Rule %d deleted", rule->id); + else + LOGE("Failed to delete rule %d. Error=%d", rule->id, res); + } +} + +/** + * @brief Displays the Choose Applications view + * @param[in] ad the appliation data + * @param[in] pop_to_nf_it the view to return to after user press the done button + * @param[in] config the user's configuration + * @param[in] rule_template the pattern to be used as template for new rules + * @param[in] rule_list_data pointer to a dlp_rule_list_data_s. May be NULL + * @param[in] editing_rule rule being currently edited. May be NULL + * @param[in] original_rule original rule (before editing). May be NULL if editing_rule is NULL + */ +void create_privacy_dlp_choose_apps_view(struct app_data_s *ad, Elm_Object_Item *pop_to_nf_it, dlp_profile_s *config, const get_pattern_s *rule_template, void *rule_list_data, const get_custom_rule_s *editing_rule, const get_custom_rule_s *original_rule) +{ + if (NULL == ad || NULL == pop_to_nf_it || (NULL != editing_rule && NULL == original_rule)) { + LOGE("Invalid parameter"); + return; + } + + static choose_app_data_s data = { .ad = NULL, .app_list = NULL, .config = NULL, .rule_template = NULL, .genlist = NULL, .pop_to_nf_it = NULL }; + data.ad = ad; + g_list_free_full(data.app_list, free_application_item); + data.app_list = NULL; + data.config = config; + data.rule_template = rule_template; + data.editing_rule = editing_rule; + data.original_rule = original_rule; + data.editing_rules_list = NULL; + data.rule_list_data = rule_list_data; + data.pop_to_nf_it = pop_to_nf_it; + data.done_button = NULL; + data.next_button = NULL; + + if (NULL != data.editing_rule) { + const int res = privacy_guard_client_foreach_dlp_rules(getuid(), PRIV_GUARD_DLP_PROFILE_CUSTOM, _choose_apps_get_custom_rules_cb, &data); + if (PRIV_GUARD_ERROR_SUCCESS != res) { + LOGE("privacy_guard_client_foreach_dlp_rules() failed. Error=%d", res); + return; + } + } + + const int res = app_manager_foreach_app_info(_choose_app_app_info_cb, &data); + if (res < 0) { + LOGE("app_manager_foreach_app_info() failed. Error=%d", res); + return; + } + + data.app_list = g_list_sort(data.app_list, _compare_apps_cb); + create_select_all_apps_item(&data); + + data.genlist = common_genlist_add(ad->nf); + evas_object_size_hint_weight_set(data.genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(data.genlist, EVAS_HINT_FILL, EVAS_HINT_FILL); + + Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new(); + itc->item_style = "multiline"; + itc->func.text_get = _gl_choose_app_text_get_cb; + itc->func.content_get = _gl_choose_app_content_get_cb; + itc->func.del = NULL; + Elm_Object_Item *it = NULL; + GList* l; + for (l = data.app_list; l != NULL; l = l->next) { + // append item to the genlist + it = elm_genlist_item_append(data.genlist, itc, l->data, NULL, ELM_GENLIST_ITEM_NONE, _choose_app_menu_item_selected_cb, &data); + log_if(it == NULL, 1, "Error in elm_genlist_item_append"); + } + + evas_object_show(data.genlist); + + /* Add genlist to naviframe */ + Elm_Object_Item *nf_it = elm_naviframe_item_push( + ad->nf, + dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_CHOOSE_APPS), + NULL, + NULL, + data.genlist, + NULL); + + /* set callback to genlist item pop event */ + elm_naviframe_item_pop_cb_set(nf_it, _choose_app_nf_pop_cb, &data); + /* add cancel button to naviframe title bar */ + common_naviframe_btn_add(ad->nf, nf_it, true, dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_CANCEL), + _choose_app_cancel_cb, &data); + if (NULL != rule_template || NULL != editing_rule) + /* this is the quick rule creation flow or the rule edit flow, so add a done button to naviframe title bar */ + data.done_button = common_naviframe_btn_add(ad->nf, nf_it, false, dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_DONE), + _choose_app_done_cb, &data); + else + /* this is the custom rule creation flow, add next button to naviframe title bar */ + data.next_button = common_naviframe_btn_add(ad->nf, nf_it, false, dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_NEXT), + _choose_app_next_cb, &data); +} diff --git a/ui/src/privacy_dlp_choose_rule_template_view.c b/ui/src/privacy_dlp_choose_rule_template_view.c new file mode 100644 index 0000000..d3f5919 --- /dev/null +++ b/ui/src/privacy_dlp_choose_rule_template_view.c @@ -0,0 +1,370 @@ +/* + * Copyright (c) 2017 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* + * @file privacy_dlp_choose_rule_template_view.c + * @version 1.0 + * @brief + */ + +#include "common_utils.h" +#include "privacy_view.h" +#include <privacy_guard_client.h> +#include <efl_extension.h> + +// Struct used to store rule template menu data +typedef struct { + struct app_data_s *ad; + GList *patterns_in_use_list; + GList *pattern_list; + const get_pattern_s *current_pattern; + dlp_profile_s *config; + void *rule_list_view_data; + Evas_Object *radio_group; + Evas_Object *next_button; + Elm_Object_Item *pop_to_nf_it; +} quick_rule_template_data_s; + +static quick_rule_template_data_s quick_rule_template_data = { + .ad = NULL, + .patterns_in_use_list = NULL, + .pattern_list = NULL, + .current_pattern = NULL, + .config = NULL, + .radio_group = NULL, + .next_button = NULL, + .pop_to_nf_it = NULL }; + +// Struct used to create rule template menu items +typedef struct { + get_pattern_s *pattern; + Evas_Object *radio; +} quick_rule_template_item_s; + +static bool _choose_rule_template_dlp_pattern_cb( + int id, + const char *pattern, + const char *name, + const char *description, + PgDlpPatternType type, + const char *category, + bool undeletable, + int leaks_count, + void *user_data) +{ + get_pattern_s *dlp_pattern = malloc(sizeof(get_pattern_s)); + + if (dlp_pattern != NULL) { + dlp_pattern->id = id; + strncpy(dlp_pattern->pattern, pattern, LEN_PATTERN); + dlp_pattern->pattern[LEN_PATTERN - 1] = '\0'; + strncpy(dlp_pattern->name, name, LEN_NAME); + dlp_pattern->name[LEN_NAME - 1] = '\0'; + strncpy(dlp_pattern->description, description, LEN_DESCRIPTION); + dlp_pattern->description[LEN_DESCRIPTION - 1] = '\0'; + dlp_pattern->type = type; + strncpy(dlp_pattern->category.text, category, LEN_CATEGORY); + dlp_pattern->category.text[LEN_CATEGORY - 1] = '\0'; + dlp_pattern->undeletable = undeletable; + dlp_pattern->leaks_count = leaks_count; + + /* add pattern to pattern list */ + quick_rule_template_data_s *data = user_data; + data->pattern_list = g_list_append(data->pattern_list, dlp_pattern); + } + return true; +} + +/** + * @brief Function that will be operated when rule template genlist is deleted. + * @param[in] data The item data passed to the elm_genlist_item_append() function + * @param[in] obj The Evas object handle to be passed to the callback function + */ +static void _gl_rule_template_del_cb(void *data, Evas_Object *obj) +{ + quick_rule_template_item_s *item = data; + evas_object_del(item->radio); + free(item); +} + +/** + * @brief Internal callback function invoked when rule template genlist item displayed + * @param[in] data The item data passed to the elm_genlist_item_append() function + * @param[in] obj The object invoking this callback function + * @param[in] part The name of the item's part being rendered + */ +static char *_gl_rule_template_text_get_cb(void *data, Evas_Object *obj, const char *part) +{ + get_pattern_s *dlp_pattern = ((quick_rule_template_item_s *)data)->pattern; + + if (!strcmp(part, "elm.text")) + return strdup(dlp_pattern->name); + + else if (!strcmp(part, "elm.text.multiline")) + return strdup(dlp_pattern->description); + + else + return NULL; +} + +/** + * @brief Internal callback function invoked when rule template menu item displayed + * @param[in] data The item data passed to the elm_genlist_item_append() function + * @param[in] obj The object invoking this callback function + * @param[in] part The name of the item's part being rendered + */ +static Evas_Object* _gl_rule_template_get_cb(void *data, Evas_Object *obj, const char *part) +{ + if (strcmp(part, "elm.swallow.end") == 0) { + quick_rule_template_item_s *item = data; + item->radio = elm_radio_add(obj); + elm_radio_state_value_set(item->radio, item->pattern->id); + return item->radio; + } + + return NULL; +} + +/** + * @brief Internal callback function when a rule template is selected. + * @param[in] data The user data passed to the elm_genlist_item_append() function + * @param[in] obj The object invoking this callback function + * @param[in] event_info The structure containing the information on this event + */ +static void _rule_template_menu_item_selected_cb(void *data, Evas_Object *obj, void *event_info) +{ + Elm_Object_Item *ei = event_info; + + /* Unhighlight selected item */ + elm_genlist_item_selected_set(ei, EINA_FALSE); + + /* Set radio group state */ + quick_rule_template_item_s *item = elm_object_item_data_get(ei); + quick_rule_template_data_s *template_menu_data = data; + template_menu_data->current_pattern = item->pattern; + elm_radio_value_set(template_menu_data->radio_group, item->pattern->id); +} + +/** + * @brief Internal callback function when a rule template item is realized. + * @param[in] data The user data passed to the evas_object_smart_callback_add() function + * @param[in] obj The object invoking this callback function + * @param[in] event_info The structure containing the information on this event + */ +static void _gl_rule_template_item_realized_cb(void *data, Evas_Object *obj, void *event_info) +{ + quick_rule_template_item_s *item = elm_object_item_data_get(event_info); + quick_rule_template_data_s *template_menu_data = data; + + if (NULL == template_menu_data->radio_group && + NULL == g_list_find(template_menu_data->patterns_in_use_list, GINT_TO_POINTER(item->pattern->id))) { + // start of radio group + template_menu_data->radio_group = item->radio; + template_menu_data->current_pattern = item->pattern; + elm_radio_value_set(template_menu_data->radio_group, item->pattern->id); + elm_object_disabled_set(quick_rule_template_data.next_button, EINA_FALSE); + } else { + elm_radio_group_add(item->radio, template_menu_data->radio_group); + } +} + +/** + * @brief Internal callback function when the cancel button is pressed + * @param[in] data The user data passed to the callback function + * @param[in] obj The object invoking this callback function + * @param[in] event_info The structure containing the information on this event + */ +static void _rule_template_cancel_cb(void *data, Evas_Object *obj, void *event_info) +{ + quick_rule_template_data_s *rule_template_data = data; + elm_naviframe_item_pop(rule_template_data->ad->nf); +} + +/** + * @brief Internal callback function when the next button is pressed + * @param[in] data The user data passed to the callback function + * @param[in] obj The object invoking this callback function + * @param[in] event_info The structure containing the information on this event + */ +static void _rule_template_next_cb(void *data, Evas_Object *obj, void *event_info) +{ + quick_rule_template_data_s *rule_template_data = data; + create_privacy_dlp_choose_apps_view( + rule_template_data->ad, + rule_template_data->pop_to_nf_it, + rule_template_data->config, + rule_template_data->current_pattern, + rule_template_data->rule_list_view_data, + NULL, + NULL); +} + +static void _gl_rule_template_item_swipe(void *data, Evas_Object *obj, void *event_info) +{ + Eina_List* items = elm_genlist_realized_items_get(obj); + if (NULL == items) { + return; + } + + void *first_item = eina_list_data_get(items); + if (NULL == first_item) { + items = eina_list_free(items); + return; + } + + quick_rule_template_item_s *item_data = elm_object_item_data_get(first_item); + if (NULL == item_data) { + items = eina_list_free(items); + return; + } + + // resets radio group head to the genlist's first realized item + quick_rule_template_data_s *template_menu_data = data; + template_menu_data->radio_group = item_data->radio; + + // add other realized items to radio group + size_t i; + for (i = 1; i < eina_list_count(items); ++i) { + void* nth_item = eina_list_nth(items, i); + if (NULL == nth_item) { + return; + } + + item_data = elm_object_item_data_get(nth_item); + elm_radio_group_add(item_data->radio, template_menu_data->radio_group); + } + + if (NULL != template_menu_data->current_pattern) + elm_radio_value_set(template_menu_data->radio_group, template_menu_data->current_pattern->id); + + items = eina_list_free(items); +} + +/** + * @brief Internal callback function when the choose template menu is popped from naviframe + * @param[in] data The user data passed to the callback function + * @param[in] obj The object invoking this callback function + */ +Eina_Bool _rule_template_nf_pop_cb(void *data, Evas_Object* obj) +{ + quick_rule_template_data_s *rule_template_data = data; + g_list_free_full(rule_template_data->pattern_list, free_dlp_pattern); + rule_template_data->pattern_list = NULL; + g_list_free(rule_template_data->patterns_in_use_list); + rule_template_data->patterns_in_use_list = NULL; + deselect_create_rule_radio_group(); + return EINA_TRUE; +} + +/** + * @brief clean up the Choose Rule Template view's data +*/ +void clean_up_privacy_dlp_choose_rule_template_view() +{ + g_list_free_full(quick_rule_template_data.pattern_list, free_dlp_rule); + quick_rule_template_data.pattern_list = NULL; +} + +/** + * @brief Displays the quick rule creation view + * @param[in] ad the appliation data + * @param[in] pop_to_nf_it the view to pop to after user creates a new rule + * @param[in] config the user's configuration + * @param[in] rule_list_view_data pointer to a dlp_rule_list_data_s. May be NULL + */ +void create_privacy_dlp_choose_rule_template_view(struct app_data_s *ad, Elm_Object_Item *pop_to_nf_it, dlp_profile_s *config, void *rule_list_view_data) +{ + if (NULL == ad) { + LOGE("Invalid parameter"); + return; + } + + quick_rule_template_data.ad = ad; + g_list_free(quick_rule_template_data.patterns_in_use_list); + g_list_free_full(quick_rule_template_data.pattern_list, free_dlp_pattern); + quick_rule_template_data.pattern_list = NULL; + quick_rule_template_data.current_pattern = NULL; + quick_rule_template_data.config = config; + quick_rule_template_data.rule_list_view_data = rule_list_view_data; + quick_rule_template_data.radio_group = NULL; + quick_rule_template_data.pop_to_nf_it = pop_to_nf_it; + + const bool got_patterns = get_pattern_ids_in_use_list(&(quick_rule_template_data.patterns_in_use_list)); + log_if(!got_patterns, 1, "get_pattern_ids_in_use_list() failed"); + + const int res = privacy_guard_client_foreach_dlp_patterns(_choose_rule_template_dlp_pattern_cb, &quick_rule_template_data); + if (PRIV_GUARD_ERROR_SUCCESS != res) { + LOGE("privacy_guard_client_foreach_dlp_patterns() failed. [%d]", res); + return; + } + + Evas_Object *genlist = common_genlist_add(ad->nf); + evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL); + + Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new(); + + itc->item_style = "multiline"; + itc->func.text_get = _gl_rule_template_text_get_cb; + itc->func.content_get = _gl_rule_template_get_cb; + itc->func.del = _gl_rule_template_del_cb; + + Elm_Object_Item *it = NULL; + GList* l; + for (l = quick_rule_template_data.pattern_list; l != NULL; l = l->next) { + quick_rule_template_item_s *item = calloc(1, sizeof(quick_rule_template_item_s)); + + if (item != NULL) { + // item data + item->pattern = l->data; + item->radio = NULL; + + // append item to the genlist + it = elm_genlist_item_append(genlist, itc, item, NULL, ELM_GENLIST_ITEM_NONE, _rule_template_menu_item_selected_cb, &quick_rule_template_data); + log_if(it == NULL, 1, "Error in elm_genlist_item_append"); + + // check if pattern is already in use + if (g_list_find(quick_rule_template_data.patterns_in_use_list, GINT_TO_POINTER(item->pattern->id)) != NULL) + elm_object_item_disabled_set(it, EINA_TRUE); + + evas_object_smart_callback_add(genlist, "realized", _gl_rule_template_item_realized_cb, &quick_rule_template_data); + } else { + LOGE("privacy_guard_client_foreach_dlp_patterns() failed to calloc quick_rule_template_item_s"); + } + } + + evas_object_smart_callback_add(genlist, "swipe", _gl_rule_template_item_swipe, &quick_rule_template_data); + + evas_object_show(genlist); + + /* Add genlist to naviframe */ + Elm_Object_Item *nf_it = elm_naviframe_item_push( + ad->nf, + dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_CHOOSE_TEMPLATE), + NULL, + NULL, + genlist, + NULL); + + /* set callback to genlist item pop event */ + elm_naviframe_item_pop_cb_set(nf_it, _rule_template_nf_pop_cb, &quick_rule_template_data); + /* add cancel button to naviframe title bar */ + common_naviframe_btn_add(ad->nf, nf_it, true, dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_CANCEL), + _rule_template_cancel_cb, &quick_rule_template_data); + /* add next button to naviframe title bar */ + quick_rule_template_data.next_button = common_naviframe_btn_add(ad->nf, nf_it, false, + dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_NEXT), _rule_template_next_cb, &quick_rule_template_data); + elm_object_disabled_set(quick_rule_template_data.next_button, EINA_TRUE); +} diff --git a/ui/src/privacy_dlp_log_detailed_view.c b/ui/src/privacy_dlp_log_detailed_view.c new file mode 100644 index 0000000..6fbb069 --- /dev/null +++ b/ui/src/privacy_dlp_log_detailed_view.c @@ -0,0 +1,253 @@ +/** + * Copyright (c) 2017 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* + * @file privacy_dlp_log_detailed_view.c + * @version 1.0 + * @brief + */ + +#include <efl_extension.h> +#include <glib.h> +#include <time.h> +#include <tzplatform_config.h> +#include <privacy_guard_client.h> +#include "common_ctxpopup.h" +#include "common_popup.h" +#include "common_utils.h" +#include "privacy_setting.h" +#include "privacy_view.h" +#include "privilege_info.h" + +typedef struct { + struct app_data_s *ad; + Evas_Object *entry; + Evas_Object *ctxpopup; + Evas_Object *confirm_popup; + dlp_item_log_s *item; +} log_details_data_s; + +static log_details_data_s log_details_data = { + .ad = NULL, + .entry = NULL, + .ctxpopup = NULL, + .confirm_popup = NULL, + .item = NULL +}; + +static void _log_details_popup_ok_cb(void *data, Evas_Object *obj, void *event_info) +{ + log_details_data_s *ldd = data; + const dlp_log_s *leak_log = ldd->item->data; + const int log_id = leak_log->log_id; + + const int res = privacy_guard_client_purge_leak_logs_by_logid(&log_id, 1); + if (PRIV_GUARD_ERROR_SUCCESS == res) + show_toast_notification(dgettext("privacy-setting", PRIVACY_MENU_DLP_LOG_DELETED), ldd->entry); + else + LOGE("Failed to delete logs. Error=%d", res); + + destroy_popup(ldd->confirm_popup); + ldd->confirm_popup = NULL; + elm_naviframe_item_pop(ldd->ad->nf); + update_privacy_dlp_reports_full_view(); +} + +static void _log_details_popup_cancel_cb(void *data, Evas_Object *obj, void *event_info) +{ + log_details_data_s *ldd = data; + destroy_popup(ldd->confirm_popup); + ldd->confirm_popup = NULL; +} + +static void _log_details_delete_menu_cb(void *data, Evas_Object *obj, void *event_info) +{ + log_details_data_s *ldd = data; + delete_ctxpopup(ldd->ctxpopup); + ldd->confirm_popup = create_two_buttons_popup( + ldd->entry, + dgettext("privacy-setting", PRIVACY_MENU_DLP_LOG_DELETE_LOG), + dgettext("privacy-setting", PRIVACY_MENU_DLP_LOG_ITEM_WILL_BE_DELETED), + dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_OK), + _log_details_popup_ok_cb, + dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_CANCEL), + _log_details_popup_cancel_cb, + _log_details_popup_cancel_cb, ldd); +} + +static void _log_details_menu_cb(void *data, Evas_Object *obj, void *event_info) +{ + log_details_data_s *ldd = data; + ldd->ctxpopup = create_ctxpop(ldd->ad); + elm_ctxpopup_item_append(ldd->ctxpopup, dgettext("privacy-setting", PRIVACY_MENU_DLP_LOG_DELETE), NULL, _log_details_delete_menu_cb, data); +} + +static void _log_details_back_cb(void *data, Evas_Object *obj, void *event_info) +{ + log_details_data_s *ldd = data; + destroy_popup(ldd->confirm_popup); + ldd->confirm_popup = NULL; + elm_naviframe_item_pop(ldd->ad->nf); +} + +char* get_log_action(int action) +{ + switch (action) { + case PRIV_GUARD_DLP_ACTION_ALLOW: + return dgettext("privacy-setting", PRIVACY_MENU_DLP_REPORTS_DETAILS_ACTION_ALLOW); + case PRIV_GUARD_DLP_ACTION_DENY: + return dgettext("privacy-setting", PRIVACY_MENU_DLP_REPORTS_DETAILS_ACTION_DENY); + case PRIV_GUARD_DLP_ACTION_SANITIZE: + return dgettext("privacy-setting", PRIVACY_MENU_DLP_REPORTS_DETAILS_ACTION_SANITIZE); + default: + return " "; + } +} + +bool is_undisplayable_char(const unsigned char value) +{ + return (value != 0xa && value != 0xd && (value < ' ' || value > '~')); +} + +/** + * @brief Displays leak log details on the screen + * @param[in] item The log item to be displayed + * @param[in] ad The application data + */ +void create_privacy_dlp_log_detailed_view(dlp_item_log_s *item, struct app_data_s *ad) +{ + // Create a message entry + Evas_Object *entry = elm_entry_add(ad->nf); + elm_entry_editable_set(entry, EINA_FALSE); + elm_entry_scrollable_set(entry, EINA_TRUE); + elm_entry_line_wrap_set(entry, ELM_WRAP_CHAR); + elm_scroller_policy_set(entry, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_ON); + evas_object_size_hint_align_set(entry, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_size_hint_weight_set(entry, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + + uid_t user_id = getuid(); + + leak_log_get_detail_data_s detailed_log; + int res = privacy_guard_client_get_leak_log_detail(user_id, item->data->log_id, &detailed_log); + log_if(res != PRIV_GUARD_ERROR_SUCCESS, 1, "privacy_guard_client_get_leak_log_detail() is failed. [%d]", res); + + char *log_info_syntax = "<br><b>%s </b> %s<br>"; + + size_t string_mem_needed = snprintf(NULL, 0, log_info_syntax, dgettext("privacy-setting", PRIVACY_MENU_DLP_REPORTS_DETAILS_CATEGORY), detailed_log.category.text); + char *string_buf = malloc(string_mem_needed + 1); + if (NULL != string_buf) { + snprintf(string_buf, string_mem_needed+1, log_info_syntax, dgettext("privacy-setting", PRIVACY_MENU_DLP_REPORTS_DETAILS_CATEGORY), detailed_log.category.text); + elm_entry_entry_insert(entry, string_buf); + free(string_buf); + } + + string_mem_needed = snprintf(NULL, 0, log_info_syntax, dgettext("privacy-setting", PRIVACY_MENU_DLP_REPORTS_DETAILS_APPLICATION), detailed_log.application_name); + string_buf = malloc(string_mem_needed + 1); + if (NULL != string_buf) { + snprintf(string_buf, string_mem_needed+1, log_info_syntax, dgettext("privacy-setting", PRIVACY_MENU_DLP_REPORTS_DETAILS_APPLICATION), detailed_log.application_name); + elm_entry_entry_insert(entry, string_buf); + free(string_buf); + } + + string_mem_needed = snprintf(NULL, 0, log_info_syntax, dgettext("privacy-setting", PRIVACY_MENU_DLP_REPORTS_DETAILS_DESTINATION), detailed_log.destination); + string_buf = malloc(string_mem_needed + 1); + if (NULL != string_buf) { + snprintf(string_buf, string_mem_needed+1, log_info_syntax, dgettext("privacy-setting", PRIVACY_MENU_DLP_REPORTS_DETAILS_DESTINATION), detailed_log.destination); + elm_entry_entry_insert(entry, string_buf); + free(string_buf); + } + + string_mem_needed = snprintf(NULL, 0, log_info_syntax, dgettext("privacy-setting", PRIVACY_MENU_DLP_REPORTS_DETAILS_PATTERN), detailed_log.pattern_name); + string_buf = malloc(string_mem_needed + 1); + if (NULL != string_buf) { + snprintf(string_buf, string_mem_needed+1, log_info_syntax, dgettext("privacy-setting", PRIVACY_MENU_DLP_REPORTS_DETAILS_PATTERN), detailed_log.pattern_name); + elm_entry_entry_insert(entry, string_buf); + free(string_buf); + } + + // NOTE: code below is commented out because only allow actions will be + // released to Tizen 4.0, so action information is not meaningful. + // string_mem_needed = snprintf(NULL, 0, log_info_syntax, dgettext("privacy-setting", PRIVACY_MENU_DLP_REPORTS_DETAILS_ACTION), get_log_action(detailed_log.action)); + // string_buf = malloc(string_mem_needed+1); + // sprintf(string_buf, log_info_syntax, dgettext("privacy-setting", PRIVACY_MENU_DLP_REPORTS_DETAILS_ACTION), get_log_action(detailed_log.action)); + // elm_entry_entry_insert(entry, string_buf); + // free(string_buf); + + string_mem_needed = snprintf(NULL, 0, "<br><b>%s</b><br>", dgettext("privacy-setting", PRIVACY_MENU_DLP_REPORTS_DETAILS_LOG)); + string_buf = malloc(string_mem_needed + 1); + if (NULL != string_buf) { + snprintf(string_buf, string_mem_needed+1, "<br><b>%s</b><br>", dgettext("privacy-setting", PRIVACY_MENU_DLP_REPORTS_DETAILS_LOG)); + elm_entry_entry_insert(entry, string_buf); + free(string_buf); + } + + // Copy raw packet to a temporary buffer + const size_t packet_len = (detailed_log.pkt_len < LEN_RAW_PACKET) ? detailed_log.pkt_len : LEN_RAW_PACKET; + char *raw_packet = malloc(packet_len + 1); + + if (raw_packet != NULL) { + memcpy(raw_packet, detailed_log.raw_packet, packet_len); + + size_t i; + // Replaces undisplayable characters with "." + for (i = 0; i < packet_len; ++i) { + if (is_undisplayable_char(raw_packet[i])) + raw_packet[i] = '.'; + } + + const unsigned char last_byte = raw_packet[i]; + char temp_char = raw_packet[detailed_log.leak_offset]; + raw_packet[detailed_log.leak_offset] = 0; + elm_entry_entry_insert(entry, elm_entry_utf8_to_markup(raw_packet)); + elm_entry_entry_insert(entry, "<hilight>"); + raw_packet[detailed_log.leak_offset] = temp_char; + temp_char = raw_packet[detailed_log.leak_offset + detailed_log.leak_len]; + raw_packet[detailed_log.leak_offset + detailed_log.leak_len] = 0; + elm_entry_entry_insert(entry, elm_entry_utf8_to_markup(raw_packet + detailed_log.leak_offset)); + elm_entry_entry_insert(entry, "</hilight>"); + raw_packet[detailed_log.leak_offset + detailed_log.leak_len] = temp_char; + // Make sure buffer is zero terminated + raw_packet[packet_len] = 0; + elm_entry_entry_insert(entry, elm_entry_utf8_to_markup(raw_packet + detailed_log.leak_offset + detailed_log.leak_len)); + + free(raw_packet); + } + + evas_object_show(entry); + + log_details_data.ad = ad; + log_details_data.item = item; + log_details_data.entry = entry; + + if (NULL == log_details_data.confirm_popup) { + destroy_popup(log_details_data.confirm_popup); + log_details_data.confirm_popup = NULL; + } + + log_details_data.ctxpopup = NULL; + + Evas_Object *back_btn = elm_button_add(ad->nf); + elm_object_style_set(back_btn, "naviframe/back_btn/default"); + evas_object_smart_callback_add(back_btn, "clicked", _log_details_back_cb, &log_details_data); + + // Change "Privacy Setting" to proper DID : use dgettext() + Elm_Object_Item *nf_it = elm_naviframe_item_push(ad->nf, dgettext("privacy-setting", PRIVACY_MENU_DLP_REPORTS_LOG_TITLE), back_btn, NULL, entry, NULL); + + /* Register the Back and Menu event callback */ + eext_object_event_callback_add(entry, EEXT_CALLBACK_BACK, _log_details_back_cb, &log_details_data); + eext_object_event_callback_add(entry, EEXT_CALLBACK_MORE, _log_details_menu_cb, &log_details_data); + + elm_object_item_domain_text_translatable_set(nf_it, PACKAGE, EINA_TRUE); +} diff --git a/ui/src/privacy_dlp_menu_view.c b/ui/src/privacy_dlp_menu_view.c new file mode 100644 index 0000000..22fd0d7 --- /dev/null +++ b/ui/src/privacy_dlp_menu_view.c @@ -0,0 +1,814 @@ +/* + * Copyright (c) 2017 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* + * @file privacy_dlp_menu_view.c + * @version 1.0 + * @brief + */ + +#include <efl_extension.h> +#include <glib.h> +#include <tzplatform_config.h> +#include "common_popup.h" +#include "common_utils.h" +#include "privacy_setting.h" +#include "privacy_view.h" +#include "privilege_info.h" + +// Struct used to store profile items +typedef struct { + PgDlpProfile profile; + Evas_Object *radio; +} profile_radio_s; + +// Struct used to store keep days radio items +typedef struct { + int id; // radio id + Evas_Object *radio; // radio component +} keep_days_radio_s; + +// List used as reference to the Report options in DLP menu +GList *menu_reports_list; + +Elm_Object_Item *profile_item; +Elm_Object_Item *keepdays_item; +Elm_Object_Item *main_menu_nf_it; +Evas_Object *profile_radio_group; +Evas_Object *paranoid_popup; +Evas_Object *keep_days_radio_group; +dlp_profile_s config; + +/** + * @brief Internal callback function invoked when dlp on/off genlist item displayed + * @param[in] data The user data passed to the elm_genlist_item_append() function + * @param[in] obj The object invoking this callback function + * @param[in] part The name of the item's part being rendered + */ +static char* _gl_enabled_text_get_cb(void *data, Evas_Object *obj, const char *part) +{ + if (!strcmp(part, "elm.text")) + return strdup(dgettext("privacy-setting", PRIVACY_MENU_DLP_TITLE)); + + else if (!strcmp(part, "elm.text.multiline")) { + const char *format = "%s<font_size=25><br/>%s</font_size>"; + int string_mem_needed = snprintf(NULL, 0, format, + dgettext("privacy-setting", PRIVACY_MENU_DLP_DESCRIPTION), + dgettext("privacy-setting", PRIVACY_MENU_DLP_DESCRIPTION_NOTE)); + char *string_buf = malloc(string_mem_needed+1); + + if (string_buf != NULL) { + snprintf(string_buf, string_mem_needed, format, + dgettext("privacy-setting", PRIVACY_MENU_DLP_DESCRIPTION), + dgettext("privacy-setting", PRIVACY_MENU_DLP_DESCRIPTION_NOTE)); + return string_buf; + } + } + + return NULL; +} + +/** + * @brief Internal callback function invoked when Protection Mode genlist item displayed + * @param[in] data The user data passed to the elm_genlist_item_append() function + * @param[in] obj The object invoking this callback function + * @param[in] part The name of the item's part being rendered + */ +static char* _gl_profile_text_get_cb(void *data, Evas_Object *obj, const char *part) +{ + if (!strcmp(part, "elm.text")) + return strdup(dgettext("privacy-setting", PRIVACY_MENU_DLP_PROFILE)); + + else if (!strcmp(part, "elm.text.multiline")) { + switch (config.profile) { + case PRIV_GUARD_DLP_PROFILE_BASIC: return strdup(dgettext("privacy-setting", PRIVACY_MENU_DLP_PROFILE_BASIC)); + case PRIV_GUARD_DLP_PROFILE_ADVANCED: return strdup(dgettext("privacy-setting", PRIVACY_MENU_DLP_PROFILE_ADVANCED)); + case PRIV_GUARD_DLP_PROFILE_CUSTOM: return strdup(dgettext("privacy-setting", PRIVACY_MENU_DLP_PROFILE_CUSTOM)); + default: LOGE("Invalid dlp profile configuration"); break; + } + } + + return NULL; +} + +static char* _gl_profile_item_text_get_cb(void *data, Evas_Object *obj, const char *part) +{ + profile_radio_s *profile_item = data; + + if (!strcmp(part, "elm.text")) { + switch (profile_item->profile) { + case PRIV_GUARD_DLP_PROFILE_BASIC: + return strdup(dgettext("privacy-setting", PRIVACY_MENU_DLP_PROFILE_BASIC)); + case PRIV_GUARD_DLP_PROFILE_CUSTOM: + return strdup(dgettext("privacy-setting", PRIVACY_MENU_DLP_PROFILE_CUSTOM)); + case PRIV_GUARD_DLP_PROFILE_ADVANCED: + return strdup(dgettext("privacy-setting", PRIVACY_MENU_DLP_PROFILE_ADVANCED)); + default: + LOGE("Invalid dlp profile configuration"); + break; + } + } + + else if (!strcmp(part, "elm.text.multiline")) { + switch (profile_item->profile) { + case PRIV_GUARD_DLP_PROFILE_BASIC: + return strdup(dgettext("privacy-setting", PRIVACY_MENU_DLP_PROFILE_BASIC_DESCRIPTION)); + case PRIV_GUARD_DLP_PROFILE_CUSTOM: + return strdup(dgettext("privacy-setting", PRIVACY_MENU_DLP_PROFILE_CUSTOM_DESCRIPTION)); + case PRIV_GUARD_DLP_PROFILE_ADVANCED: + { + const char *format = "%s<font_size=25><br/>%s</font_size>"; + int string_mem_needed = snprintf(NULL, 0, format, + dgettext("privacy-setting", PRIVACY_MENU_DLP_PROFILE_ADVANCED_DESCRIPTION), + dgettext("privacy-setting", PRIVACY_MENU_DLP_PROFILE_ADVANCED_DESCRIPTION_NOTE)); + char *string_buf = malloc(string_mem_needed+1); + + if (string_buf != NULL) { + snprintf(string_buf, string_mem_needed, format, + dgettext("privacy-setting", PRIVACY_MENU_DLP_PROFILE_ADVANCED_DESCRIPTION), + dgettext("privacy-setting", PRIVACY_MENU_DLP_PROFILE_ADVANCED_DESCRIPTION_NOTE)); + return string_buf; + } + + break; + } + default: + LOGE("Invalid dlp profile configuration"); + break; + } + } + + return NULL; +} + +static Evas_Object* _gl_profile_item_content_get_cb(void *data, Evas_Object *obj, const char *part) +{ + if (strcmp(part, "elm.swallow.end") == 0) { + profile_radio_s *profile_item = data; + profile_item->radio = elm_radio_add(obj); + return profile_item->radio; + } + + return NULL; +} + +static void _gl_profile_item_realized_cb(void *data, Evas_Object *obj, void *event_info) +{ + profile_radio_s *profile_item = elm_object_item_data_get(event_info); + + elm_radio_state_value_set(profile_item->radio, profile_item->profile); + if (PRIV_GUARD_DLP_PROFILE_BASIC == profile_item->profile) { + // start of radio group + profile_radio_group = profile_item->radio; + } else { + elm_radio_group_add(profile_item->radio, profile_radio_group); + if (PRIV_GUARD_DLP_PROFILE_ADVANCED == profile_item->profile) { + // set state of radio group + switch (config.profile) { + case PRIV_GUARD_DLP_PROFILE_BASIC: + elm_radio_value_set(profile_radio_group, PRIV_GUARD_DLP_PROFILE_BASIC); + break; + case PRIV_GUARD_DLP_PROFILE_CUSTOM: + elm_radio_value_set(profile_radio_group, PRIV_GUARD_DLP_PROFILE_CUSTOM); + break; + case PRIV_GUARD_DLP_PROFILE_ADVANCED: + elm_radio_value_set(profile_radio_group, PRIV_GUARD_DLP_PROFILE_ADVANCED); + break; + default: + break; + } + } + } +} + + +/** + * @brief Internal callback function invoked when Reports group genlist item displayed + * @param[in] data The user data passed to the elm_genlist_item_append() function + * @param[in] obj The object invoking this callback function + * @param[in] part The name of the item's part being rendered + */ +static char* _gl_group_reports_text_get_cb(void *data, Evas_Object *obj, const char *part) +{ + if (!strcmp(part, "elm.text")) + return strdup(dgettext("privacy-setting", PRIVACY_MENU_DLP_REPORTS)); + + return NULL; +} + +/** + * @brief Internal callback function invoked when a Report genlist item is displayed + * @param[in] data The user data passed to the elm_genlist_item_append() function + * @param[in] obj The object invoking this callback function + * @param[in] part The name of the item's part being rendered + */ +static char* _gl_reports_text_get_cb(void *data, Evas_Object *obj, const char *part) +{ + item_data_s *id = data; + lreturn_if(!strcmp(part, "elm.text"), , strdup(id->title), "selected menu = %s", id->title); + return "FAIL"; +} + +/** + * @brief Internal callback function invoked when Settings group genlist item is displayed + * @param[in] data The user data passed to the elm_genlist_item_append() function + * @param[in] obj The object invoking this callback function + * @param[in] part The name of the item's part being rendered + */ +static char* _gl_group_settings_text_get_cb(void *data, Evas_Object *obj, const char *part) +{ + if (!strcmp(part, "elm.text")) + return strdup(dgettext("privacy-setting", PRIVACY_MENU_DLP_SETTINGS)); + + return NULL; +} + +/** + * @brief Internal callback function invoked when text of keepdays item is displayed + * @param[in] data The user data passed to the elm_genlist_item_append() function + * @param[in] obj The object invoking this callback function + * @param[in] part The name of the item's part being rendered + */ +static char* _gl_keepdays_text_get_cb(void *data, Evas_Object *obj, const char *part) +{ + if (!strcmp(part, "elm.text")) + return strdup(dgettext("privacy-setting", PRIVACY_MENU_DLP_SETTINGS_LOGS_PERIOD)); + + else if (!strcmp(part, "elm.text.multiline")) { + switch (config.keep_log_days) { + case KEEP_LOG_1_DAY: return strdup(dgettext("privacy-setting", PRIVACY_MENU_DLP_SETTINGS_LOGS_CLEAN_PERIOD_1_DAY)); + case KEEP_LOG_1_WEEK: return strdup(dgettext("privacy-setting", PRIVACY_MENU_DLP_SETTINGS_LOGS_CLEAN_PERIOD_1_WEEK)); + case KEEP_LOG_1_MONTH: return strdup(dgettext("privacy-setting", PRIVACY_MENU_DLP_SETTINGS_LOGS_CLEAN_PERIOD_1_MONTH)); + default: break; + } + } + + return strdup(""); +} + +static char* _gl_keepdays_item_text_get_cb(void *data, Evas_Object *obj, const char *part) +{ + const keep_days_radio_s *keep_days_item = data; + switch (keep_days_item->id) { + case KEEP_LOG_1_DAY: + return strdup(dgettext("privacy-setting", PRIVACY_MENU_DLP_SETTINGS_LOGS_CLEAN_PERIOD_1_DAY)); + case KEEP_LOG_1_WEEK: + return strdup(dgettext("privacy-setting", PRIVACY_MENU_DLP_SETTINGS_LOGS_CLEAN_PERIOD_1_WEEK)); + case KEEP_LOG_1_MONTH: + return strdup(dgettext("privacy-setting", PRIVACY_MENU_DLP_SETTINGS_LOGS_CLEAN_PERIOD_1_MONTH)); + default: + LOGE("Invalid keep logs configuration"); + break; + } + + return NULL; +} + +static Evas_Object* _gl_keepdays_item_content_get_cb(void *data, Evas_Object *obj, const char *part) +{ + if (strcmp(part, "elm.swallow.end") == 0) { + keep_days_radio_s *keep_days_item = data; + keep_days_item->radio = elm_radio_add(obj); + return keep_days_item->radio; + } + + return NULL; +} + +static void _gl_keepdays_item_realized_cb(void *data, Evas_Object *obj, void *event_info) +{ + keep_days_radio_s *keep_days_item = elm_object_item_data_get(event_info); + + elm_radio_state_value_set(keep_days_item->radio, keep_days_item->id); + if (KEEP_LOG_1_DAY == keep_days_item->id) { + // start of radio group + keep_days_radio_group = keep_days_item->radio; + } else { + elm_radio_group_add(keep_days_item->radio, keep_days_radio_group); + if (KEEP_LOG_1_MONTH == keep_days_item->id) { + // set state of radio group + switch (config.keep_log_days) { + case KEEP_LOG_1_DAY: + elm_radio_value_set(keep_days_radio_group, KEEP_LOG_1_DAY); + break; + case KEEP_LOG_1_WEEK: + elm_radio_value_set(keep_days_radio_group, KEEP_LOG_1_WEEK); + break; + case KEEP_LOG_1_MONTH: + elm_radio_value_set(keep_days_radio_group, KEEP_LOG_1_MONTH); + break; + default: + break; + } + } + } +} + +/** + * @brief Internal callback function invoked when dlp on/off button state change. + * @param[in] data The user data passed to the evas_object_smart_callback_add() function + * @param[in] obj The object invoking this callback function + * @param[in] event_info The structure containing the information on this event + */ +static void _check_enabled_changed_cb(void *data, Evas_Object *obj, void *event_info) +{ + uid_t user_id = getuid(); + + int res = privacy_guard_client_set_dlp_profile(user_id, &config); + log_if(res != PRIV_GUARD_ERROR_SUCCESS, 1, "privacy_guard_client_set_dlp_profile() is failed. [%d]", res); +} + +/** + * @brief Internal callback function invoked when DLP on/off genlist item displayed. + * @param[in] data The user data passed to the elm_genlist_item_append() function + * @param[in] obj The object invoking this callback function + * @param[in] part The name of the item's part being rendered + */ +static Evas_Object *_gl_enabled_content_get_cb(void *data, Evas_Object *obj, const char *part) +{ + if (!strcmp(part, "elm.swallow.end")) { + Evas_Object *check = elm_check_add(obj); + + evas_object_smart_callback_add(check, "changed", _check_enabled_changed_cb, NULL); + evas_object_propagate_events_set(check, EINA_FALSE); + + evas_object_size_hint_weight_set(check, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(check, EVAS_HINT_FILL, EVAS_HINT_FILL); + + elm_object_style_set(check, "on&off"); + elm_check_state_set(check, false); + elm_check_state_pointer_set(check, (Eina_Bool *)(&(config.enabled))); + + return check; + } + + return NULL; +} + +/** + * @brief Internal callback function when log cleanup period change to monthly. + * @param[in] config The configuration with new period value + * @param[in] obj The object invoking this callback function + */ +static void update_config_value(void *data, Elm_Object_Item* item) +{ + struct app_data_s *ad = data; + + privacy_guard_client_set_dlp_profile(getuid(), &config); + + elm_naviframe_item_pop(ad->nf); + elm_genlist_item_update(item); +} + +/** + * @brief Internal callback function when default profile is selected. + * @param[in] data The user data passed to the evas_object_smart_callback_add() function + * @param[in] obj The object invoking this callback function + * @param[in] event_info The structure containing the information on this event + */ +static void _change_profile_item_select_default_cb(void *data, Evas_Object *obj, void *event_info) +{ + Elm_Object_Item *ei = event_info; + + /* Unhighlight selected item */ + elm_genlist_item_selected_set(ei, EINA_FALSE); + + if (PRIV_GUARD_DLP_PROFILE_BASIC == config.profile) { + /* Profile is already set to default, so nothing to do */ + return; + } + + config.profile = PRIV_GUARD_DLP_PROFILE_BASIC; + update_config_value(data, profile_item); + + show_toast_notification( + dgettext("privacy-setting", PRIVACY_MENU_DLP_BASIC_PROTECTION_MODE_APPLIED), + ((struct app_data_s *)data)->win); +} + +static bool _dlp_custom_rule_cb(int id, PgDlpAction action, int pattern_id, const char *name, const char *description, const char *application_id, int leaks_count, void *user_data) +{ + int *number_of_rules = user_data; + ++(*number_of_rules); + return true; +} + +/** + * @brief Internal callback function when custom profile is selected. + * @param[in] data The user data passed to the evas_object_smart_callback_add() function + * @param[in] obj The object invoking this callback function + * @param[in] event_info The structure containing the information on this event + */ +static void _change_profile_item_select_custom_cb(void *data, Evas_Object *obj, void *event_info) +{ + Elm_Object_Item *ei = event_info; + + /* Unhighlight selected item */ + elm_genlist_item_selected_set(ei, EINA_FALSE); + + if (PRIV_GUARD_DLP_PROFILE_CUSTOM == config.profile) { + /* Profile is already set to default, so nothing to do */ + return; + } + + int number_of_rules = 0; + int res = privacy_guard_client_foreach_dlp_rules(getuid(), PRIV_GUARD_DLP_PROFILE_CUSTOM, _dlp_custom_rule_cb, &number_of_rules); + if (PRIV_GUARD_ERROR_SUCCESS != res) { + LOGE("privacy_guard_client_foreach_dlp_rules() failed. Error=%d", res); + return; + } + + if (0 == number_of_rules) { + //show_create_rule_menu(data); + create_privacy_dlp_rule_create_view(data, main_menu_nf_it, &config, NULL); + } else { + config.profile = PRIV_GUARD_DLP_PROFILE_CUSTOM; + update_config_value(data, profile_item); + // display rules and patterns list + create_privacy_dlp_reports_rules_and_patterns_view(data, &config); + } +} + +static void _paranoid_popup_ok_cb(void *data, Evas_Object *obj, void *event_info) +{ + config.profile = PRIV_GUARD_DLP_PROFILE_ADVANCED; + update_config_value(data, profile_item); + show_toast_notification( + dgettext("privacy-setting", PRIVACY_MENU_DLP_ADVANCED_PROTECTION_MODE_APPLIED), + ((struct app_data_s *)data)->win); + destroy_popup(paranoid_popup); +} + +static void _paranoid_popup_cancel_cb(void *data, Evas_Object *obj, void *event_info) +{ + elm_radio_value_set(profile_radio_group, config.profile); + destroy_popup(paranoid_popup); +} + +/** + * @brief Internal callback function when paranoid profile is selected. + * @param[in] data The user data passed to the evas_object_smart_callback_add() function + * @param[in] obj The object invoking this callback function + * @param[in] event_info The structure containing the information on this event + */ +static void _change_profile_item_select_paranoid_cb(void *data, Evas_Object *obj, void *event_info) +{ + Elm_Object_Item *ei = event_info; + + /* Unhighlight selected item */ + elm_genlist_item_selected_set(ei, EINA_FALSE); + + elm_radio_value_set(profile_radio_group, PRIV_GUARD_DLP_PROFILE_ADVANCED); + + if (PRIV_GUARD_DLP_PROFILE_ADVANCED == config.profile) { + /* Profile is already set to paranoid, so nothing to do */ + return; + } + + paranoid_popup = create_two_buttons_popup( + ((struct app_data_s *)data)->nf, + dgettext("privacy-setting", PRIVACY_MENU_DLP_PROFILE_ADVANCED_MODE), + dgettext("privacy-setting", PRIVACY_MENU_DLP_PROFILE_ADVANCED_ALERT), + dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_OK), + _paranoid_popup_ok_cb, + dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_CANCEL), + _paranoid_popup_cancel_cb, + _paranoid_popup_cancel_cb, + data); +} + +/** + * @brief Internal callback function to dismiss ctxpopup. + * @param[in] data The user data passed to the evas_object_smart_callback_add() function + * @param[in] obj The object invoking this callback function + * @param[in] event_info The structure containing the information on this event + */ +static void _dismissed_profile_cb(void *data, Evas_Object *obj, void *event_info) +{ + Evas_Object *ctxpopup = data; + + evas_object_smart_callback_del(ctxpopup, "dismissed", _dismissed_profile_cb); + evas_object_del(ctxpopup); +} + +/** + * @brief Internal callback function invoked when profile menu is clicked. + * @param[in] data The user data passed to the evas_object_smart_callback_add() function + * @param[in] obj The object invoking this callback function + * @param[in] event_info The structure containing the information on this event + */ +static void _selected_profile_cb(void *data, Evas_Object *obj, void *event_info) +{ + struct app_data_s *ad = data; + + /* Get selected privacy */ + Elm_Object_Item *ei = event_info; + + /* Unhighlight selected item */ + elm_genlist_item_selected_set(ei, EINA_FALSE); + + Evas_Object *genlist = NULL; + genlist = common_genlist_add(ad->nf); + evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL); + elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS); + + elm_object_style_set(genlist, "effect"); + + Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new(); + + itc->item_style = "multiline"; + itc->func.text_get = _gl_profile_item_text_get_cb; + itc->func.content_get = _gl_profile_item_content_get_cb; + itc->func.del = NULL; + + static profile_radio_s profile_item_default = { .profile = PRIV_GUARD_DLP_PROFILE_BASIC, .radio = NULL }; + elm_genlist_item_append(genlist, itc, &profile_item_default, NULL, ELM_GENLIST_ITEM_NONE, _change_profile_item_select_default_cb, ad); + + static profile_radio_s profile_item_custom = { .profile = PRIV_GUARD_DLP_PROFILE_CUSTOM, .radio = NULL }; + elm_genlist_item_append(genlist, itc, &profile_item_custom, NULL, ELM_GENLIST_ITEM_NONE, _change_profile_item_select_custom_cb, ad); + + static profile_radio_s profile_item_paranoid = { .profile = PRIV_GUARD_DLP_PROFILE_ADVANCED, .radio = NULL }; + elm_genlist_item_append(genlist, itc, &profile_item_paranoid, NULL, ELM_GENLIST_ITEM_NONE, _change_profile_item_select_paranoid_cb, ad); + + evas_object_smart_callback_add(genlist, "realized", _gl_profile_item_realized_cb, NULL); + elm_genlist_item_class_free(itc); + evas_object_show(genlist); + + /* Change "Privacy Setting" to proper DID : use dgettext() */ + Elm_Object_Item *nf_it = elm_naviframe_item_push(ad->nf, dgettext("privacy-setting", PRIVACY_MENU_DLP_PROFILE), common_back_btn_add(ad), NULL, genlist, NULL); + + elm_object_item_domain_text_translatable_set(nf_it, PACKAGE, EINA_TRUE); +} + +/** + * @brief Internal callback function invoked when a report menu is clicked. + * @param[in] data The user data passed to the evas_object_smart_callback_add() function + * @param[in] obj The object invoking this callback function + * @param[in] event_info The structure containing the information on this event + */ +static void _selected_report_cb(void *data, Evas_Object *obj, void *event_info) +{ + /* Get selected privacy */ + Elm_Object_Item *ei = event_info; + item_data_s *selected_id = elm_object_item_data_get(ei); + LOGD("%s is selected, index = %d", selected_id->menu, selected_id->index); + + /* Unhighlight selected item */ + elm_genlist_item_selected_set(ei, EINA_FALSE); + + struct app_data_s *ad = (struct app_data_s *)data; + + int ret = privilege_info_get_privacy_list(&(ad->privacy_list)); + log_if(ret != PRVMGR_ERR_NONE, 1, "Failed to get privacy_list"); + + if (strstr(selected_id->menu, PRIVACY_MENU_DLP_REPORTS_FULL) != NULL) + create_privacy_dlp_reports_full_view(NULL, ad); + + else if (strstr(selected_id->menu, PRIVACY_MENU_DLP_REPORTS_APP_RANK) != NULL) + create_privacy_dlp_reports_app_rank_view(ad); + + else if (strstr(selected_id->menu, PRIVACY_MENU_DLP_REPORTS_STATISTICS) != NULL) + create_privacy_dlp_reports_data_stat_view(ad); + + else if (strstr(selected_id->menu, PRIVACY_MENU_DLP_REPORTS_RULES_AND_PATTERNS) != NULL) + create_privacy_dlp_reports_rules_and_patterns_view(ad, &config); +} + +/** + * @brief Internal callback function when log cleanup period change to 1 week. + * @param[in] data The user data passed to the evas_object_smart_callback_add() function + * @param[in] obj The object invoking this callback function + * @param[in] event_info The structure containing the information on this event + */ +static void _change_period_week_ctxpopup_cb(void *data, Evas_Object *obj, void *event_info) +{ + config.keep_log_days = KEEP_LOG_1_WEEK; + update_config_value(data, keepdays_item); +} + +/** + * @brief Internal callback function when log cleanup period change to 1 day. + * @param[in] data The user data passed to the evas_object_smart_callback_add() function + * @param[in] obj The object invoking this callback function + * @param[in] event_info The structure containing the information on this event + */ +static void _change_period_day_ctxpopup_cb(void *data, Evas_Object *obj, void *event_info) +{ + config.keep_log_days = KEEP_LOG_1_DAY; + update_config_value(data, keepdays_item); +} + +/** + * @brief Internal callback function when log cleanup period change to monthly. + * @param[in] data The user data passed to the evas_object_smart_callback_add() function + * @param[in] obj The object invoking this callback function + * @param[in] event_info The structure containing the information on this event + */ +static void _change_period_month_ctxpopup_cb(void *data, Evas_Object *obj, void *event_info) +{ + config.keep_log_days = KEEP_LOG_1_MONTH; + update_config_value(data, keepdays_item); +} + +/** + * @brief Internal callback function to dismiss period ctxpopup. + * @param[in] data The user data passed to the evas_object_smart_callback_add() function + * @param[in] obj The object invoking this callback function + * @param[in] event_info The structure containing the information on this event + */ +static void _dismissed_period_ctxpopup_cb(void *data, Evas_Object *obj, void *event_info) +{ + Evas_Object *ctxpopup = data; + + evas_object_smart_callback_del(ctxpopup, "dismissed", _dismissed_period_ctxpopup_cb); + evas_object_del(ctxpopup); +} + +/** + * @brief Internal callback function invoked when a logs keep day config option in menu is clicked. + * @param[in] data The user data passed to the evas_object_smart_callback_add() function + * @param[in] obj The object invoking this callback function + * @param[in] event_info The structure containing the information on this event + */ +static void _selected_keepdays_cb(void *data, Evas_Object *obj, void *event_info) +{ + struct app_data_s *ad = data; + + /* Get selected privacy */ + Elm_Object_Item *ei = event_info; + + + /* Unhighlight selected item */ + elm_genlist_item_selected_set(ei, EINA_FALSE); + + Evas_Object *genlist = NULL; + genlist = common_genlist_add(ad->nf); + evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL); + elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS); + + elm_object_style_set(genlist, "effect"); + + Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new(); + + itc->item_style = "default"; + itc->func.text_get = _gl_keepdays_item_text_get_cb; + itc->func.content_get = _gl_keepdays_item_content_get_cb; + itc->func.del = NULL; + + + static keep_days_radio_s keep_days_radio_item_1_day = { .id = KEEP_LOG_1_DAY, .radio = NULL }; + elm_genlist_item_append(genlist, itc, &keep_days_radio_item_1_day, NULL, ELM_GENLIST_ITEM_NONE, _change_period_day_ctxpopup_cb, ad); + + static keep_days_radio_s keep_days_radio_item_1_week = { .id = KEEP_LOG_1_WEEK, .radio = NULL }; + elm_genlist_item_append(genlist, itc, &keep_days_radio_item_1_week, NULL, ELM_GENLIST_ITEM_NONE, _change_period_week_ctxpopup_cb, ad); + + static keep_days_radio_s keep_days_radio_item_1_month = { .id = KEEP_LOG_1_MONTH, .radio = NULL }; + elm_genlist_item_append(genlist, itc, &keep_days_radio_item_1_month, NULL, ELM_GENLIST_ITEM_NONE, _change_period_month_ctxpopup_cb, ad); + + elm_genlist_item_class_free(itc); + + evas_object_smart_callback_add(genlist, "realized", _gl_keepdays_item_realized_cb, NULL); + + evas_object_show(genlist); + + /* Change "Privacy Setting" to proper DID : use dgettext() */ + Elm_Object_Item *nf_it = elm_naviframe_item_push(ad->nf, dgettext("privacy-setting", PRIVACY_MENU_DLP_SETTINGS_LOGS_PERIOD), common_back_btn_add(ad), NULL, genlist, NULL); + + elm_object_item_domain_text_translatable_set(nf_it, PACKAGE, EINA_TRUE); +} + +/* + * @brief Function will be operated when genlist is deleted. + * @param[in] data The data to be passed to the callback function + * @param[in] obj The Evas object handle to be passed to the callback function + */ +static void _gl_del_item_cb(void *data, Evas_Object *obj) +{ + item_data_s *id = data; + free(id); +} + +/* + * @brief Function will be operated when genlist is deleted. + * @param[in] data The data to be passed to the callback function + * @param[in] obj The Evas object handle to be passed to the callback function + */ +static void _gl_del_config_cb(void *data, Evas_Object *obj) +{ +} + +/** + * @brief Creates essential objects for the screen. + */ +void create_privacy_dlp_menu_view(struct app_data_s *ad) +{ + Evas_Object *genlist = common_genlist_add(ad->nf); + + uid_t user_id = getuid(); + + evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL); + elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS); + + // get DLP configuration + int res = privacy_guard_client_get_dlp_profile(user_id, &config); + log_if(res != PRIV_GUARD_ERROR_SUCCESS, 1, "privacy_guard_client_get_dlp_profile() is failed. [%d]", res); + + // Option to Enable/Disable DLP + Elm_Genlist_Item_Class *itc_enabled = elm_genlist_item_class_new(); + + itc_enabled->item_style = "multiline"; + itc_enabled->func.text_get = _gl_enabled_text_get_cb; + itc_enabled->func.content_get = _gl_enabled_content_get_cb; + itc_enabled->func.del = _gl_del_config_cb; + + elm_genlist_item_append(genlist, itc_enabled, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL); + elm_genlist_item_class_free(itc_enabled); + + // Option to Select Protection Mode + Elm_Genlist_Item_Class *itc_profile = elm_genlist_item_class_new(); + + itc_profile->item_style = "multiline"; + itc_profile->func.text_get = _gl_profile_text_get_cb; + + profile_item = elm_genlist_item_append(genlist, itc_profile, NULL, NULL, ELM_GENLIST_ITEM_NONE, _selected_profile_cb, ad); + elm_genlist_item_class_free(itc_profile); + + // Options of DLP Reports + if (menu_reports_list != NULL) { + g_list_free(menu_reports_list); + menu_reports_list = NULL; + } + + menu_reports_list = g_list_append(menu_reports_list, PRIVACY_MENU_DLP_REPORTS_FULL); + menu_reports_list = g_list_append(menu_reports_list, PRIVACY_MENU_DLP_REPORTS_APP_RANK); + menu_reports_list = g_list_append(menu_reports_list, PRIVACY_MENU_DLP_REPORTS_STATISTICS); + menu_reports_list = g_list_append(menu_reports_list, PRIVACY_MENU_DLP_REPORTS_RULES_AND_PATTERNS); + + Elm_Genlist_Item_Class *gtc_reports = elm_genlist_item_class_new(); + gtc_reports->item_style = "group_index"; + gtc_reports->func.text_get = _gl_group_reports_text_get_cb; + + Elm_Object_Item *it_reports = elm_genlist_item_append(genlist, gtc_reports, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL); + log_if(it_reports == NULL, 1, "Error in elm_genlist_item_append"); + + Elm_Genlist_Item_Class *itc_reports = elm_genlist_item_class_new(); + itc_reports->item_style = "default"; + itc_reports->func.text_get = _gl_reports_text_get_cb; + itc_reports->func.del = _gl_del_item_cb; + + elm_genlist_item_select_mode_set(it_reports, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY); + + int i = 0; + for (i = 0; i < (int)g_list_length(menu_reports_list); ++i) { + item_data_s *id = calloc(1, sizeof(item_data_s)); // note that id is freed in _gl_del_item_cb + if (NULL != id) { + id->index = i; + id->menu = (char*)g_list_nth_data(menu_reports_list, i); + id->title = strdup(dgettext("privacy-setting", id->menu)); + it_reports = elm_genlist_item_append(genlist, itc_reports, id, NULL, ELM_GENLIST_ITEM_NONE, _selected_report_cb, ad); + log_if(it_reports == NULL, 1, "Error in elm_genlist_item_append"); + } + } + + elm_genlist_item_class_free(itc_reports); + elm_genlist_item_class_free(gtc_reports); + + // Settings Group Options + Elm_Genlist_Item_Class *gtc_settings = elm_genlist_item_class_new(); + gtc_settings->item_style = "group_index"; + gtc_settings->func.text_get = _gl_group_settings_text_get_cb; + + elm_genlist_item_append(genlist, gtc_settings, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL); + elm_genlist_item_class_free(gtc_settings); + + // Option to select Logs Keep days + Elm_Genlist_Item_Class *itc_keepdays = elm_genlist_item_class_new(); + + itc_keepdays->item_style = "multiline"; + itc_keepdays->func.text_get = _gl_keepdays_text_get_cb; + + keepdays_item = elm_genlist_item_append(genlist, itc_keepdays, NULL, NULL, ELM_GENLIST_ITEM_NONE, _selected_keepdays_cb, ad); + elm_genlist_item_class_free(itc_keepdays); + + // Show + evas_object_show(genlist); + + main_menu_nf_it = elm_naviframe_item_push(ad->nf, dgettext("privacy-setting", PRIVACY_MENU_DLP), common_back_btn_add(ad), NULL, genlist, NULL); + + elm_object_item_domain_text_translatable_set(main_menu_nf_it, PACKAGE, EINA_TRUE); +} diff --git a/ui/src/privacy_dlp_pattern_create_view.c b/ui/src/privacy_dlp_pattern_create_view.c new file mode 100644 index 0000000..c6d834f --- /dev/null +++ b/ui/src/privacy_dlp_pattern_create_view.c @@ -0,0 +1,252 @@ +/* + * Copyright (c) 2017 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* + * @file privacy_dlp_pattern_create_view.c + * @version 1.0 + * @brief + */ + +#include "common_edit_field.h" +#include "common_utils.h" +#include "privacy_view.h" +#include <privacy_guard_client.h> + +typedef struct { + struct app_data_s *ad; + GList *category_list; + const char *current_category; + PgDlpPatternType current_type; + void *rule_edit_view_data; + void *pattern_list_view_data; + Evas_Object *name_edit_field; + Evas_Object *description_edit_field; + Evas_Object *category_hoversel; + Evas_Object *type_hoversel; + Evas_Object *search_string_edit_field; + Evas_Object *done_button; +} pattern_create_view_data_s; + +static pattern_create_view_data_s pattern_create_view_data = { + .ad = NULL, + .category_list = NULL, + .current_category = NULL, + .pattern_list_view_data = NULL, + .name_edit_field = NULL, + .description_edit_field = NULL, + .category_hoversel = NULL, + .done_button = NULL +}; + +static bool _pattern_create_view_category_cb(const char *category, void *user_data) +{ + pattern_create_view_data_s *pcvd = user_data; + pcvd->category_list = g_list_append(pcvd->category_list, strdup(category)); + return true; +} + +static void _pattern_create_view_free_category_cb(void *category) +{ + free((char *)category); +} + +static void _pattern_create_field_changed_cb(void *data, Evas_Object *obj, void* event_info) +{ + pattern_create_view_data_s *pcvd = data; + if (!is_edit_field_empty(pcvd->name_edit_field) + && !is_edit_field_empty(pcvd->description_edit_field) + && PRIV_GUARD_ERROR_SUCCESS == privacy_guard_client_validate_pattern(pcvd->current_type, get_text_from_edit_field(pcvd->search_string_edit_field))) + elm_object_disabled_set(pcvd->done_button, EINA_FALSE); + else + elm_object_disabled_set(pcvd->done_button, EINA_TRUE); +} + +static void _pattern_create_cancel_cb(void *data, Evas_Object *obj, void* event_info) +{ + pattern_create_view_data_s *pcvd = data; + elm_naviframe_item_pop(pcvd->ad->nf); +} + +static void _pattern_create_done_cb(void *data, Evas_Object *obj, void* event_info) +{ + pattern_create_view_data_s *pcvd = data; + + const int res = privacy_guard_client_add_dlp_pattern( + get_text_from_edit_field(pcvd->name_edit_field), + get_text_from_edit_field(pcvd->description_edit_field), + elm_object_text_get(pcvd->category_hoversel), + get_text_from_edit_field(pcvd->search_string_edit_field), + pcvd->current_type); + + if (PRIV_GUARD_ERROR_SUCCESS == res) { + LOGI("Pattern created (name=%s)", get_text_from_edit_field(pcvd->name_edit_field)); + if (pcvd->pattern_list_view_data) + update_privacy_dlp_patterns_list_view(pcvd->pattern_list_view_data); + else if (pcvd->rule_edit_view_data) + update_privacy_dlp_rule_edit_view( + pcvd->rule_edit_view_data, + get_text_from_edit_field(pcvd->search_string_edit_field), + pcvd->current_type, + false); + } else { + LOGI("privacy_guard_client_add_dlp_pattern() failed. Error=%d", res); + } + + elm_naviframe_item_pop(pcvd->ad->nf); +} + +static Eina_Bool _pattern_create_nf_pop_cb(void *data, Evas_Object* obj) +{ + pattern_create_view_data_s *pcvd = data; + + g_list_free_full(pcvd->category_list, _pattern_create_view_free_category_cb); + pcvd->category_list = NULL; + free_edit_field(pcvd->name_edit_field); + free_edit_field(pcvd->description_edit_field); + free_edit_field(pcvd->search_string_edit_field); + + return EINA_TRUE; +} + +static void _pattern_create_category_item_cb(void *data, Evas_Object *obj, void *event_info) +{ + const char *category = data; + pattern_create_view_data.current_category = category; + elm_object_text_set(obj, category); +} + +static void _pattern_create_type_item_cb(void *data, Evas_Object *obj, void *event_info) +{ + const PgDlpPatternType type = (PgDlpPatternType)data; + pattern_create_view_data.current_type = type; + if (type == PRIV_GUARD_DLP_PATTERN_STRING) + elm_object_text_set(obj, dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_SEARCH_TYPE_STRING_MATCH)); + else + elm_object_text_set(obj, dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_SEARCH_TYPE_REGULAR_EXPRESSION)); +} + +Evas_Object *add_category_hoversel_to_grid(Evas_Object *rule_grid, pattern_create_view_data_s *data, int col, int row, int col_span, int row_span) +{ + Evas_Object *hoversel = elm_hoversel_add(rule_grid); + elm_hoversel_horizontal_set(hoversel, EINA_FALSE); + elm_hoversel_hover_parent_set(hoversel, rule_grid); + + GList* l; + /* Append patterns to hoversel */ + for (l = data->category_list; l != NULL; l = l->next) { + const char *category = l->data; + Elm_Object_Item *item = elm_hoversel_item_add(hoversel, category, NULL, ELM_ICON_NONE, _pattern_create_category_item_cb, category); + } + if (NULL != data->category_list) { + const char *first_category = (const char *)(data->category_list->data); + data->current_category = first_category; + elm_object_text_set(hoversel, first_category); + } + + elm_grid_pack(rule_grid, hoversel, col, row, col_span, row_span); + evas_object_show(hoversel); + + return hoversel; +} + +Evas_Object *add_type_hoversel_to_grid(Evas_Object *rule_grid, pattern_create_view_data_s *data, int col, int row, int col_span, int row_span) +{ + Evas_Object *hoversel = elm_hoversel_add(rule_grid); + elm_hoversel_horizontal_set(hoversel, EINA_FALSE); + elm_hoversel_hover_parent_set(hoversel, rule_grid); + + elm_hoversel_item_add(hoversel, dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_SEARCH_TYPE_STRING_MATCH), NULL, ELM_ICON_NONE, _pattern_create_type_item_cb, (void *)PRIV_GUARD_DLP_PATTERN_STRING); + elm_hoversel_item_add(hoversel, dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_SEARCH_TYPE_REGULAR_EXPRESSION), NULL, ELM_ICON_NONE, _pattern_create_type_item_cb, (void *)PRIV_GUARD_DLP_PATTERN_REGEX); + elm_object_text_set(hoversel, dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_SEARCH_TYPE_STRING_MATCH)); + data->current_type = PRIV_GUARD_DLP_PATTERN_STRING; + + elm_grid_pack(rule_grid, hoversel, col, row, col_span, row_span); + evas_object_show(hoversel); + + return hoversel; +} + +void create_privacy_dlp_pattern_create_view(struct app_data_s *ad, void *rule_edit_view_data, void *pattern_list_view_data) +{ + if (NULL == ad) { + LOGE("Invalid parameter"); + return; + } + + pattern_create_view_data.ad = ad; + g_list_free_full(pattern_create_view_data.category_list, _pattern_create_view_free_category_cb); + pattern_create_view_data.category_list = NULL; + pattern_create_view_data.rule_edit_view_data = rule_edit_view_data; + pattern_create_view_data.pattern_list_view_data = pattern_list_view_data; + + /* Get dlp custom patterns from privacy guard */ + const int res = privacy_guard_client_foreach_dlp_categories(_pattern_create_view_category_cb, &pattern_create_view_data); + log_if(res != PRIV_GUARD_ERROR_SUCCESS, 1, "privacy_guard_client_foreach_dlp_categories() failed. [%d]", res); + + Evas_Object *bg = elm_bg_add(ad->nf); + elm_bg_color_set(bg, 255, 255, 255); + + Evas_Object *rule_grid = elm_grid_add(ad->nf); + elm_grid_size_set(rule_grid, 100, 10); + + elm_object_content_set(bg, rule_grid); + + const int col1 = 5; + const int col2 = 35; + const int col_span1 = 34; + const int col_span2 = 65; + int row = 0; + const int row_span = 1; + + static dlp_edit_field_changed_cb_s edit_field_changed_cb_data; + edit_field_changed_cb_data.changed_cb = _pattern_create_field_changed_cb; + edit_field_changed_cb_data.data = &pattern_create_view_data; + + /* add pattern name fields to grid */ + static const Elm_Entry_Filter_Limit_Size name_limit_size = { .max_char_count = 0, .max_byte_count = LEN_NAME - 1 }; + add_edit_field_to_grid(rule_grid, dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_NAME), false, NULL, col1, row, col_span1, row_span, NULL); + pattern_create_view_data.name_edit_field = add_edit_field_to_grid(rule_grid, "", true, &name_limit_size, col2, row++, col_span2, row_span, &edit_field_changed_cb_data); + + /* add rule description fields to grid */ + static const Elm_Entry_Filter_Limit_Size description_limit_size = { .max_char_count = 0, .max_byte_count = LEN_DESCRIPTION - 1 }; + add_edit_field_to_grid(rule_grid, dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_DESCRIPTION), false, NULL, col1, row, col_span1, row_span, NULL); + pattern_create_view_data.description_edit_field = add_edit_field_to_grid(rule_grid, "", true, &description_limit_size, col2, row++, col_span2, row_span, &edit_field_changed_cb_data); + + /* add rule pattern fields to grid */ + add_edit_field_to_grid(rule_grid, dgettext("privacy-setting", PRIVACY_MENU_DLP_CATEGORY), false, NULL, col1, row, col_span1, row_span, NULL); + pattern_create_view_data.category_hoversel = add_category_hoversel_to_grid(rule_grid, &pattern_create_view_data, col2 + 4, row++, col_span2 - 8, row_span); + + /* add search fields to grid */ + add_edit_field_to_grid(rule_grid, dgettext("privacy-setting", PRIVACY_MENU_DLP_STRING_TYPE), false, NULL, col1, row, col_span1, row_span, NULL); + pattern_create_view_data.type_hoversel = add_type_hoversel_to_grid(rule_grid, &pattern_create_view_data, col2 + 4, row++, col_span2 - 8, row_span); + + /* add string search fields to grid */ + static const Elm_Entry_Filter_Limit_Size search_string_limit_size = { .max_char_count = 0, .max_byte_count = LEN_PATTERN - 1 }; + add_edit_field_to_grid(rule_grid, dgettext("privacy-setting", PRIVACY_MENU_DLP_SEARCH_TERM), false, NULL, col1, row, col_span1, row_span, NULL); + pattern_create_view_data.search_string_edit_field = add_edit_field_to_grid(rule_grid, "", true, &search_string_limit_size, col2, row, col_span2, row_span, &edit_field_changed_cb_data); + + evas_object_show(rule_grid); + + Elm_Object_Item *nf_it = elm_naviframe_item_push(ad->nf, dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_PATTERN), NULL, NULL, bg, NULL); + + /* set callback to genlist item pop event */ + elm_naviframe_item_pop_cb_set(nf_it, _pattern_create_nf_pop_cb, &pattern_create_view_data); + /* add a cancel button to naviframe title bar */ + common_naviframe_btn_add(ad->nf, nf_it, true, dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_CANCEL), _pattern_create_cancel_cb, &pattern_create_view_data); + /* add a done button to naviframe title bar */ + pattern_create_view_data.done_button = common_naviframe_btn_add(ad->nf, nf_it, false, dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_DONE), _pattern_create_done_cb, &pattern_create_view_data); + + elm_object_disabled_set(pattern_create_view_data.done_button, EINA_TRUE); +} diff --git a/ui/src/privacy_dlp_pattern_delete_view.c b/ui/src/privacy_dlp_pattern_delete_view.c new file mode 100644 index 0000000..fa9e860 --- /dev/null +++ b/ui/src/privacy_dlp_pattern_delete_view.c @@ -0,0 +1,328 @@ +/* + * Copyright (c) 2017 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* + * @file privacy_dlp_pattern_delete_view.c + * @version 1.0 + * @brief + */ + +#include "common_popup.h" +#include "common_utils.h" +#include "privacy_view.h" +#include <privacy_guard_client.h> +#include <app_manager.h> + +typedef struct { + const get_pattern_s *pattern; + bool is_checked; + Evas_Object *check; +} pattern_delete_item_s; + +typedef struct { + struct app_data_s *ad; + GList *pattern_item_list; + void *pattern_list_data; + Evas_Object *genlist; + Evas_Object *confirm_popup; + Evas_Object *delete_button; +} pattern_delete_view_data_s; + +#define SELECT_ALL_PATTERNS_ITEM -1 + +static get_pattern_s pattern_delete_select_all_pattern = { .id = SELECT_ALL_PATTERNS_ITEM }; + +size_t get_number_of_selected_patterns(Evas_Object *genlist); + +void set_pattern_item_check_state(Elm_Object_Item *item, const bool state) +{ + if (NULL != item) { + pattern_delete_item_s *pattern_item = elm_object_item_data_get(item); + if (!pattern_item->pattern->undeletable) { + pattern_item->is_checked = state; + elm_check_state_set(pattern_item->check, state ? EINA_TRUE : EINA_FALSE); + } + } +} + +static char * _gl_pattern_delete_text_get_cb(void *data, Evas_Object *obj, const char *part) +{ + pattern_delete_item_s *pattern_item = (pattern_delete_item_s *)data; + if (strcmp(part, "elm.text") == 0) + return strdup(pattern_item->pattern->name); + + return NULL; +} + +static Evas_Object *_gl_pattern_delete_content_get_cb(void *data, Evas_Object *obj, const char *part) +{ + pattern_delete_item_s *pattern_item = data; + + if (strcmp(part, "elm.swallow.end") == 0) { + Evas_Object *check = common_create_check(obj); + elm_check_state_set(check, pattern_item->is_checked ? EINA_TRUE : EINA_FALSE); + if (pattern_item->pattern->undeletable) + elm_object_disabled_set(check, EINA_TRUE); + pattern_item->check = check; + return check; + } + + return NULL; +} + +static void _pattern_delete_menu_item_selected_cb(void *data, Evas_Object *obj, void *event_info) +{ + /* Get selected item */ + Elm_Object_Item *ei = event_info; + pattern_delete_item_s *pattern_item = elm_object_item_data_get(ei); + + /* Unhighlight selected item */ + elm_genlist_item_selected_set(ei, EINA_FALSE); + + if (pattern_item->pattern->undeletable) + return; + + pattern_item->is_checked = !pattern_item->is_checked; + + /* Set check box state, in case user tapped outside it */ + elm_check_state_set(pattern_item->check, pattern_item->is_checked ? EINA_TRUE : EINA_FALSE); + + pattern_delete_view_data_s *pdvd = data; + if (SELECT_ALL_PATTERNS_ITEM != pattern_item->pattern->id) { + Elm_Object_Item *select_all_item = elm_genlist_nth_item_get(pdvd->genlist, 0); + if (!pattern_item->is_checked) { + /* set "Select all" check off */ + set_pattern_item_check_state(select_all_item, false); + } else { + bool all_selected = true; + GList *l; + // check if all items are selected. Note that the 1st element of app_list + // is the select button, so we start looping from the 2nd element + for (l = g_list_nth(pdvd->pattern_item_list, 1); l != NULL; l = l->next) { + if (!((pattern_delete_item_s *)l->data)->is_checked) { + all_selected = false; + break; + } + } + /* if all items are selected, set select all check on */ + if (all_selected) + set_pattern_item_check_state(select_all_item, true); + } + } else { + /* Select or deselect items */ + ei = elm_genlist_item_next_get(ei); + while (NULL != ei) { + set_pattern_item_check_state(ei, pattern_item->is_checked); + ei = elm_genlist_item_next_get(ei); + } + } + + elm_object_disabled_set(pdvd->delete_button, get_number_of_selected_patterns(pdvd->genlist) == 0 ? EINA_TRUE : EINA_FALSE); +} + +static void _pattern_delete_popup_cancel_cb(void *data, Evas_Object *obj, void *event_info) +{ + pattern_delete_view_data_s *pdvd = data; + destroy_popup(pdvd->confirm_popup); +} + +static void _pattern_delete_popup_ok_cb(void *data, Evas_Object *obj, void *event_info) +{ + const pattern_delete_view_data_s *pdvd = data; + destroy_popup(pdvd->confirm_popup); + + size_t total_patterns_deleted = 0; + GList *l; // note that the 0th element is "select all" + for (l = g_list_nth(pdvd->pattern_item_list, 1); l != NULL; l = l->next) { + const pattern_delete_item_s *pattern_item = l->data; + if (NULL == pattern_item) + continue; + if (!pattern_item->is_checked) + continue; + + const int res = privacy_guard_client_delete_dlp_pattern(pattern_item->pattern->id); + if (PRIV_GUARD_ERROR_SUCCESS == res) { + LOGI("Pattern %d deleted", pattern_item->pattern->id); + ++total_patterns_deleted; + } else + LOGE("Failed to delete pattern (id=%d). Error=%d", pattern_item->pattern->id, res); + } + + if (NULL != pdvd->pattern_list_data) + update_privacy_dlp_patterns_list_view(pdvd->pattern_list_data); + + elm_naviframe_item_pop(pdvd->ad->nf); + + if (total_patterns_deleted > 0) { + const char *format = dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_DELETE_PATTERN_MESSAGE); + const size_t buffer_len = snprintf(NULL, 0, format, total_patterns_deleted) + 1; + char *string_buffer = malloc(buffer_len); + if (NULL != string_buffer) { + snprintf(string_buffer, buffer_len, format, total_patterns_deleted); + show_toast_notification(string_buffer, pdvd->ad->win); + free(string_buffer); + } + } +} + +static void _pattern_delete_done_cb(void *data, Evas_Object *obj, void *event_info) +{ + pattern_delete_view_data_s *pdvd = data; + + const size_t number_of_selected_patterns = get_number_of_selected_patterns(pdvd->genlist); + const char *format = dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_DELETE_PATTERN_POPUP_MESSAGE_MESSAGE); + const size_t buff_len = snprintf(NULL, 0, format, number_of_selected_patterns) + 1; + char *confirm_del_msg = malloc(buff_len); + if (NULL != confirm_del_msg) { + snprintf(confirm_del_msg, buff_len, format, number_of_selected_patterns); + pdvd->confirm_popup = create_two_buttons_popup( + pdvd->genlist, + dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_DELETE_PATTERN_POPUP_TITLE), + confirm_del_msg, + dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_OK), + _pattern_delete_popup_ok_cb, + dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_CANCEL), + _pattern_delete_popup_cancel_cb, + NULL, + pdvd); + free(confirm_del_msg); + } +} + +static void _pattern_delete_cancel_cb(void *data, Evas_Object *obj, void *event_info) +{ + pattern_delete_view_data_s *pdvd = data; + elm_naviframe_item_pop(pdvd->ad->nf); +} + +static void _free_pattern_delete_item_cb(void *item) +{ + free((pattern_delete_item_s *)item); +} + +static Eina_Bool _pattern_delete_nf_pop_cb(void *data, Evas_Object* obj) +{ + pattern_delete_view_data_s *pdvd = data; + g_list_free_full(pdvd->pattern_item_list, _free_pattern_delete_item_cb); + pdvd->pattern_item_list = NULL; + return EINA_TRUE; +} + +size_t get_number_of_selected_patterns(Evas_Object *genlist) +{ + const size_t total_rules = elm_genlist_items_count(genlist); + size_t pattern_count = 0; + size_t i; + // Count checked log ids + for (i = 1; i <= total_rules; ++i) { // note that 0th item is "Select all", so we skip it + Elm_Object_Item *item = elm_genlist_nth_item_get(genlist, i); + if (NULL != item) { + pattern_delete_item_s *pattern_item = elm_object_item_data_get(item); + if (NULL != pattern_item && pattern_item->is_checked) + ++pattern_count; + } + } + + return pattern_count; +} + +void create_select_all_patterns_item(pattern_delete_view_data_s *data) +{ + strncpy(pattern_delete_select_all_pattern.name, dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_SELECT_ALL), LEN_NAME); + pattern_delete_select_all_pattern.name[LEN_NAME - 1] = '\0'; + // Note that item below will be freed by _free_pattern_delete_item_cb(), + // called in _pattern_delete_nf_pop_cb() + pattern_delete_item_s *item = malloc(sizeof(pattern_delete_item_s)); + if (NULL != item) { + item->pattern = &pattern_delete_select_all_pattern; + item->is_checked = false; + item->check = NULL; + data->pattern_item_list = g_list_prepend(data->pattern_item_list, item); + } +} + +void populate_pattern_item_list(pattern_delete_view_data_s *data, const GList *pattern_list) +{ + const GList* l; + for (l = pattern_list; l != NULL; l = l->next) { + const get_pattern_s *pattern = l->data; + if (pattern->undeletable) + continue; + + // note that item is freed together with pattern_item_list in _pattern_delete_nf_pop_cb + pattern_delete_item_s *item = malloc(sizeof(pattern_delete_item_s)); + if (NULL != item) { + item->pattern = l->data; + item->is_checked = false; + item->check = NULL; + data->pattern_item_list = g_list_append(data->pattern_item_list, item); + } + } +} + +void create_privacy_dlp_pattern_delete_view(struct app_data_s *ad, const GList *pattern_list, void *pattern_list_data) +{ + if (NULL == ad || NULL == pattern_list || NULL == pattern_list_data) { + LOGE("Invalid parameter"); + return; + } + + static pattern_delete_view_data_s data; + data.ad = ad; + populate_pattern_item_list(&data, pattern_list); + data.pattern_list_data = pattern_list_data; + + create_select_all_patterns_item(&data); + + data.genlist = common_genlist_add(ad->nf); + evas_object_size_hint_weight_set(data.genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(data.genlist, EVAS_HINT_FILL, EVAS_HINT_FILL); + + Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new(); + itc->item_style = "default"; + itc->func.text_get = _gl_pattern_delete_text_get_cb; + itc->func.content_get = _gl_pattern_delete_content_get_cb; + itc->func.del = NULL; + Elm_Object_Item *it = NULL; + GList* l; + for (l = data.pattern_item_list; l != NULL; l = l->next) { + // append item to the genlist + it = elm_genlist_item_append(data.genlist, itc, l->data, NULL, ELM_GENLIST_ITEM_NONE, _pattern_delete_menu_item_selected_cb, &data); + log_if(it == NULL, 1, "Error in elm_genlist_item_append"); + + pattern_delete_item_s *pattern_item = l->data; + if (pattern_item->pattern->undeletable) + elm_object_disabled_set(it, EINA_TRUE); + } + + evas_object_show(data.genlist); + + /* Add genlist to naviframe */ + Elm_Object_Item *nf_it = elm_naviframe_item_push( + ad->nf, + dgettext("privacy-setting", PRIVACY_MENU_DLP_LOG_DELETE_LOGS_TITLE), + NULL, + NULL, + data.genlist, + NULL); + + /* set callback to genlist item pop event */ + elm_naviframe_item_pop_cb_set(nf_it, _pattern_delete_nf_pop_cb, &data); + /* add cancel button to naviframe title bar */ + common_naviframe_btn_add(ad->nf, nf_it, true, dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_CANCEL), _pattern_delete_cancel_cb, &data); + /* add delete button to naviframe title bar */ + data.delete_button = common_naviframe_btn_add(ad->nf, nf_it, false, dgettext("privacy-setting", PRIVACY_MENU_DLP_LOG_DELETE_BTN), _pattern_delete_done_cb, &data); + elm_object_disabled_set(data.delete_button, get_number_of_selected_patterns(data.genlist) == 0 ? EINA_TRUE : EINA_FALSE); +} diff --git a/ui/src/privacy_dlp_pattern_detailed_view.c b/ui/src/privacy_dlp_pattern_detailed_view.c new file mode 100644 index 0000000..99cdd05 --- /dev/null +++ b/ui/src/privacy_dlp_pattern_detailed_view.c @@ -0,0 +1,275 @@ +/* + * Copyright (c) 2017 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* + * @file privacy_dlp_pattern_detailed_view.c + * @version 1.0 + * @brief + */ + +#include "common_ctxpopup.h" +#include "common_popup.h" +#include "common_utils.h" +#include "privacy_view.h" +#include <efl_extension.h> + +typedef struct { + struct app_data_s *ad; + get_pattern_s current_pattern; + void *pattern_list_data; + Evas_Object *ctxpopup; + Evas_Object *delete_popup; +} pattern_detailed_view_data_s; + +static pattern_detailed_view_data_s pattern_detailed_view_data = { .ad = NULL }; + +static char *_gl_pattern_header_text_get_cb(void *data, Evas_Object *obj, const char *part) +{ + get_pattern_s *pattern = data; + if (strcmp(part, "elm.text") == 0) + return strdup(pattern->name); + + if (strcmp(part, "elm.text.multiline") == 0) { + if (pattern == NULL) + return strdup(""); + + return strdup(pattern->description); + } + + return NULL; +} + +static char *_gl_group_pattern_details_text_get_cb(void *data, Evas_Object *obj, const char *part) +{ + if (!strcmp(part, "elm.text")) + return strdup(dgettext("privacy-setting", PRIVACY_MENU_DLP_DETAILS)); + + return NULL; +} + +static char *_gl_pattern_category_text_get_cb(void *data, Evas_Object *obj, const char *part) +{ + if (strcmp(part, "elm.text") == 0) + return strdup(dgettext("privacy-setting", PRIVACY_MENU_DLP_CATEGORY)); + + if (strcmp(part, "elm.text.multiline") == 0) { + if (data == NULL) + return strdup(""); + return strdup(((get_pattern_s *)data)->category.text); + } + + return NULL; +} + +static char *_gl_pattern_text_get_cb(void *data, Evas_Object *obj, const char *part) +{ + if (strcmp(part, "elm.text") == 0) + return strdup(dgettext("privacy-setting", PRIVACY_MENU_DLP_SEARCH_TERM)); + + if (strcmp(part, "elm.text.multiline") == 0) { + if (data == NULL) + return strdup(""); + + return strdup(((get_pattern_s *)data)->pattern); + } + return NULL; +} + +static char *_gl_pattern_type_get_cb(void *data, Evas_Object *obj, const char *part) +{ + if (strcmp(part, "elm.text") == 0) + return strdup(dgettext("privacy-setting", PRIVACY_MENU_DLP_STRING_TYPE)); + + if (strcmp(part, "elm.text.multiline") == 0) { + if (data == NULL) + return strdup(""); + + const get_pattern_s *pattern = data; + if (PRIV_GUARD_DLP_PATTERN_STRING == pattern->type) + return strdup(dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_SEARCH_TYPE_STRING_MATCH)); + else if (PRIV_GUARD_DLP_PATTERN_REGEX == pattern->type) + return strdup(dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_SEARCH_TYPE_REGULAR_EXPRESSION)); + else + return strdup(""); + } + + return NULL; +} + +static char *_gl_pattern_leaks_count_text_get_cb(void *data, Evas_Object *obj, const char *part) +{ + if (strcmp(part, "elm.text") == 0) + return strdup(dgettext("privacy-setting", PRIVACY_MENU_DLP_LEAKS_CAPTURED)); + + if (strcmp(part, "elm.text.multiline") == 0) { + if (data == NULL) + return strdup(""); + + const get_pattern_s *pattern = data; + const int leaks_captured = pattern->leaks_count; + const size_t string_mem_needed = snprintf(NULL, 0, "%d", leaks_captured); + char *string_buf = calloc(string_mem_needed+1, sizeof(char)); + if (NULL != string_buf) { + snprintf(string_buf, string_mem_needed, "%d", leaks_captured); + return string_buf; + } + } + return NULL; +} + +static void _pattern_detailed_view_delete_cancel_cb(void *data, Evas_Object *obj, void *event_info) +{ + pattern_detailed_view_data_s *pdvd = data; + destroy_popup(pdvd->delete_popup); +} + +static void _pattern_detailed_view_delete_ok_cb(void *data, Evas_Object *obj, void *event_info) +{ + pattern_detailed_view_data_s *pdvd = data; + + destroy_popup(pdvd->delete_popup); + + const int res = privacy_guard_client_delete_dlp_pattern(pdvd->current_pattern.id); + if (PRIV_GUARD_ERROR_SUCCESS == res) { + LOGI("Pattern (id=%d) deleted", pdvd->current_pattern.id); + + const char *format = dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_DELETE_PATTERN_MESSAGE); + const size_t buffer_len = snprintf(NULL, 0, format, 1) + 1; + char *string_buffer = malloc(buffer_len); + if (NULL != string_buffer) { + snprintf(string_buffer, buffer_len, format, 1); + show_toast_notification(string_buffer, pdvd->ad->win); + free(string_buffer); + } + } else { + LOGE("privacy_guard_client_delete_dlp_pattern() failed. Error=%d", res); + } + + if (pdvd->pattern_list_data) + update_privacy_dlp_patterns_list_view(pdvd->pattern_list_data); + elm_naviframe_item_pop(pdvd->ad->nf); +} + +static void _pattern_detailed_view_delete_rule_cb(void *data, Evas_Object *obj, void *event_info) +{ + pattern_detailed_view_data_s *pdvd = data; + delete_ctxpopup(pdvd->ctxpopup); + + const char *format = dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_DELETE_PATTERN_POPUP_MESSAGE_MESSAGE); + const size_t buff_len = snprintf(NULL, 0, format, 1) + 1; + char *confirm_del_msg = malloc(buff_len); + if (NULL != confirm_del_msg) { + snprintf(confirm_del_msg, buff_len, format, 1); + pdvd->delete_popup = create_two_buttons_popup( + pdvd->ad->nf, + dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_DELETE_PATTERN_POPUP_TITLE), + confirm_del_msg, + dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_OK), + _pattern_detailed_view_delete_ok_cb, + dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_CANCEL), + _pattern_detailed_view_delete_cancel_cb, + NULL, + pdvd); + free(confirm_del_msg); + } +} + +static void _pattern_detailed_view_menu_button_cb(void *data, Evas_Object *obj, void *event_info) +{ + pattern_detailed_view_data_s *pdvd = data; + if (!pdvd->current_pattern.undeletable) { + pdvd->ctxpopup = create_ctxpop(pdvd->ad); + elm_ctxpopup_item_append(pdvd->ctxpopup, dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_DELETE), NULL, _pattern_detailed_view_delete_rule_cb, pdvd); + } +} + +void add_pattern_item_to_genlist(Evas_Object *genlist, void* data, const char* item_style, void* func_text_get) +{ + Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new(); + itc->item_style = item_style; + itc->func.text_get = func_text_get; + Elm_Object_Item *it = elm_genlist_item_append(genlist, itc, data, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL); + log_if(it == NULL, 1, "Error in elm_genlist_item_append"); + elm_genlist_item_class_free(itc); +} + +void set_current_pattern(get_pattern_s *current_pattern, const get_pattern_s *pattern) +{ + current_pattern->id = pattern->id; + strncpy(current_pattern->pattern, pattern->pattern, LEN_PATTERN); + current_pattern->pattern[LEN_PATTERN - 1] = '\0'; + strncpy(current_pattern->name, pattern->name, LEN_NAME); + current_pattern->name[LEN_NAME - 1] = '\0'; + strncpy(current_pattern->description, pattern->description, LEN_DESCRIPTION); + current_pattern->name[LEN_DESCRIPTION - 1] = '\0'; + current_pattern->type = pattern->type; + strncpy(current_pattern->category.text, pattern->category.text, LEN_CATEGORY); + current_pattern->name[LEN_CATEGORY - 1] = '\0'; + current_pattern->undeletable = pattern->undeletable; + current_pattern->leaks_count = pattern->leaks_count; +} + +Evas_Object *create_pattern_detail_genlist(pattern_detailed_view_data_s *data) +{ + Evas_Object *genlist = common_genlist_add(data->ad->nf); + evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL); + elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS); + elm_genlist_select_mode_set(genlist, ELM_OBJECT_SELECT_MODE_NONE); + elm_object_style_set(genlist, "default"); + /* add header (pattern name and description) to genlist */ + add_pattern_item_to_genlist(genlist, &(data->current_pattern), "multiline", _gl_pattern_header_text_get_cb); + /* add details separator to genlist */ + add_pattern_item_to_genlist(genlist, NULL, "group_index", _gl_group_pattern_details_text_get_cb); + /* add pattern category to genlist */ + add_pattern_item_to_genlist(genlist, &(data->current_pattern), "multiline", _gl_pattern_category_text_get_cb); + /* add pattern type to genlist */ + add_pattern_item_to_genlist(genlist, &(data->current_pattern), "multiline", _gl_pattern_type_get_cb); + /* add pattern pattern to genlist */ + add_pattern_item_to_genlist(genlist, &(data->current_pattern), "multiline", _gl_pattern_text_get_cb); + /* add pattern leaks count to genlist */ + add_pattern_item_to_genlist(genlist, &(data->current_pattern), "multiline", _gl_pattern_leaks_count_text_get_cb); + return genlist; +} + +void create_privacy_dlp_pattern_detailed_view(struct app_data_s *ad, const get_pattern_s *pattern, const dlp_profile_s *config, void *pattern_list_data) +{ + if (NULL == ad || NULL == pattern) { + LOGE("Invalid parameter"); + return; + } + + pattern_detailed_view_data.ad = ad; + pattern_detailed_view_data.pattern_list_data = pattern_list_data; + + set_current_pattern(&(pattern_detailed_view_data.current_pattern), pattern); + + Evas_Object *genlist = create_pattern_detail_genlist(&pattern_detailed_view_data); + evas_object_show(genlist); + + Elm_Object_Item *nf_it = elm_naviframe_item_push( + ad->nf, + dgettext("privacy-setting", PRIVACY_MENU_DLP_PATTERN_DETAIL_TITLE), + common_back_btn_add(ad), + NULL, + genlist, + NULL); + + if (PRIV_GUARD_DLP_PROFILE_CUSTOM == config->profile) + /* Register the Menu key event callback */ + eext_object_event_callback_add(genlist, EEXT_CALLBACK_MORE, _pattern_detailed_view_menu_button_cb, &pattern_detailed_view_data); + + elm_object_item_domain_text_translatable_set(nf_it, PACKAGE, EINA_TRUE); +} diff --git a/ui/src/privacy_dlp_pattern_list_view.c b/ui/src/privacy_dlp_pattern_list_view.c new file mode 100644 index 0000000..41e4a8f --- /dev/null +++ b/ui/src/privacy_dlp_pattern_list_view.c @@ -0,0 +1,345 @@ +/* + * Copyright (c) 2017 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* + * @file privacy_dlp_pattern_list_view.c + * @version 1.0 + * @brief + */ + +#include "common_ctxpopup.h" +#include "common_utils.h" +#include "privacy_view.h" +#include <privacy_guard_client.h> +#include <efl_extension.h> + +typedef struct { + struct app_data_s *ad; + GList *pattern_list; + GList *category_list; + const char *current_category; + const dlp_profile_s *config; + Evas_Object *view_parent; + Evas_Object *pattern_box; + Evas_Object *pattern_genlist; + Evas_Object *pattern_ctxpopup; +} dlp_pattern_list_data_s; + +static const char const *ALL_PATTERNS = "All patterns"; + +static dlp_pattern_list_data_s pattern_list_data = { + .ad = NULL, + .pattern_list = NULL, + .current_category = NULL, + .view_parent = NULL, + .pattern_box = NULL, + .pattern_genlist = NULL +}; + +void create_pattern_genlist(dlp_pattern_list_data_s* data); +void set_pattern_filter_text(Evas_Object *category_hoversel, dlp_pattern_list_data_s* data); +bool has_deletable_pattern(const GList *pattern_list); + +bool _pg_dlp_categories_cb(const char *category, void *user_data) +{ + /* add category to category list */ + dlp_pattern_list_data_s *data = user_data; + data->category_list = g_list_append(data->category_list, strdup(category)); + return true; +} + +bool _pg_dlp_patterns_cb(int id, const char *pattern, const char *name, const char *description, PgDlpPatternType type, + const char *category, bool undeletable, int leaks_count, void *user_data) +{ + /* create a new pattern */ + get_pattern_s *dlp_pattern = malloc(sizeof(get_pattern_s)); // this pattern is freed at delete_pattern_list() + if (NULL != dlp_pattern) { + dlp_pattern->id = id; + strncpy(dlp_pattern->pattern, pattern, LEN_PATTERN); + dlp_pattern->pattern[LEN_PATTERN - 1] = '\0'; + strncpy(dlp_pattern->name, name, LEN_NAME); + dlp_pattern->name[LEN_NAME - 1] = '\0'; + strncpy(dlp_pattern->description, description, LEN_DESCRIPTION); + dlp_pattern->description[LEN_DESCRIPTION - 1] = '\0'; + dlp_pattern->type = type; + strncpy(dlp_pattern->category.text, category, LEN_CATEGORY); + dlp_pattern->category.text[LEN_CATEGORY - 1] = '\0'; + dlp_pattern->undeletable = undeletable; + dlp_pattern->leaks_count = leaks_count; + /* add pattern to pattern list */ + dlp_pattern_list_data_s *data = user_data; + data->pattern_list = g_list_append(data->pattern_list, dlp_pattern); + } + return true; +} + +static void _pattern_genlist_del_cb(void *data, Evas_Object *obj) +{ + dlp_item_pattern_s *item = (dlp_item_pattern_s *)data; + free(item); +} + +static void _pattern_filter_cb(void *data, Evas_Object *obj, void *event_info) +{ + dlp_pattern_list_data_s *dpld = data; + dpld->current_category = elm_object_item_part_text_get(event_info, "default"); + set_pattern_filter_text(obj, dpld); + elm_box_unpack(dpld->pattern_box, dpld->pattern_genlist); + evas_object_del(dpld->pattern_genlist); + create_pattern_genlist(dpld); +} + +static char *_pattern_genlist_text_get_cb(void *data, Evas_Object *obj, const char *part) +{ + dlp_item_pattern_s *pattern = (dlp_item_pattern_s *)data; + + if (strcmp(part, "elm.text") == 0) + return strdup(pattern->data->name); + + if (strcmp(part, "elm.text.multiline") == 0) { + if (pattern == NULL) + return ""; + + return strdup(pattern->data->description); + } + + return NULL; +} + +static void _pattern_genlist_item_selected_cb(void *data, Evas_Object *obj, void *event_info) +{ + /* Get selected item */ + Elm_Object_Item *ei = event_info; + dlp_item_pattern_s *item = elm_object_item_data_get(ei); + + /* Unhighlight selected item */ + elm_genlist_item_selected_set(ei, EINA_FALSE); + + dlp_pattern_list_data_s *dpld = (dlp_pattern_list_data_s *)data; + create_privacy_dlp_pattern_detailed_view(dpld->ad, item->data, dpld->config, dpld); +} + +static void _pattern_list_view_create_rule_cb(void *data, Evas_Object *obj, void *event_info) +{ + dlp_pattern_list_data_s *dpld = data; + + delete_ctxpopup(dpld->pattern_ctxpopup); + create_privacy_dlp_pattern_create_view(dpld->ad, NULL, dpld); +} + +static void _pattern_list_view_delete_rules_cb(void *data, Evas_Object *obj, void *event_info) +{ + dlp_pattern_list_data_s *dpld = data; + + delete_ctxpopup(dpld->pattern_ctxpopup); + create_privacy_dlp_pattern_delete_view(dpld->ad, dpld->pattern_list, dpld); +} + +static void _pattern_list_view_menu_button_cb(void *data, Evas_Object *obj, void *event_info) +{ + dlp_pattern_list_data_s *dpld = data; + dpld->pattern_ctxpopup = create_ctxpop(dpld->ad); + + elm_ctxpopup_item_append(dpld->pattern_ctxpopup, dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_CREATE), NULL, _pattern_list_view_create_rule_cb, data); + if (has_deletable_pattern(dpld->pattern_list)) + elm_ctxpopup_item_append(dpld->pattern_ctxpopup, dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_DELETE), NULL, _pattern_list_view_delete_rules_cb, data); +} + +void delete_category_list() +{ + if (NULL == pattern_list_data.category_list) + return; + + /* Delete all the categories */ + GList *l; + for (l = pattern_list_data.category_list; l != NULL; l = l->next) { + char *category = l->data; + free(category); + } + /* Delete category list */ + g_list_free(pattern_list_data.category_list); + pattern_list_data.category_list = NULL; +} + +void delete_pattern_list() +{ + if (NULL == pattern_list_data.pattern_list) + return; + + /* Delete all the rules */ + GList* l; + for (l = pattern_list_data.pattern_list; l != NULL; l = l->next) { + get_pattern_s* pattern = (get_pattern_s*)(l->data); + free(pattern); + } + /* Delete pattern list */ + g_list_free(pattern_list_data.pattern_list); + pattern_list_data.pattern_list = NULL; +} + +void set_pattern_filter_text(Evas_Object *category_hoversel, dlp_pattern_list_data_s* data) +{ + const char format[] = "<color=#FFFFFFFF left_margin=25>%s</color>"; + char text[LEN_CATEGORY + 1 + sizeof format]; + const size_t text_len = sizeof text; + snprintf(text, text_len, format, data->current_category); + text[text_len - 1] = '\0'; + elm_object_text_set(category_hoversel, text); +} + +void set_empty_pattern_genlist(Evas_Object *pattern_genlist) +{ + elm_layout_theme_set(pattern_genlist, "layout", "nocontents", "default"); +} + +int populate_pattern_genlist(dlp_pattern_list_data_s* data) +{ + int pattern_count = 0; + + if (NULL != data->pattern_list) { + Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new(); + itc->item_style = "multiline"; + itc->func.text_get = _pattern_genlist_text_get_cb; + itc->func.del = _pattern_genlist_del_cb; + + Elm_Object_Item *it = NULL; + GList* l; + /* Append patterns as genlist item */ + for (l = data->pattern_list; l != NULL; l = l->next) { + // note item will be freed either in _pattern_genlist_del_cb or at the end of the loop + dlp_item_pattern_s *item = calloc(1, sizeof(dlp_item_pattern_s)); + if (NULL == item) + continue; + + // pattern item data + item->data = (get_pattern_s*)l->data; + + // append pattern to the genlist + if (strcmp(data->current_category, ALL_PATTERNS) == 0 + || strcmp(data->current_category, item->data->category.text) == 0) { + it = elm_genlist_item_append(data->pattern_genlist, itc, item, NULL, ELM_GENLIST_ITEM_NONE, _pattern_genlist_item_selected_cb, data); + log_if(it == NULL, 1, "Error in elm_genlist_item_append"); + ++pattern_count; + } else { + free(item); + } + } + + elm_genlist_item_class_free(itc); + } + + return pattern_count; +} + +void create_pattern_hoversel(dlp_pattern_list_data_s *data) +{ + Evas_Object *pattern_hoversel = elm_hoversel_add(data->pattern_box); + elm_hoversel_horizontal_set(pattern_hoversel, EINA_FALSE); + elm_hoversel_hover_parent_set(pattern_hoversel, data->pattern_box); + // Populate hoversel + elm_hoversel_item_add(pattern_hoversel, ALL_PATTERNS, NULL, ELM_ICON_NONE, _pattern_filter_cb, data); + GList* l; + const char *category; + for (l = data->category_list; l != NULL; l = l->next) { + category = l->data; + elm_hoversel_item_add(pattern_hoversel, category, NULL, ELM_ICON_NONE, _pattern_filter_cb, data); + } + set_pattern_filter_text(pattern_hoversel, data); + evas_object_size_hint_weight_set(pattern_hoversel, EVAS_HINT_EXPAND, 0.0); + evas_object_size_hint_align_set(pattern_hoversel, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_show(pattern_hoversel); + elm_box_pack_end(data->pattern_box, pattern_hoversel); +} + +void create_pattern_genlist(dlp_pattern_list_data_s* data) +{ + data->pattern_genlist = common_genlist_add(data->pattern_box); + evas_object_size_hint_weight_set(data->pattern_genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(data->pattern_genlist, EVAS_HINT_FILL, EVAS_HINT_FILL); + if (populate_pattern_genlist(data) == 0) + set_empty_pattern_genlist(data->pattern_genlist); + evas_object_show(data->pattern_genlist); + elm_box_pack_end(data->pattern_box, data->pattern_genlist); +} + +void create_pattern_list_components(dlp_pattern_list_data_s* data) +{ + /* Create box container to hold view's components */ + data->pattern_box = elm_box_add(data->view_parent); + evas_object_show(data->pattern_box); + + create_pattern_hoversel(data); + create_pattern_genlist(data); + + elm_object_part_content_set(data->view_parent, "elm.swallow.content", data->pattern_box); + + if (PRIV_GUARD_DLP_PROFILE_CUSTOM == data->config->profile) + /* Register the Menu key event callback */ + eext_object_event_callback_add(data->pattern_box, EEXT_CALLBACK_MORE, _pattern_list_view_menu_button_cb, data); +} + +bool has_deletable_pattern(const GList *pattern_list) +{ + bool has_deletable = false; + GList* l; + for (l = pattern_list_data.pattern_list; l != NULL; l = l->next) { + get_pattern_s* pattern = (get_pattern_s*)(l->data); + if (!pattern->undeletable) { + has_deletable = true; + break; + } + } + return has_deletable; +} + +void update_privacy_dlp_patterns_list_view(void *pattern_list_data) +{ + if (NULL == pattern_list_data) { + LOGE("Invalid parameter"); + return; + } + + dlp_pattern_list_data_s *dpld = pattern_list_data; + + delete_pattern_list(); + + /* Get dlp leak logs from privacy guard */ + const int res = privacy_guard_client_foreach_dlp_patterns(_pg_dlp_patterns_cb, dpld); + log_if(res != PRIV_GUARD_ERROR_SUCCESS, 1, "privacy_guard_client_foreach_dlp_custom_rules() is failed. [%d]", res); + + elm_box_unpack(dpld->pattern_box, dpld->pattern_genlist); + evas_object_del(dpld->pattern_genlist); + create_pattern_list_components(dpld); +} + +void create_privacy_dlp_patterns_list_view(struct app_data_s *ad, Evas_Object *parent, const dlp_profile_s *config) +{ + delete_category_list(); + delete_pattern_list(); + + pattern_list_data.ad = ad; + pattern_list_data.view_parent = parent; + pattern_list_data.current_category = ALL_PATTERNS; + pattern_list_data.config = config; + + int res = privacy_guard_client_foreach_dlp_categories(_pg_dlp_categories_cb, &pattern_list_data); + log_if(res != PRIV_GUARD_ERROR_SUCCESS, 1, "privacy_guard_client_foreach_dlp_categories() failed. [%d]", res); + + /* Get dlp patterns from privacy guard */ + res = privacy_guard_client_foreach_dlp_patterns(_pg_dlp_patterns_cb, &pattern_list_data); + log_if(res != PRIV_GUARD_ERROR_SUCCESS, 1, "privacy_guard_client_foreach_dlp_patterns() failed. [%d]", res); + + create_pattern_list_components(&pattern_list_data); +} diff --git a/ui/src/privacy_dlp_reports_app_rank_view.c b/ui/src/privacy_dlp_reports_app_rank_view.c new file mode 100644 index 0000000..58efa5c --- /dev/null +++ b/ui/src/privacy_dlp_reports_app_rank_view.c @@ -0,0 +1,246 @@ +/** + * Copyright (c) 2017 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* + * @file privacy_dlp_reports_app_rank_view.c + * @version 1.0 + * @brief + */ + +#include <efl_extension.h> +#include <glib.h> +#include <time.h> +#include <tzplatform_config.h> +#include <privacy_guard_client.h> +#include "common_utils.h" +#include "privacy_setting.h" +#include "privacy_view.h" +#include "privilege_info.h" + +#define REPORT_TOTAL_LEAKS_LEN 100 + +static GList* dlp_leak_log_list = NULL; +static Evas_Object *genlist = NULL; + +void update_privacy_dlp_reports_app_rank_view(struct app_data_s *ad); + +static dlp_statistics_cb_s stats_cb = { + NULL, + privacy_guard_client_foreach_leak_logs_by_app_name, + update_privacy_dlp_reports_app_rank_view +}; + +static bool _pg_dlp_leak_logs_cb(const char *app_name, time_t first_time_stamp, time_t last_time_stamp, const char *app_icon, int leak_count, void *user_data) +{ + // note that data is freed update_privacy_dlp_reports_app_rank_view() and create_privacy_dlp_reports_app_rank_view() + leak_log_get_app_count_s *data = (leak_log_get_app_count_s *)malloc(sizeof(leak_log_get_app_count_s)); + if (data) { + strncpy(data->application_name, app_name, LEN_APPLICATION_NAME); + data->application_name[LEN_APPLICATION_NAME - 1] = '\0'; + data->first_time_stamp = first_time_stamp; + data->last_time_stamp = last_time_stamp; + strncpy(data->application_icon, app_icon, LEN_APPLICATION_ICON); + data->application_name[LEN_APPLICATION_ICON - 1] = '\0'; + data->leak_count = leak_count; + + dlp_leak_log_list = g_list_append(dlp_leak_log_list, data); + } + return true; +} + +static char* _gl_text_get_cb(void *data, Evas_Object *obj, const char *part) +{ + leak_log_get_app_count_s *item = (leak_log_get_app_count_s *)data; + + if (strcmp(part, "elm.text") == 0) + return strdup(item->application_name); + + if (strcmp(part, "elm.text.multiline") == 0) { + if (item == NULL) + return ""; + char string_buf[REPORT_TOTAL_LEAKS_LEN]; + + int size = snprintf(string_buf, REPORT_TOTAL_LEAKS_LEN, "%s: %d<br>From: ", + dgettext("privacy-setting", PRIVACY_MENU_DLP_REPORTS_TOTAL_LEAKS), item->leak_count); + + struct tm *timestamp = gmtime(&item->first_time_stamp); + size += strftime(string_buf + size, 100 - size, "%b %d, %Y - To: ", timestamp); + + timestamp = gmtime(&item->last_time_stamp); + size += strftime(string_buf + size, 100 - size, "%b %d, %Y", timestamp); + + char *multiline = strdup(string_buf); + + return multiline; + } + + return NULL; +} + +/** + * @brief Internal callback function invoked when genlist item displayed. + * @param[in] data The user data passed to the elm_genlist_item_append() function + * @param[in] obj The object invoking this callback function + * @param[in] part The name of the item's part being rendered + */ +static Evas_Object *_gl_content_get_cb(void *data, Evas_Object *obj, const char *part) +{ + leak_log_get_app_count_s *item = (leak_log_get_app_count_s *)data; + + if (strcmp(part, "elm.swallow.icon") == 0) { + Evas_Object *icon = elm_icon_add(obj); + elm_image_file_set(icon, item->application_icon, NULL); + evas_object_size_hint_min_set(icon, ELM_SCALE_SIZE(50), ELM_SCALE_SIZE(50)); + return icon; + } + + return NULL; +} + +static void _menu_item_selected_cb(void *data, Evas_Object *obj, void *event_info) +{ + /* Get selected item */ + Elm_Object_Item *ei = event_info; + leak_log_get_app_count_s *item = elm_object_item_data_get(ei); + + /* Unhighlight selected item */ + elm_genlist_item_selected_set(ei, EINA_FALSE); + + struct app_data_s *ad = (struct app_data_s *)data; + + stats_cb.name = item->application_name; + create_privacy_dlp_reports_full_view(&stats_cb, ad); +} + +/* + * @brief Function will be operated when genlist is deleted. + * @param[in] data The data to be passed to the callback function + * @param[in] obj The Evas object handle to be passed to the callback function + */ +static void _gl_del_cb(void *data, Evas_Object *obj) +{ + leak_log_get_app_count_s *item = data; + free(item); +} + +/** + * @brief Creates essential objects for the screen. + */ +void create_privacy_dlp_reports_app_rank_view(struct app_data_s *ad) +{ + uid_t user_id = getuid(); + if (dlp_leak_log_list) { + g_list_free(dlp_leak_log_list); + dlp_leak_log_list = NULL; + } + + /* Get dlp leak logs from privacy guard */ + int res = privacy_guard_client_foreach_app_leak_count(user_id, _pg_dlp_leak_logs_cb, NULL); + log_if(res != PRIV_GUARD_ERROR_SUCCESS, 1, "privacy_guard_client_foreach_app_leak_count() is failed. [%d]", res); + + if (g_list_length(dlp_leak_log_list) == 0) { + // No content in the genlist + + /* Create elm_layout and set its style as nocontents/text */ + genlist = elm_layout_add(ad->nf); + elm_layout_theme_set(genlist, "layout", "nocontents", "default"); + evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL); + + elm_object_part_text_set(genlist, "elm.text", dgettext("privacy-setting", PRIVACY_MENU_DLP_REPORTS_EMPTY)); + + elm_layout_signal_emit(genlist, "align.center", "elm"); + + } else { + genlist = common_genlist_add(ad->nf); + evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL); + elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS); + + elm_object_style_set(genlist, "effect"); + + Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new(); + + itc->item_style = "multiline"; + itc->func.text_get = _gl_text_get_cb; + itc->func.content_get = _gl_content_get_cb; + itc->func.del = _gl_del_cb; + + Elm_Object_Item *it = NULL; + GList *elem; + + /* Append privacy related package as genlist item */ + for (elem = dlp_leak_log_list; elem; elem = elem->next) { + leak_log_get_app_count_s *item = elem->data; + + // append to the genlist + it = elm_genlist_item_append(genlist, itc, item, NULL, ELM_GENLIST_ITEM_NONE, _menu_item_selected_cb, ad); + log_if(it == NULL, 1, "Error in elm_genlist_item_append"); + } + + elm_genlist_item_class_free(itc); + } + + evas_object_show(genlist); + + /* Change "Privacy Setting" to proper DID : use dgettext() */ + Elm_Object_Item *nf_it = elm_naviframe_item_push(ad->nf, dgettext("privacy-setting", PRIVACY_MENU_DLP_REPORTS_APP_RANK), common_back_btn_add(ad), NULL, genlist, NULL); + + elm_object_item_domain_text_translatable_set(nf_it, PACKAGE, EINA_TRUE); +} + +void update_privacy_dlp_reports_app_rank_view(struct app_data_s *ad) +{ + elm_genlist_clear(genlist); + + uid_t user_id = getuid(); + if (dlp_leak_log_list) { + g_list_free(dlp_leak_log_list); + dlp_leak_log_list = NULL; + } + + /* Get dlp leak logs from privacy guard */ + int res = privacy_guard_client_foreach_app_leak_count(user_id, _pg_dlp_leak_logs_cb, NULL); + log_if(res != PRIV_GUARD_ERROR_SUCCESS, 1, "privacy_guard_client_foreach_app_leak_count() is failed. [%d]", res); + + if (g_list_length(dlp_leak_log_list) == 0) { + // No content in the genlist + elm_layout_theme_set(genlist, "layout", "nocontents", "default"); + elm_object_part_text_set(genlist, "elm.text", dgettext("privacy-setting", PRIVACY_MENU_DLP_REPORTS_EMPTY)); + elm_layout_signal_emit(genlist, "align.center", "elm"); + + } else { + Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new(); + + itc->item_style = "multiline"; + itc->func.text_get = _gl_text_get_cb; + itc->func.content_get = _gl_content_get_cb; + itc->func.del = _gl_del_cb; + + Elm_Object_Item *it = NULL; + GList *elem; + + /* Append privacy related package as genlist item */ + for (elem = dlp_leak_log_list; elem; elem = elem->next) { + leak_log_get_app_count_s *item = elem->data; + + // append to the genlist + it = elm_genlist_item_append(genlist, itc, item, NULL, ELM_GENLIST_ITEM_NONE, _menu_item_selected_cb, ad); + log_if(it == NULL, 1, "Error in elm_genlist_item_append"); + } + + elm_genlist_item_class_free(itc); + } +} diff --git a/ui/src/privacy_dlp_reports_data_stat_view.c b/ui/src/privacy_dlp_reports_data_stat_view.c new file mode 100644 index 0000000..7ebd202 --- /dev/null +++ b/ui/src/privacy_dlp_reports_data_stat_view.c @@ -0,0 +1,232 @@ +/** + * Copyright (c) 2017 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* + * @file privacy_dlp_reports_data_stat_view.c + * @version 1.0 + * @brief + */ + +#include <efl_extension.h> +#include <glib.h> +#include <time.h> +#include <tzplatform_config.h> +#include <privacy_guard_client.h> +#include "common_utils.h" +#include "privacy_setting.h" +#include "privacy_view.h" +#include "privilege_info.h" + +static GList* dlp_leak_log_list = NULL; +static Evas_Object *genlist = NULL; + +void update_privacy_dlp_reports_data_stat_view(struct app_data_s *ad); + +static dlp_statistics_cb_s stats_cb = { + NULL, + privacy_guard_client_foreach_leak_logs_by_category, + update_privacy_dlp_reports_data_stat_view +}; + +static bool _pg_dlp_leak_logs_cb(const char *category, time_t first_time_stamp, time_t last_time_stamp, int leak_count, void *user_data) +{ + leak_log_get_category_count_s *data = (leak_log_get_category_count_s *)malloc(sizeof(leak_log_get_category_count_s)); + + if (data != NULL) { + strncpy(data->category.text, category, LEN_CATEGORY); + data->first_time_stamp = first_time_stamp; + data->last_time_stamp = last_time_stamp; + data->leak_count = leak_count; + + dlp_leak_log_list = g_list_append(dlp_leak_log_list, data); + } + return true; +} + +static char* _gl_text_get_cb(void *data, Evas_Object *obj, const char *part) +{ + leak_log_get_category_count_s *item = (leak_log_get_category_count_s *)data; + + if (strcmp(part, "elm.text") == 0) + return strdup(item->category.text); + + if (strcmp(part, "elm.text.multiline") == 0) { + if (item == NULL) + return ""; + char string_buf[100]; + + int size = snprintf(string_buf, 100, "%s: %d<br>From: ", dgettext("privacy-setting", + PRIVACY_MENU_DLP_REPORTS_TOTAL_LEAKS), item->leak_count); + + struct tm *timestamp = gmtime(&item->first_time_stamp); + size += strftime(string_buf + size, 100 - size, "%b %d, %Y - To: ", timestamp); + + timestamp = gmtime(&item->last_time_stamp); + size += strftime(string_buf + size, 100 - size, "%b %d, %Y", timestamp); + + char *multiline = strdup(string_buf); + + return multiline; + } + + return NULL; +} + +/** + * @brief Internal callback function invoked when genlist item displayed. + * @param[in] data The user data passed to the elm_genlist_item_append() function + * @param[in] obj The object invoking this callback function + * @param[in] part The name of the item's part being rendered + */ +static Evas_Object *_gl_content_get_cb(void *data, Evas_Object *obj, const char *part) +{ + return NULL; +} + +static void _menu_item_selected_cb(void *data, Evas_Object *obj, void *event_info) +{ + /* Get selected item */ + Elm_Object_Item *ei = event_info; + leak_log_get_category_count_s *item = elm_object_item_data_get(ei); + + /* Unhighlight selected item */ + elm_genlist_item_selected_set(ei, EINA_FALSE); + + struct app_data_s *ad = (struct app_data_s *)data; + + stats_cb.name = item->category.text; + create_privacy_dlp_reports_full_view(&stats_cb, ad); +} + +/* + * @brief Function will be operated when genlist is deleted. + * @param[in] data The data to be passed to the callback function + * @param[in] obj The Evas object handle to be passed to the callback function + */ +static void _gl_del_cb(void *data, Evas_Object *obj) +{ + leak_log_get_category_count_s *item = data; + free(item); +} + +/** + * @brief Creates essential objects for the screen. + */ +void create_privacy_dlp_reports_data_stat_view(struct app_data_s *ad) +{ + uid_t user_id = getuid(); + if (dlp_leak_log_list) { + g_list_free(dlp_leak_log_list); + dlp_leak_log_list = NULL; + } + + /* Get dlp leak logs from privacy guard */ + int res = privacy_guard_client_foreach_category_leak_count(user_id, _pg_dlp_leak_logs_cb, NULL); + log_if(res != PRIV_GUARD_ERROR_SUCCESS, 1, "privacy_guard_client_foreach_category_leak_count() is failed. [%d]", res); + + if (g_list_length(dlp_leak_log_list) == 0) { + // No content in the genlist + + /* Create elm_layout and set its style as nocontents/text */ + genlist = elm_layout_add(ad->nf); + elm_layout_theme_set(genlist, "layout", "nocontents", "default"); + evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL); + + elm_object_part_text_set(genlist, "elm.text", dgettext("privacy-setting", PRIVACY_MENU_DLP_REPORTS_EMPTY)); + + elm_layout_signal_emit(genlist, "align.center", "elm"); + + } else { + genlist = common_genlist_add(ad->nf); + evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL); + elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS); + + elm_object_style_set(genlist, "effect"); + + Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new(); + + itc->item_style = "multiline"; + itc->func.text_get = _gl_text_get_cb; + itc->func.content_get = _gl_content_get_cb; + itc->func.del = _gl_del_cb; + + Elm_Object_Item *it = NULL; + GList *elem; + + /* Append privacy related package as genlist item */ + for (elem = dlp_leak_log_list; elem; elem = elem->next) { + leak_log_get_category_count_s *item = elem->data; + + // append to the genlist + it = elm_genlist_item_append(genlist, itc, item, NULL, ELM_GENLIST_ITEM_NONE, _menu_item_selected_cb, ad); + log_if(it == NULL, 1, "Error in elm_genlist_item_append"); + } + + elm_genlist_item_class_free(itc); + } + + evas_object_show(genlist); + + /* Change "Privacy Setting" to proper DID : use dgettext() */ + Elm_Object_Item *nf_it = elm_naviframe_item_push(ad->nf, dgettext("privacy-setting", PRIVACY_MENU_DLP_REPORTS_STATISTICS), common_back_btn_add(ad), NULL, genlist, NULL); + + elm_object_item_domain_text_translatable_set(nf_it, PACKAGE, EINA_TRUE); +} + +void update_privacy_dlp_reports_data_stat_view(struct app_data_s *ad) +{ + elm_genlist_clear(genlist); + + uid_t user_id = getuid(); + if (dlp_leak_log_list) { + g_list_free(dlp_leak_log_list); + dlp_leak_log_list = NULL; + } + + /* Get dlp leak logs from privacy guard */ + int res = privacy_guard_client_foreach_category_leak_count(user_id, _pg_dlp_leak_logs_cb, NULL); + log_if(res != PRIV_GUARD_ERROR_SUCCESS, 1, "privacy_guard_client_foreach_app_leak_count() is failed. [%d]", res); + + if (g_list_length(dlp_leak_log_list) == 0) { + // No content in the genlist + elm_layout_theme_set(genlist, "layout", "nocontents", "default"); + elm_object_part_text_set(genlist, "elm.text", dgettext("privacy-setting", PRIVACY_MENU_DLP_REPORTS_EMPTY)); + elm_layout_signal_emit(genlist, "align.center", "elm"); + + } else { + Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new(); + + itc->item_style = "multiline"; + itc->func.text_get = _gl_text_get_cb; + itc->func.content_get = _gl_content_get_cb; + itc->func.del = _gl_del_cb; + + Elm_Object_Item *it = NULL; + GList *elem; + + /* Append privacy related package as genlist item */ + for (elem = dlp_leak_log_list; elem; elem = elem->next) { + leak_log_get_app_count_s *item = elem->data; + + // append to the genlist + it = elm_genlist_item_append(genlist, itc, item, NULL, ELM_GENLIST_ITEM_NONE, _menu_item_selected_cb, ad); + log_if(it == NULL, 1, "Error in elm_genlist_item_append"); + } + + elm_genlist_item_class_free(itc); + } +} diff --git a/ui/src/privacy_dlp_reports_del_view.c b/ui/src/privacy_dlp_reports_del_view.c new file mode 100644 index 0000000..90d25a2 --- /dev/null +++ b/ui/src/privacy_dlp_reports_del_view.c @@ -0,0 +1,457 @@ +/** + * Copyright (c) 2017 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* + * @file privacy_dlp_reports_del_view.c + * @version 1.0 + * @brief + */ + +#include "common_utils.h" +#include "common_popup.h" +#include "privacy_view.h" +#include <efl_extension.h> + +#define MAX_DELETE_LOG 100 + +typedef struct { + struct app_data_s *ad; + GList *log_list; + rule_action_filter action; + Evas_Object *genlist; + Evas_Object *confirm_delete_popup; + Evas_Object *delete_button; + Elm_Object_Item *naviframe_title; +} reports_del_data_s; + +static reports_del_data_s reports_del_data = { + .ad = NULL, + .log_list = NULL, + .action = ACTION_ALL, + .genlist = NULL, + .confirm_delete_popup = NULL, + .delete_button = NULL, + .naviframe_title = NULL +}; + +Evas_Object *create_check(Evas_Object *parent); +size_t get_number_of_selected_logs(Evas_Object *genlist); +void set_view_title_bar(reports_del_data_s *data); + +static void _reports_del_popup_ok_cb(void *data, Evas_Object *obj, void *event_info) +{ + reports_del_data_s *rdd = data; + const size_t total_logs = elm_genlist_items_count(rdd->genlist); + + int log_id[MAX_DELETE_LOG]; + int res = PRIV_GUARD_ERROR_SUCCESS; + size_t total_deleted_logs = 0; + size_t i = 1; + + // Select checked log ids and delete them + while (i <= total_logs) { + size_t log_count = 0; + + // Select at most MAX_DELETE_LOGs to avoid potential memory problems + // and large number of variables in SQL query + while (i <= total_logs && log_count < MAX_DELETE_LOG) { + Elm_Object_Item *item = elm_genlist_nth_item_get(rdd->genlist, i); + + if (NULL != item) { + const dlp_item_log_s *leak_log_item = elm_object_item_data_get(item); + + if (NULL != leak_log_item && leak_log_item->is_checked) + log_id[log_count++] = leak_log_item->data->log_id; + } + + ++i; + } + + if (log_count > 0) { + // Delete selected logs + res = privacy_guard_client_purge_leak_logs_by_logid(log_id, log_count); + if (PRIV_GUARD_ERROR_SUCCESS == res) { + LOGI("Deleted %d logs.", log_count); + total_deleted_logs += log_count; + } else { + LOGE("Failed to delete logs. Error=%d", res); + } + } + } + + if (PRIV_GUARD_ERROR_SUCCESS == res) { + char *toast_msg = NULL; + if (total_deleted_logs > 1) { + const char *format = dgettext("privacy-setting", PRIVACY_MENU_DLP_LOG_LOGS_DELETED); + const size_t buff_len = snprintf(NULL, 0, format, total_deleted_logs) + 1; + toast_msg = malloc(buff_len); + if (toast_msg != NULL) + snprintf(toast_msg, buff_len, format, total_deleted_logs); + } else { + toast_msg = dgettext("privacy-setting", PRIVACY_MENU_DLP_LOG_DELETED); + } + + show_toast_notification(toast_msg, rdd->ad->win); + + if (total_deleted_logs > 1) + free(toast_msg); + } + + destroy_popup(rdd->confirm_delete_popup); + rdd->confirm_delete_popup = NULL; + elm_naviframe_item_pop(rdd->ad->nf); + + update_privacy_dlp_reports_full_view(); +} + +static void _reports_del_popup_cancel_cb(void *data, Evas_Object *obj, void *event_info) +{ + reports_del_data_s *rdd = data; + destroy_popup(rdd->confirm_delete_popup); + rdd->confirm_delete_popup = NULL; +} + +static void _reports_del_cancel_btn_cb(void *data, Evas_Object *obj, void *event_info) +{ + reports_del_data_s *rdd = data; + destroy_popup(rdd->confirm_delete_popup); + rdd->confirm_delete_popup = NULL; + elm_naviframe_item_pop(rdd->ad->nf); +} + +static void _reports_del_delete_btn_cb(void *data, Evas_Object *obj, void *event_info) +{ + reports_del_data_s *rdd = data; + + const size_t number_of_selected_logs = get_number_of_selected_logs(rdd->genlist); + const char *format = dgettext("privacy-setting", PRIVACY_MENU_DLP_LOG_LOGS_WILL_BE_DELETED); + const size_t buff_len = snprintf(NULL, 0, format, number_of_selected_logs) + 1; + char *confirm_del_msg = malloc(buff_len); + + if (confirm_del_msg != NULL) { + snprintf(confirm_del_msg, buff_len, format, number_of_selected_logs); + + rdd->confirm_delete_popup = create_two_buttons_popup( + rdd->genlist, + dgettext("privacy-setting", PRIVACY_MENU_DLP_LOG_DELETE_LOG), + confirm_del_msg, + dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_OK), + _reports_del_popup_ok_cb, + dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_CANCEL), + _reports_del_popup_cancel_cb, + _reports_del_popup_cancel_cb, + rdd); + + free(confirm_del_msg); + } +} + +static char *_reports_del_select_all_text_get_cb(void *data, Evas_Object *obj, const char *part) +{ + if (strcmp(part, "elm.text") == 0) + return strdup(dgettext("privacy-setting", PRIVACY_MENU_DLP_LOG_SELECT_ALL)); + return NULL; +} + +static Evas_Object *_reports_del_select_all_content_get_cb(void *data, Evas_Object *obj, const char *part) +{ + if (strcmp(part, "elm.swallow.end") == 0) { + dlp_item_log_s *item = (dlp_item_log_s *)data; + Evas_Object *check = create_check(obj); + elm_check_state_set(check, item->is_checked ? EINA_TRUE : EINA_FALSE); + item->check = check; + return check; + } + return NULL; +} + +static void _reports_del_select_all_selected_cb(void *data, Evas_Object *obj, void *event_info) +{ + /* Get selected ("Select all") item */ + Elm_Object_Item *ei = event_info; + dlp_item_log_s *item = elm_object_item_data_get(ei); + item->is_checked = !item->is_checked; + const bool is_checked = item->is_checked; + const Eina_Bool check_checkbox = is_checked ? EINA_TRUE : EINA_FALSE; + + /* Unhighlight selected item */ + elm_genlist_item_selected_set(ei, EINA_FALSE); + + while (NULL != ei) { + item = elm_object_item_data_get(ei); + elm_check_state_set(item->check, check_checkbox); + item->is_checked = is_checked; + ei = elm_genlist_item_next_get(ei); + } + + reports_del_data_s *rdd = data; + set_view_title_bar(rdd); +} + +static char *_reports_del_gl_text_get_cb(void *data, Evas_Object *obj, const char *part) +{ + dlp_item_log_s *item = (dlp_item_log_s *)data; + + if (strcmp(part, "elm.text") == 0) + return strdup(item->data->app_name); + + if (strcmp(part, "elm.text.multiline") == 0) { + if (item->data == NULL) + return ""; + + char time_str[64] = {0,}; + struct tm *timeinfo = localtime(&item->data->time_stamp); + strftime(time_str, sizeof(time_str), "%a, %x %X", timeinfo); + + size_t string_mem_needed = snprintf(NULL, 0, + "%s<br>%s", + item->data->destination, + time_str); + + char *string_buf = malloc(string_mem_needed + 1); + + if (string_buf != NULL) { + snprintf(string_buf, + string_mem_needed+1, + "%s<br>%s", + item->data->destination, + time_str); + + char *multiline = strdup(string_buf); + free(string_buf); + + return multiline; + } + } + + return NULL; +} + +static Evas_Object *_reports_del_gl_content_get_cb(void *data, Evas_Object *obj, const char *part) +{ + dlp_item_log_s *item = (dlp_item_log_s *)data; + + if (strcmp(part, "elm.swallow.end") == 0) { + Evas_Object *check = create_check(obj); + elm_check_state_set(check, item->is_checked ? EINA_TRUE : EINA_FALSE); + item->check = check; + return check; + } + + if (strcmp(part, "elm.swallow.icon") == 0) { + if (item->data == NULL) + return NULL; + + Evas_Object *icon = elm_icon_add(obj); + elm_image_file_set(icon, item->data->app_icon, NULL); + evas_object_size_hint_min_set(icon, ELM_SCALE_SIZE(50), ELM_SCALE_SIZE(50)); + // NOTE: code below is commented out because only allow actions will be + // released to Tizen 4.0, so action icons become meaningless. + //overlay_action_image(icon, item->data->action); + return icon; + } + + return NULL; +} + +static void _reports_del_gl_del_cb(void *data, Evas_Object *obj) +{ + dlp_item_log_s *item = data; + free(item); +} + +static void _reports_del_item_selected_cb(void *data, Evas_Object *obj, void *event_info) +{ + /* Get selected item */ + Elm_Object_Item *ei = event_info; + dlp_item_log_s *item = elm_object_item_data_get(ei); + + /* Unhighlight selected item */ + elm_genlist_item_selected_set(ei, EINA_FALSE); + + item->is_checked = !item->is_checked; + + /* Set check box state, in case user tapped outside it */ + elm_check_state_set(item->check, item->is_checked ? EINA_TRUE : EINA_FALSE); + + if (!item->is_checked) { + // deselect "Select all" check + Elm_Object_Item *item = elm_genlist_nth_item_get(((reports_del_data_s *)data)->genlist, 0); + if (NULL != item) { + dlp_item_log_s *item_log = elm_object_item_data_get(item); + item_log->is_checked = false; + elm_check_state_set(item_log->check, EINA_FALSE); + } + } + + reports_del_data_s *rdd = data; + set_view_title_bar(rdd); +} + +void set_view_title_bar(reports_del_data_s *data) +{ + const size_t number_of_selected_logs = get_number_of_selected_logs(data->genlist); + if (number_of_selected_logs > 0) { + elm_object_disabled_set(data->delete_button, EINA_FALSE); + + const char *format = dgettext("privacy-setting", PRIVACY_MENU_DLP_LOG_DELETE_LOGS_TITLE_SELECTED); + const size_t buffer_len = snprintf(NULL, 0, format, number_of_selected_logs) + 1; + char *string_buffer = malloc(buffer_len); + + if (string_buffer != NULL) { + snprintf(string_buffer, buffer_len, format, number_of_selected_logs); + elm_object_item_part_text_set(data->naviframe_title, "default", string_buffer); + free(string_buffer); + } + + } else { + elm_object_disabled_set(data->delete_button, EINA_TRUE); + elm_object_item_part_text_set(data->naviframe_title, "default", dgettext("privacy-setting", PRIVACY_MENU_DLP_LOG_DELETE_LOGS_TITLE)); + } +} + +size_t get_number_of_selected_logs(Evas_Object *genlist) +{ + const size_t total_logs = elm_genlist_items_count(genlist); + size_t log_count = 0; + size_t i = 0; + // Count checked log ids + for (i = 1; i <= total_logs; ++i) { // note that 0th item is "Select all", so we skip it + Elm_Object_Item *item = elm_genlist_nth_item_get(genlist, i); + if (NULL != item) { + dlp_item_log_s *leak_log_item = elm_object_item_data_get(item); + if (NULL != leak_log_item && leak_log_item->is_checked) + ++log_count; + } + } + return log_count; +} + +Evas_Object *create_check(Evas_Object *parent) +{ + Evas_Object *check; + check = elm_check_add(parent); + elm_check_state_set(check, EINA_FALSE); + return check; +} + +Evas_Object *add_title_button_to_naviframe(Evas_Object *nf, Elm_Object_Item *nf_it, const bool left_side, const char* text, + Evas_Smart_Cb btn_clicked_cb, void* data) +{ + Evas_Object *btn = elm_button_add(nf); + elm_object_style_set(btn, left_side ? "naviframe/title_left" : "naviframe/title_right"); + elm_object_item_part_content_set(nf_it, left_side ? "title_left_btn" : "title_right_btn", btn); + elm_object_text_set(btn, text); + evas_object_smart_callback_add(btn, "clicked", btn_clicked_cb, data); + return btn; +} + +void create_select_all_item(reports_del_data_s *data) +{ + Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new(); + itc->item_style = "singleline"; + itc->func.text_get = _reports_del_select_all_text_get_cb; + itc->func.content_get = _reports_del_select_all_content_get_cb; + + dlp_item_log_s *item = calloc(1, sizeof(dlp_item_log_s)); + + if (item != NULL) { + item->data = NULL; // Select all check has no leak log associated to it + item->check = NULL; + item->is_checked = false; + } + + elm_genlist_item_append(data->genlist, itc, item, NULL, ELM_GENLIST_ITEM_NONE, _reports_del_select_all_selected_cb, data); + elm_genlist_item_class_free(itc); +} + +void populate_reports_del_genlist(reports_del_data_s *data) +{ + if (NULL == data->log_list) + return; + + create_select_all_item(data); + + Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new(); + + itc->item_style = "multiline"; + itc->func.text_get = _reports_del_gl_text_get_cb; + itc->func.content_get = _reports_del_gl_content_get_cb; + itc->func.del = _reports_del_gl_del_cb; + + Elm_Object_Item *it = NULL; + GList* l; + + /* Append privacy related package as genlist item */ + for (l = data->log_list; l != NULL; l = l->next) { + dlp_item_log_s *item = calloc(1, sizeof(dlp_item_log_s)); + + if (item != NULL) { + // item data + item->data = (dlp_log_s*)l->data; + item->check = NULL; + item->is_checked = false; + + // append to the genlist + if (filter_rule_by_action(item->data->action, data->action)) { + it = elm_genlist_item_append(data->genlist, itc, item, NULL, ELM_GENLIST_ITEM_NONE, _reports_del_item_selected_cb, data); + log_if(it == NULL, 1, "Error in elm_genlist_item_append"); + } + } + } + + elm_genlist_item_class_free(itc); +} + +void create_reports_del_genlist(reports_del_data_s *data) +{ + data->genlist = common_genlist_add(data->ad->nf); + evas_object_size_hint_weight_set(data->genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(data->genlist, EVAS_HINT_FILL, EVAS_HINT_FILL); + populate_reports_del_genlist(data); + evas_object_show(data->genlist); +} + +void create_privacy_dlp_reports_del_view(GList* log_list, int action, struct app_data_s *ad) +{ + if (NULL == log_list || action > 2 || NULL == ad) { + LOGE("Invalid parameter"); + return; + } + + reports_del_data.ad = ad; + if (NULL == reports_del_data.confirm_delete_popup) { + destroy_popup(reports_del_data.confirm_delete_popup); + reports_del_data.confirm_delete_popup = NULL; + } + reports_del_data.log_list = log_list; + reports_del_data.action = action; + + create_reports_del_genlist(&reports_del_data); + + Elm_Object_Item *nf_it = elm_naviframe_item_push(ad->nf, dgettext("privacy-setting", PRIVACY_MENU_DLP_LOG_DELETE_LOGS_TITLE), NULL, NULL, reports_del_data.genlist, NULL); + + reports_del_data.naviframe_title = nf_it; + + /* add cancel and delete buttons to title bar */ + add_title_button_to_naviframe(ad->nf, nf_it, true, dgettext("privacy-setting", PRIVACY_MENU_DLP_LOG_CANCEL_BTN), _reports_del_cancel_btn_cb, &reports_del_data); + reports_del_data.delete_button = add_title_button_to_naviframe(ad->nf, nf_it, false, dgettext("privacy-setting", PRIVACY_MENU_DLP_LOG_DELETE_BTN), _reports_del_delete_btn_cb, &reports_del_data); + elm_object_disabled_set(reports_del_data.delete_button, EINA_TRUE); + + /* Register the Back key event callback */ + eext_object_event_callback_add(ad->nf, EEXT_CALLBACK_BACK, _reports_del_cancel_btn_cb, &reports_del_data); + + elm_object_item_domain_text_translatable_set(nf_it, PACKAGE, EINA_TRUE); +} diff --git a/ui/src/privacy_dlp_reports_full_view.c b/ui/src/privacy_dlp_reports_full_view.c new file mode 100644 index 0000000..a509d96 --- /dev/null +++ b/ui/src/privacy_dlp_reports_full_view.c @@ -0,0 +1,365 @@ +/* + * Copyright (c) 2017 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* + * @file privacy_dlp_reports_full_view.c + * @version 1.0 + * @brief + */ + +#include <math.h> +#include <efl_extension.h> +#include <glib.h> +#include <time.h> +#include <tzplatform_config.h> +#include <privacy_guard_client.h> +#include "common_utils.h" +#include "common_ctxpopup.h" +#include "privacy_setting.h" +#include "privacy_view.h" +#include "privilege_info.h" + +#define ACTION_TEXT_LEN 128 + +// Rule action filter labels +static const char *ACTION_TEXT[ACTION_TOTAL]; +static dlp_statistics_cb_s *stats_cb = NULL; + +typedef struct { + struct app_data_s *ad; + GList* dlp_leak_log_list; // List with each leak in privacy-guard + rule_action_filter current_action; // Stores current action filter + int leaks_count; // Number of leaks currently displayed + Evas_Object *box; // Box to hold UI components + Evas_Object *genlist; // Genlist to display each leak + Evas_Object *ctxpopup; // Popup menu +} reports_full_view_data_s; + +static reports_full_view_data_s reports_full_view_data = { + .dlp_leak_log_list = NULL, + .current_action = ACTION_ALL, + .box = NULL, + .genlist = NULL, + .ctxpopup = NULL +}; + +// forward declarations +void set_action_filter_text(Evas_Object *action_hoversel, int action); +void create_reports_genlist(reports_full_view_data_s *data); + +static bool _pg_dlp_leak_logs_cb(int id, time_t time_stamp, PgDlpAction action, const char *app_name, const char *app_icon, const char *destination, void *user_data) +{ + dlp_log_s *data = (dlp_log_s *)malloc(sizeof(dlp_log_s)); + + if (data != NULL) { + data->log_id = id; + data->time_stamp = time_stamp; + data->action = action; + data->app_name = strdup(app_name); + data->app_icon = strdup(app_icon); + data->destination = strdup(destination); + + reports_full_view_data.dlp_leak_log_list = g_list_append(reports_full_view_data.dlp_leak_log_list, data); + } + + return true; +} + +static char* _gl_text_get_cb(void *data, Evas_Object *obj, const char *part) +{ + dlp_item_log_s *item = (dlp_item_log_s *)data; + + if (strcmp(part, "elm.text") == 0) + return strdup(item->data->app_name); + + if (strcmp(part, "elm.text.multiline") == 0) { + if (item->data == NULL) + return ""; + + char time_str[64] = {0,}; + struct tm *timeinfo = localtime(&item->data->time_stamp); + strftime(time_str, sizeof(time_str), "%a, %x %X", timeinfo); + + size_t string_mem_needed = snprintf(NULL, 0, + "%s<br>%s", + item->data->destination, + time_str); + + char *string_buf = malloc(string_mem_needed+1); + + if (string_buf != NULL) { + snprintf(string_buf, + string_mem_needed+1, + "%s<br>%s", + item->data->destination, + time_str); + + char *multiline = strdup(string_buf); + free(string_buf); + + return multiline; + } + } + + return NULL; +} + +/** + * @brief Internal callback function invoked when genlist item displayed. + * @param[in] data The user data passed to the elm_genlist_item_append() function + * @param[in] obj The object invoking this callback function + * @param[in] part The name of the item's part being rendered + */ +static Evas_Object *_gl_content_get_cb(void *data, Evas_Object *obj, const char *part) +{ + dlp_item_log_s *item = (dlp_item_log_s *)data; + + if (strcmp(part, "elm.swallow.icon") == 0) { + int x, y; + if (item->data == NULL) + return NULL; + + Evas_Object *icon = elm_icon_add(obj); + elm_image_file_set(icon, item->data->app_icon, NULL); + evas_object_size_hint_min_set(icon, ELM_SCALE_SIZE(50), ELM_SCALE_SIZE(50)); + // NOTE: code below is commented out because only allow actions will be + // released to Tizen 4.0, so action icons become meaningless. + //overlay_action_image(icon, item->data->action); + return icon; + } + + return NULL; +} + +static void _menu_item_selected_cb(void *data, Evas_Object *obj, void *event_info) +{ + /* Get selected item */ + Elm_Object_Item *ei = event_info; + dlp_item_log_s *item = elm_object_item_data_get(ei); + + /* Unhighlight selected item */ + elm_genlist_item_selected_set(ei, EINA_FALSE); + + struct app_data_s *ad = (struct app_data_s *)data; + + create_privacy_dlp_log_detailed_view(item, ad); + +} + +/* + * @brief Function will be operated when genlist is deleted. + * @param[in] data The data to be passed to the callback function + * @param[in] obj The Evas object handle to be passed to the callback function + */ +static void _gl_del_cb(void *data, Evas_Object *obj) +{ + dlp_item_log_s *item = data; + free(item); +} + +void apply_action_filter(reports_full_view_data_s *data, Evas_Object *obj, int action) +{ + data->current_action = action; + set_action_filter_text(obj, action); + elm_box_unpack(data->box, data->genlist); + evas_object_del(data->genlist); + create_reports_genlist(data); +} + +static void _reports_full_delete_cb(void *data, Evas_Object *obj, void *event_info) +{ + reports_full_view_data_s *rfvd = data; + delete_ctxpopup(rfvd->ctxpopup); + create_privacy_dlp_reports_del_view(rfvd->dlp_leak_log_list, rfvd->current_action, rfvd->ad); +} + +static void _reports_full_menu_cb(void *data, Evas_Object *obj, void *event_info) +{ + reports_full_view_data_s *rfvd = data; + if (rfvd->leaks_count > 0) { + rfvd->ctxpopup = create_ctxpop(rfvd->ad); + elm_ctxpopup_item_append(rfvd->ctxpopup, "Delete", NULL, _reports_full_delete_cb, data); + } +} + +const char *get_action_text(unsigned int action) +{ + if (action < ACTION_TOTAL) + return ACTION_TEXT[action]; + else + return NULL; +} + +void set_action_filter_text(Evas_Object *action_hoversel, int action) +{ + char text[ACTION_TEXT_LEN + 1]; + text[ACTION_TEXT_LEN] = 0; + const char *format = "<color=#FFFFFFFF>%s</color>"; + const char *action_text = get_action_text(action); + snprintf(text, ACTION_TEXT_LEN, format, action_text); + elm_object_text_set(action_hoversel, text); +} + +int populate_reports_genlist(reports_full_view_data_s *data) +{ + int leaks_count = 0; + + if (NULL != data->dlp_leak_log_list) { + Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new(); + + itc->item_style = "multiline"; + itc->func.text_get = _gl_text_get_cb; + itc->func.content_get = _gl_content_get_cb; + itc->func.del = _gl_del_cb; + + Elm_Object_Item *it = NULL; + GList* l; + + /* Append privacy related package as genlist item */ + for (l = data->dlp_leak_log_list; l != NULL; l = l->next) { + dlp_item_log_s *item = calloc(1, sizeof(dlp_item_log_s)); + + if (item != NULL) { + // item data + item->data = (dlp_log_s*)l->data; + + // append to the genlist + if (filter_rule_by_action(item->data->action, data->current_action)) { + it = elm_genlist_item_append(data->genlist, itc, item, NULL, ELM_GENLIST_ITEM_NONE, _menu_item_selected_cb, data->ad); + log_if(it == NULL, 1, "Error in elm_genlist_item_append"); + if (NULL != it) + ++leaks_count; + } + } + } + + elm_genlist_item_class_free(itc); + } + + return leaks_count; +} + +void create_reports_genlist(reports_full_view_data_s *data) +{ + data->genlist = common_genlist_add(data->box); + evas_object_size_hint_weight_set(data->genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(data->genlist, EVAS_HINT_FILL, EVAS_HINT_FILL); + data->leaks_count = populate_reports_genlist(data); + if (0 == data->leaks_count) { + /* leaks list is empty */ + elm_layout_theme_set(data->genlist, "layout", "nocontents", "default"); + elm_object_part_text_set(data->genlist, "elm.text", dgettext("privacy-setting", PRIVACY_MENU_DLP_REPORTS_EMPTY)); + elm_layout_signal_emit(data->genlist, "align.center", "elm"); + } + evas_object_show(data->genlist); + elm_box_pack_end(data->box, data->genlist); + /* Register the Menu event callback */ + eext_object_event_callback_add(data->genlist, EEXT_CALLBACK_MORE, _reports_full_menu_cb, data); +} + +static void full_view_back_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info) +{ + struct app_data_s *ad = (struct app_data_s *)data; + return_if(!ad, , , "ad is null"); + elm_naviframe_item_pop(ad->nf); + if (stats_cb) + stats_cb->update_stats(ad); +} + +static Evas_Object *full_view_back_btn_add(struct app_data_s *ad) +{ + Evas_Object *btn = elm_button_add(ad->nf); + elm_object_style_set(btn, "naviframe/back_btn/default"); + evas_object_smart_callback_add(btn, "clicked", full_view_back_btn_clicked_cb, ad); + + return btn; +} + +/** + * @brief Creates essential objects for the screen. + */ +void create_privacy_dlp_reports_full_view(dlp_statistics_cb_s *scb, struct app_data_s *ad) +{ + if (reports_full_view_data.dlp_leak_log_list != NULL) { + g_list_free(reports_full_view_data.dlp_leak_log_list); + reports_full_view_data.dlp_leak_log_list = NULL; + } + + stats_cb = scb; + + reports_full_view_data.ad = ad; + + reports_full_view_data.ad = ad; + reports_full_view_data.leaks_count = 0; + + /* Initialize labels of action's dropdown */ + ACTION_TEXT[ACTION_ALL] = "All actions"; + ACTION_TEXT[ACTION_ALLOW] = "Allow"; + ACTION_TEXT[ACTION_DENY] = "Deny"; + ACTION_TEXT[ACTION_SANITIZE] = "Sanitize"; + reports_full_view_data.current_action = ACTION_ALL; + + /* Get privacy guard data (time_stamp, action, pkg, dest, descrip, category, log) list by a privacy */ + uid_t user_id = getuid(); + + /* Get dlp leak logs from privacy guard */ + if (stats_cb) { + int res = stats_cb->foreach_leak_logs(user_id, stats_cb->name, _pg_dlp_leak_logs_cb, NULL); + log_if(res != PRIV_GUARD_ERROR_SUCCESS, 1, "stats_cb->foreach_leak_logs() is failed. [%d]", res); + } else { + int res = privacy_guard_client_foreach_leak_logs(user_id, _pg_dlp_leak_logs_cb, NULL); + log_if(res != PRIV_GUARD_ERROR_SUCCESS, 1, "privacy_guard_client_foreach_leak_logs() is failed. [%d]", res); + } + + /* Create box container to hold view's components */ + Evas_Object *box = elm_box_add(ad->nf); + evas_object_show(box); + reports_full_view_data.box = box; + + create_reports_genlist(&reports_full_view_data); + + /* Change "Privacy Setting" to proper DID : use dgettext() */ + Elm_Object_Item *nf_it = elm_naviframe_item_push(ad->nf, dgettext("privacy-setting", PRIVACY_MENU_DLP_REPORTS_FULL), full_view_back_btn_add(ad), NULL, box, NULL); + + elm_object_item_domain_text_translatable_set(nf_it, PACKAGE, EINA_TRUE); +} + +void update_privacy_dlp_reports_full_view() +{ + if (NULL == reports_full_view_data.genlist) { + LOGE("genlist is null"); + return; + } + + if (reports_full_view_data.dlp_leak_log_list != NULL) { + g_list_free(reports_full_view_data.dlp_leak_log_list); + reports_full_view_data.dlp_leak_log_list = NULL; + } + + uid_t user_id = getuid(); + + /* Get dlp leak logs from privacy guard */ + if (stats_cb) { + int res = stats_cb->foreach_leak_logs(user_id, stats_cb->name, _pg_dlp_leak_logs_cb, NULL); + log_if(res != PRIV_GUARD_ERROR_SUCCESS, 1, "stats_cb->foreach_leak_logs() is failed. [%d]", res); + } else { + int res = privacy_guard_client_foreach_leak_logs(user_id, _pg_dlp_leak_logs_cb, NULL); + log_if(res != PRIV_GUARD_ERROR_SUCCESS, 1, "privacy_guard_client_foreach_leak_logs() is failed. [%d]", res); + } + + elm_box_unpack(reports_full_view_data.box, reports_full_view_data.genlist); + evas_object_del(reports_full_view_data.genlist); + create_reports_genlist(&reports_full_view_data); +} diff --git a/ui/src/privacy_dlp_reports_rules_and_patterns_view.c b/ui/src/privacy_dlp_reports_rules_and_patterns_view.c new file mode 100644 index 0000000..09f3594 --- /dev/null +++ b/ui/src/privacy_dlp_reports_rules_and_patterns_view.c @@ -0,0 +1,107 @@ +/** + * Copyright (c) 2017 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* + * @file privacy_dlp_reports_rules_and_patterns_view.c + * @version 1.0 + * @brief + */ + +#include "common_utils.h" +#include "privacy_setting.h" +#include "privacy_view.h" +#include <efl_extension.h> + +typedef struct { + struct app_data_s *ad; + const dlp_profile_s *config; + Elm_Object_Item *nf_it; + Evas_Object *content; +} rules_patterns_view_data_s; + +static rules_patterns_view_data_s rules_patterns_view_data = {.ad = NULL, .content = NULL}; + +void delete_category_list(); +void delete_pattern_list(); +void delete_rule_list(); + +Eina_Bool _rules_patterns_nf_pop_cb(void *data, Evas_Object* obj) +{ + delete_category_list(); + delete_pattern_list(); + delete_rule_list(); + return EINA_TRUE; +} + +static void _toolbar_rule_item_cb(void *data, Evas_Object *obj, void *event_info) +{ + rules_patterns_view_data_s *rpvd = data; + create_privacy_dlp_rules_list_view(rpvd->ad, rpvd->content, rpvd->nf_it, rpvd->config); +} + +static void _toolbar_pattern_item_cb(void *data, Evas_Object *obj, void *event_info) +{ + rules_patterns_view_data_s *rpvd = data; + create_privacy_dlp_patterns_list_view(rpvd->ad, rpvd->content, rpvd->config); +} + +Evas_Object* create_rules_and_patterns_tabbar(rules_patterns_view_data_s *data) +{ + Evas_Object *toolbar = elm_toolbar_add(data->ad->nf); + elm_object_style_set(toolbar, "tabbar_with_title"); + elm_toolbar_shrink_mode_set(toolbar, ELM_TOOLBAR_SHRINK_EXPAND); + elm_toolbar_transverse_expanded_set(toolbar, EINA_TRUE); + Elm_Object_Item *rule_item = elm_toolbar_item_append( + toolbar, + NULL, + dgettext("privacy-setting", PRIVACY_MENU_DLP_RULES_N_PATTERNS_TITLE_RULES), + _toolbar_rule_item_cb, + data); + elm_toolbar_item_append( + toolbar, + NULL, + dgettext("privacy-setting", PRIVACY_MENU_DLP_RULES_N_PATTERNS_TITLE_PATTERNS), + _toolbar_pattern_item_cb, + data); + elm_toolbar_select_mode_set(toolbar, ELM_OBJECT_SELECT_MODE_ALWAYS); + elm_toolbar_item_selected_set(rule_item, EINA_TRUE); + return toolbar; +} + +void create_privacy_dlp_reports_rules_and_patterns_view(struct app_data_s *ad, const dlp_profile_s *config) +{ + if (NULL == ad || NULL == config) { + LOGD("Invalid parameter"); + return; + } + rules_patterns_view_data.ad = ad; + rules_patterns_view_data.config = config; + rules_patterns_view_data.content = elm_layout_add(ad->nf); + elm_layout_theme_set(rules_patterns_view_data.content, "layout", "application", "default"); + + rules_patterns_view_data.nf_it = elm_naviframe_item_push( + ad->nf, + dgettext("privacy-setting", PRIVACY_MENU_DLP_RULES_N_PATTERNS_TITLE), + common_back_btn_add(ad), + NULL, + rules_patterns_view_data.content, + "tabbar"); + + elm_naviframe_item_pop_cb_set(rules_patterns_view_data.nf_it, _rules_patterns_nf_pop_cb, ad); + + // Create and set a toolbar into the tabbar part + Evas_Object *rules_patterns_tabbar = create_rules_and_patterns_tabbar(&rules_patterns_view_data); + elm_object_item_part_content_set(rules_patterns_view_data.nf_it, "tabbar", rules_patterns_tabbar); +} diff --git a/ui/src/privacy_dlp_rule_create_view.c b/ui/src/privacy_dlp_rule_create_view.c new file mode 100644 index 0000000..faf2a55 --- /dev/null +++ b/ui/src/privacy_dlp_rule_create_view.c @@ -0,0 +1,199 @@ +/* + * Copyright (c) 2017 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* + * @file privacy_dlp_rule_create_view.c + * @version 1.0 + * @brief + */ + +#include "common_utils.h" +#include "privacy_view.h" +#include <privacy_guard_client.h> +#include <efl_extension.h> + +// Struct used to store create rule menu options +typedef struct { + int item; + Evas_Object *radio; +// struct app_data_s *ad; +} create_rule_radio_s; + +// Enumeration that defines the options of the create rule menu +enum { + CREATE_RULE_ITEM_QUICK = 0, + CREATE_RULE_ITEM_CUSTOM, + CREATE_RULE_ITEM_END +}; + +typedef struct { + struct app_data_s *ad; + dlp_profile_s *config; + void *rule_list_data; + Elm_Object_Item *pop_to_nf_it; + Evas_Object *radio_group; +} rule_create_view_data_s; + +static rule_create_view_data_s rule_create_view_data = { .ad = NULL, .config = NULL, .pop_to_nf_it = NULL, .radio_group = NULL}; + +/** + * @brief Internal callback function invoked when a Create Rule genlist item is displayed + * @param[in] data The user data passed to the elm_genlist_item_append() function + * @param[in] obj The object invoking this callback function + * @param[in] part The name of the item's part being rendered + */ +static char* _gl_rule_item_text_get_cb(void *data, Evas_Object *obj, const char *part) +{ + create_rule_radio_s* radio_item = data; + if (!strcmp(part, "elm.text")) + switch (radio_item->item) { + case CREATE_RULE_ITEM_QUICK: + return strdup(dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULE_QUICK)); + case CREATE_RULE_ITEM_CUSTOM: + return strdup(dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULE_CUSTOM)); + default: + LOGE("Invalid create rule menu item"); + } + + else if (!strcmp(part, "elm.text.multiline")) { + switch (radio_item->item) { + case CREATE_RULE_ITEM_QUICK: + return strdup(dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULE_QUICK_DESCRIPTION)); + case CREATE_RULE_ITEM_CUSTOM: + return strdup(dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULE_CUSTOM_DESCRIPTION)); + default: + LOGE("Invalid create rule menu item"); + } + } + + return NULL; +} + +/** + * @brief Internal callback function invoked when a Create Rule genlist item is displayed + * @param[in] data The user data passed to the elm_genlist_item_append() function + * @param[in] obj The object invoking this callback function + * @param[in] part The name of the item's part being rendered + */ +static Evas_Object* _gl_rule_item_content_get_cb(void *data, Evas_Object *obj, const char *part) +{ + if (strcmp(part, "elm.swallow.end") == 0) { + create_rule_radio_s *item = data; + item->radio = elm_radio_add(obj); + return item->radio; + } + + return NULL; +} + +static void _gl_create_rule_item_realized_cb(void *data, Evas_Object *obj, void *event_info) +{ + create_rule_radio_s *rule_item = elm_object_item_data_get(event_info); + rule_create_view_data_s *rcvd = data; + + elm_radio_state_value_set(rule_item->radio, rule_item->item); + if (CREATE_RULE_ITEM_QUICK == rule_item->item) { + // start of radio group + rcvd->radio_group = rule_item->radio; + } else { + elm_radio_group_add(rule_item->radio, rcvd->radio_group); + deselect_create_rule_radio_group(); + } +} + +/** + * @brief Internal callback function when quick rule create is selected. + * @param[in] data The user data passed to the evas_object_smart_callback_add() function + * @param[in] obj The object invoking this callback function + * @param[in] event_info The structure containing the information on this event + */ +static void _create_rule_item_select_cb(void *data, Evas_Object *obj, void *event_info) +{ + Elm_Object_Item *ei = event_info; + + /* Unhighlight selected item */ + elm_genlist_item_selected_set(ei, EINA_FALSE); + + //const create_rule_radio_s *rule_item = data; + const create_rule_radio_s *rule_item = elm_object_item_data_get(ei); + rule_create_view_data_s *rcvd = data; + + elm_radio_value_set(rcvd->radio_group, rule_item->item); + + switch (rule_item->item) { + case CREATE_RULE_ITEM_QUICK: + create_privacy_dlp_choose_rule_template_view(rcvd->ad, rcvd->pop_to_nf_it, rcvd->config, rcvd->rule_list_data); + break; + case CREATE_RULE_ITEM_CUSTOM: + create_privacy_dlp_choose_apps_view(rcvd->ad, rcvd->pop_to_nf_it, rcvd->config, NULL, rcvd->rule_list_data, NULL, NULL); + break; + default: + LOGE("Invalid create rule item"); + } +} + +/** + * @brief Deselects create rule menu radio group + */ +void deselect_create_rule_radio_group() +{ + elm_radio_value_set(rule_create_view_data.radio_group, CREATE_RULE_ITEM_END); +} + +void create_privacy_dlp_rule_create_view(struct app_data_s *ad, Elm_Object_Item *pop_to_nf_it, dlp_profile_s *config, void *rule_list_data) +{ + if (NULL == ad) { + LOGE("Invalid parameter"); + return; + } + + rule_create_view_data.ad = ad; + rule_create_view_data.config = config; + rule_create_view_data.rule_list_data = rule_list_data; + rule_create_view_data.pop_to_nf_it = pop_to_nf_it; + rule_create_view_data.radio_group = NULL; + + Evas_Object *genlist = NULL; + genlist = common_genlist_add(ad->nf); + evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL); + elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS); + + elm_object_style_set(genlist, "effect"); + + Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new(); + + itc->item_style = "multiline"; + itc->func.text_get = _gl_rule_item_text_get_cb; + itc->func.content_get = _gl_rule_item_content_get_cb; + itc->func.del = NULL; + + static create_rule_radio_s create_rule_item_quick = { .item = CREATE_RULE_ITEM_QUICK, .radio = NULL }; + //create_rule_item_quick.ad = ad; + elm_genlist_item_append(genlist, itc, &create_rule_item_quick, NULL, ELM_GENLIST_ITEM_NONE, _create_rule_item_select_cb, &rule_create_view_data); + + static create_rule_radio_s create_rule_item_custom = { .item = CREATE_RULE_ITEM_CUSTOM, .radio = NULL }; + //create_rule_item_custom.ad = ad; + elm_genlist_item_append(genlist, itc, &create_rule_item_custom, NULL, ELM_GENLIST_ITEM_NONE, _create_rule_item_select_cb, &rule_create_view_data); + + evas_object_smart_callback_add(genlist, "realized", _gl_create_rule_item_realized_cb, &rule_create_view_data); + elm_genlist_item_class_free(itc); + evas_object_show(genlist); + + /* Change "Privacy Setting" to proper DID : use dgettext() */ + Elm_Object_Item *nf_it = elm_naviframe_item_push(ad->nf, dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_CREATE), common_back_btn_add(ad), NULL, genlist, NULL); + + elm_object_item_domain_text_translatable_set(nf_it, PACKAGE, EINA_TRUE); +} diff --git a/ui/src/privacy_dlp_rule_delete_view.c b/ui/src/privacy_dlp_rule_delete_view.c new file mode 100644 index 0000000..c52ba7a --- /dev/null +++ b/ui/src/privacy_dlp_rule_delete_view.c @@ -0,0 +1,332 @@ +/* + * Copyright (c) 2017 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* + * @file privacy_dlp_rule_delete_view.c + * @version 1.0 + * @brief + */ + +#include "common_popup.h" +#include "common_utils.h" +#include "privacy_view.h" +#include <privacy_guard_client.h> +#include <app_manager.h> + +typedef struct { + const get_custom_rule_s *rule; + bool is_checked; + Evas_Object *check; +} rule_delete_item_s; + +typedef struct { + struct app_data_s *ad; + GList *rule_item_list; + void *rule_list_data; + Evas_Object *genlist; + Evas_Object *delete_button; + Evas_Object *confirm_popup; +} rule_delete_view_data_s; + +#define SELECT_ALL_RULES_ITEM -1 + +static get_custom_rule_s rule_delete_select_all_rule = { .id = SELECT_ALL_RULES_ITEM }; + +size_t get_number_of_selected_rules(Evas_Object *genlist); +static void set_rules_by_pattern_and_action(GList *rule_item_list, const rule_delete_item_s *current_rule_item); + +static char *_gl_rule_delete_text_get_cb(void *data, Evas_Object *obj, const char *part) +{ + rule_delete_item_s *rule_item = (rule_delete_item_s *)data; + if (strcmp(part, "elm.text") == 0) + return strdup(rule_item->rule->name); + + if (strcmp(part, "elm.text.multiline") == 0) { + // Note that the string allocated by stdup below is freed internally + // by Enlightment, when the genlist item is undisplayed + if (rule_item != NULL) + return (SELECT_ALL_RULES_ITEM != rule_item->rule->id) ? strdup(rule_item->rule->description) : strdup(""); + } + + return NULL; +} + +static Evas_Object *_gl_rule_delete_content_get_cb(void *data, Evas_Object *obj, const char *part) +{ + rule_delete_item_s *rule_item = data; + + if (strcmp(part, "elm.swallow.end") == 0) { + Evas_Object *check = common_create_check(obj); + elm_check_state_set(check, rule_item->is_checked ? EINA_TRUE : EINA_FALSE); + rule_item->check = check; + return check; + } + + return NULL; +} + +static void _rule_delete_menu_item_selected_cb(void *data, Evas_Object *obj, void *event_info) +{ + /* Get selected item */ + Elm_Object_Item *ei = event_info; + rule_delete_item_s *rule_item = elm_object_item_data_get(ei); + + /* Unhighlight selected item */ + elm_genlist_item_selected_set(ei, EINA_FALSE); + + rule_item->is_checked = !rule_item->is_checked; + + rule_delete_view_data_s *rdvd = data; + if (SELECT_ALL_RULES_ITEM != rule_item->rule->id) { + /* check rules with the same pattern and action of the current rule */ + set_rules_by_pattern_and_action(rdvd->rule_item_list, rule_item); + + rule_delete_item_s *select_all_item = rdvd->rule_item_list->data; + if (!rule_item->is_checked) { + /* set "Select all" check off */ + select_all_item->is_checked = false; + } else { + bool all_selected = true; + GList *l; + // check if all items are selected. Note that the 1st element of app_list + // is the select button, so we start looping from the 2nd element + for (l = g_list_nth(rdvd->rule_item_list, 1); l != NULL; l = l->next) + if (!((rule_delete_item_s *)l->data)->is_checked) { + all_selected = false; + break; + } + + /* if all items are selected, set select all check on */ + if (all_selected) + select_all_item->is_checked = true; + } + } else { + /* Select or deselect items */ + GList *l; + for (l = g_list_nth(rdvd->rule_item_list, 1); l != NULL; l = l->next) + ((rule_delete_item_s *)l->data)->is_checked = rule_item->is_checked; + } + + elm_object_disabled_set(rdvd->delete_button, get_number_of_selected_rules(rdvd->genlist) == 0 ? EINA_TRUE : EINA_FALSE); + elm_genlist_realized_items_update(rdvd->genlist); +} + +static void _rule_delete_popup_ok_cb(void *data, Evas_Object *obj, void *event_info) +{ + const rule_delete_view_data_s *rdvd = data; + destroy_popup(rdvd->confirm_popup); + + bool rule_deleted = false; + GList *l; // note that the 0th element is "select all" + for (l = g_list_nth(rdvd->rule_item_list, 1); l != NULL; l = l->next) { + const rule_delete_item_s *rule_item = l->data; + if (!rule_item->is_checked) + continue; + + const int res = privacy_guard_client_delete_dlp_custom_rule(rule_item->rule->id); + + if (PRIV_GUARD_ERROR_SUCCESS == res) { + LOGD("Rule %d deleted", rule_item->rule->id); + rule_deleted = true; + } else + LOGE("Failed to delete rule (id=%d). Error=%d", rule_item->rule->id, res); + } + + if (NULL != rdvd->rule_list_data) + update_privacy_dlp_rules_list_view(rdvd->rule_list_data); + + elm_naviframe_item_pop(rdvd->ad->nf); + + if (rule_deleted) + show_toast_notification(dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_DELETE_RULE_MESSAGE), rdvd->ad->win); +} + +static void _free_rule_delete_item_cb(void *rule_delete_item) +{ + free((rule_delete_item_s *)rule_delete_item); +} + +static Eina_Bool _rule_delete_nf_pop_cb(void *data, Evas_Object* obj) +{ + rule_delete_view_data_s *rdvd = data; + g_list_free_full(rdvd->rule_item_list, _free_rule_delete_item_cb); + rdvd->rule_item_list = NULL; + return EINA_TRUE; +} + +static void _rule_delete_popup_cancel_cb(void *data, Evas_Object *obj, void *event_info) +{ + rule_delete_view_data_s *rdvd = data; + destroy_popup(rdvd->confirm_popup); +} + +static void _rule_delete_cancel_cb(void *data, Evas_Object *obj, void *event_info) +{ + rule_delete_view_data_s *rdvd = data; + elm_naviframe_item_pop(rdvd->ad->nf); +} + +static void _rule_delete_done_cb(void *data, Evas_Object *obj, void *event_info) +{ + rule_delete_view_data_s *rdvd = data; + rdvd->confirm_popup = create_two_buttons_popup( + rdvd->genlist, + dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE), + dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_DELETE_RULE_MESSAGE_MESSAGE), + dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_OK), + _rule_delete_popup_ok_cb, + dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_CANCEL), + _rule_delete_popup_cancel_cb, + NULL, + rdvd); +} + +static void set_rules_by_pattern_and_action(GList *rule_item_list, const rule_delete_item_s *current_rule_item) +{ + const GList *l = g_list_find(rule_item_list, current_rule_item); + if (NULL == l || NULL == l->next) + return; + + const int pattern_id = current_rule_item->rule->pattern_id; + const PgDlpAction action = current_rule_item->rule->action; + l = l->next; + const get_custom_rule_s *rule = ((rule_delete_item_s *)(l->data))->rule; + + while (NULL != l && pattern_id == rule->pattern_id && action == rule->action) { + ((rule_delete_item_s *)(l->data))->is_checked = current_rule_item->is_checked; + l = l->next; + if (NULL != l) + rule = ((const rule_delete_item_s *)(l->data))->rule; + } +} + +size_t get_number_of_selected_rules(Evas_Object *genlist) +{ + const size_t total_rules = elm_genlist_items_count(genlist); + size_t rule_count = 0; + size_t i; + // Count checked log ids + for (i = 1; i <= total_rules; ++i) { // note that 0th item is "Select all", so we skip it + Elm_Object_Item *item = elm_genlist_nth_item_get(genlist, i); + if (NULL != item) { + rule_delete_item_s *rule_item = elm_object_item_data_get(item); + if (NULL != rule_item && rule_item->is_checked) + ++rule_count; + } + } + + return rule_count; +} + +void populate_rule_item_list(rule_delete_view_data_s *data, const GList *rule_list) +{ + const GList* l; + for (l = rule_list; l != NULL; l = l->next) { + rule_delete_item_s *item = malloc(sizeof(rule_delete_item_s)); + + if (item != NULL) { + item->rule = l->data; + item->is_checked = false; + item->check = NULL; + + data->rule_item_list = g_list_append(data->rule_item_list, item); + } + } +} + +void create_select_all_rules_item(rule_delete_view_data_s *data) +{ + strncpy(rule_delete_select_all_rule.name, dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_SELECT_ALL), LEN_NAME); + rule_delete_select_all_rule.name[LEN_NAME - 1] = '\0'; + + // Note that the variable item below is freed by _free_rule_delete_item_cb(), + // called in _rule_delete_nf_pop_cb() + rule_delete_item_s *item = malloc(sizeof(rule_delete_item_s)); + if (item != NULL) { + item->rule = &rule_delete_select_all_rule; + item->is_checked = false; + item->check = NULL; + + data->rule_item_list = g_list_prepend(data->rule_item_list, item); + } +} + +void create_privacy_dlp_rule_delete_view(struct app_data_s *ad, const GList *rule_list, void *rule_list_data) +{ + if (NULL == ad || NULL == rule_list || NULL == rule_list_data) { + LOGE("Invalid parameter"); + return; + } + + static rule_delete_view_data_s data; + data.ad = ad; + populate_rule_item_list(&data, rule_list); + data.rule_list_data = rule_list_data; + + create_select_all_rules_item(&data); + + data.genlist = common_genlist_add(ad->nf); + evas_object_size_hint_weight_set(data.genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(data.genlist, EVAS_HINT_FILL, EVAS_HINT_FILL); + + Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new(); + itc->item_style = "multiline"; + itc->func.text_get = _gl_rule_delete_text_get_cb; + itc->func.content_get = _gl_rule_delete_content_get_cb; + itc->func.del = NULL; + Elm_Object_Item *it = NULL; + GList* l = data.rule_item_list; + + while (l != NULL) { + // append item to the genlist + it = elm_genlist_item_append(data.genlist, itc, l->data, NULL, ELM_GENLIST_ITEM_NONE, _rule_delete_menu_item_selected_cb, &data); + log_if(it == NULL, 1, "Error in elm_genlist_item_append"); + + const get_custom_rule_s *rule = ((rule_delete_item_s *)(l->data))->rule; + if (SELECT_ALL_RULES_ITEM == rule->id) { + l = l->next; + continue; + } + + // Skip rules that have the same pattern and action as the current rule + const int pattern_id = rule->pattern_id; + const PgDlpAction action = rule->action; + rule = ((rule_delete_item_s *)(l->data))->rule; + while (l != NULL && pattern_id == rule->pattern_id && action == rule->action) { + l = l->next; + if (l != NULL) + rule = ((rule_delete_item_s *)(l->data))->rule; + } + } + + evas_object_show(data.genlist); + + /* Add genlist to naviframe */ + Elm_Object_Item *nf_it = elm_naviframe_item_push( + ad->nf, + dgettext("privacy-setting", PRIVACY_MENU_DLP_LOG_DELETE_LOGS_TITLE), + NULL, + NULL, + data.genlist, + NULL); + + /* set callback to genlist item pop event */ + elm_naviframe_item_pop_cb_set(nf_it, _rule_delete_nf_pop_cb, &data); + /* add cancel button to naviframe title bar */ + common_naviframe_btn_add(ad->nf, nf_it, true, dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_CANCEL), _rule_delete_cancel_cb, &data); + /* add delete button to naviframe title bar */ + data.delete_button = common_naviframe_btn_add(ad->nf, nf_it, false, dgettext("privacy-setting", PRIVACY_MENU_DLP_LOG_DELETE_BTN), _rule_delete_done_cb, &data); + elm_object_disabled_set(data.delete_button, get_number_of_selected_rules(data.genlist) == 0 ? EINA_TRUE : EINA_FALSE); +} diff --git a/ui/src/privacy_dlp_rule_detailed_view.c b/ui/src/privacy_dlp_rule_detailed_view.c new file mode 100644 index 0000000..0d3535d --- /dev/null +++ b/ui/src/privacy_dlp_rule_detailed_view.c @@ -0,0 +1,320 @@ +/** + * Copyright (c) 2017 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* + * @file privacy_dlp_rule_detailed_view.c + * @version 1.0 + * @brief + */ + +#include "common_ctxpopup.h" +#include "common_popup.h" +#include "common_utils.h" +#include "privacy_view.h" +#include <app_manager.h> +#include <efl_extension.h> + +typedef struct { + struct app_data_s *ad; + get_custom_rule_s current_rule; + void *rule_list_data; + Elm_Object_Item *pop_to_nf_it; + Evas_Object *rule_details_genlist; + Evas_Object *ctxpopup; + Evas_Object *delete_popup; + char pattern_name[LEN_PATTERN]; +} rule_detailed_view_data_s; + +typedef struct { + int pattern_id; + PgDlpAction action; + GList *rule_id_list; +} patttern_action_rules_s; + +static rule_detailed_view_data_s rule_detailed_view_data = { + .ad = NULL, + .rule_details_genlist = NULL }; + +char* get_rule_action(int action); +static bool delete_rules_by_pattern_and_action(const get_custom_rule_s *current_rule); + +static bool _pg_dlp_rule_pattern_name_cb(int id, const char *pattern, const char *name, const char *description, PgDlpPatternType type, const char *category, bool undeletable, int leaks_count, void *user_data) +{ + rule_detailed_view_data_s *rdvd = user_data; + if (id == rdvd->current_rule.pattern_id) { + strncpy(rdvd->pattern_name, name, LEN_PATTERN); + rdvd->pattern_name[LEN_PATTERN - 1] = 0; + } + return true; +} + +static char* _gl_rule_header_text_get_cb(void *data, Evas_Object *obj, const char *part) +{ + get_custom_rule_s *rule = data; + + if (strcmp(part, "elm.text") == 0) + return strdup(rule->name); + + if (strcmp(part, "elm.text.multiline") == 0) { + if (rule == NULL) + return strdup(""); + + return strdup(rule->description); + } + + return NULL; +} + +static char* _gl_group_rule_details_text_get_cb(void *data, Evas_Object *obj, const char *part) +{ + if (!strcmp(part, "elm.text")) + return strdup(dgettext("privacy-setting", PRIVACY_MENU_DLP_DETAILS)); + + return NULL; +} + +static char* _gl_rule_pattern_text_get_cb(void *data, Evas_Object *obj, const char *part) +{ + if (strcmp(part, "elm.text") == 0) + return strdup(dgettext("privacy-setting", PRIVACY_MENU_DLP_RULES_N_PATTERNS_TITLE_PATTERNS)); + + if (strcmp(part, "elm.text.multiline") == 0) { + if (data == NULL) + return strdup(""); + + return strdup(((rule_detailed_view_data_s *)data)->pattern_name); + } + + return NULL; +} + +void _rule_detailed_view_edit_rule_cb(void *data, Evas_Object *obj, void *event_info) +{ + rule_detailed_view_data_s *rdvd = data; + + delete_ctxpopup(rdvd->ctxpopup); + create_privacy_dlp_rule_edit_view(rdvd->ad, rdvd->pop_to_nf_it, NULL, &rdvd->current_rule, NULL, rdvd->rule_list_data, rdvd); +} + +void _rule_detailed_view_delete_ok_cb(void *data, Evas_Object *obj, void *event_info) +{ + rule_detailed_view_data_s *rdvd = data; + + if (delete_rules_by_pattern_and_action(&(rdvd->current_rule))) + show_toast_notification(dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_DELETE_RULE_MESSAGE), rdvd->ad->win); + + destroy_popup(rdvd->delete_popup); + if (NULL != rdvd->rule_list_data) + update_privacy_dlp_rules_list_view(rdvd->rule_list_data); + elm_naviframe_item_pop(rdvd->ad->nf); +} + +void _rule_detailed_view_delete_cancel_cb(void *data, Evas_Object *obj, void *event_info) +{ + rule_detailed_view_data_s *rdvd = data; + destroy_popup(rdvd->delete_popup); +} + +void _rule_detailed_view_delete_rule_cb(void *data, Evas_Object *obj, void *event_info) +{ + rule_detailed_view_data_s *rdvd = data; + + delete_ctxpopup(rdvd->ctxpopup); + + rdvd->delete_popup = create_two_buttons_popup( + rdvd->ad->nf, + dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE), + dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_DELETE_RULE_MESSAGE_MESSAGE), + dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_OK), + _rule_detailed_view_delete_ok_cb, + dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_CANCEL), + _rule_detailed_view_delete_cancel_cb, + NULL, + rdvd); +} + +Eina_Bool _rule_detailed_view_nf_pop_cb(void *data, Evas_Object* obj) +{ + rule_detailed_view_data_s *rdvd = data; + if (NULL != rdvd->rule_list_data) + update_privacy_dlp_rules_list_view(rdvd->rule_list_data); + return TRUE; +} + +void _rule_detailed_view_menu_button_cb(void *data, Evas_Object *obj, void *event_info) +{ + rule_detailed_view_data_s *rdvd = data; + rdvd->ctxpopup = create_ctxpop(rdvd->ad); + + elm_ctxpopup_item_append(rdvd->ctxpopup, dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_EDIT), NULL, _rule_detailed_view_edit_rule_cb, data); + elm_ctxpopup_item_append(rdvd->ctxpopup, dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_DELETE), NULL, _rule_detailed_view_delete_rule_cb, data); +} + +static bool _get_rules_by_pattern_action_cb(int id, PgDlpAction action, int pattern_id, const char *name, + const char *description, const char *application_id, int leaks_count, void *user_data) +{ + patttern_action_rules_s *pattern_action_rules = user_data; + if (pattern_id == pattern_action_rules->pattern_id && action == pattern_action_rules->action) { + pattern_action_rules->rule_id_list = g_list_prepend(pattern_action_rules->rule_id_list, GINT_TO_POINTER(id)); + } + return true; +} + +static bool delete_rules_by_pattern_and_action(const get_custom_rule_s *current_rule) +{ + patttern_action_rules_s pattern_action_rules; + pattern_action_rules.pattern_id = current_rule->pattern_id; + pattern_action_rules.action = current_rule->action; + pattern_action_rules.rule_id_list = NULL; + + const int res = privacy_guard_client_foreach_dlp_rules(getuid(), PRIV_GUARD_DLP_PROFILE_CUSTOM, + _get_rules_by_pattern_action_cb, &pattern_action_rules); + if (PRIV_GUARD_ERROR_SUCCESS != res) { + LOGE("privacy_guard_client_foreach_dlp_rules() failed. Error=%d", res); + return false; + } + + bool deleted = false; + const GList *l; + for (l = pattern_action_rules.rule_id_list; l != NULL; l = l->next) { + const int rule_id = GPOINTER_TO_INT(l->data); + const int res = privacy_guard_client_delete_dlp_custom_rule(rule_id); + if (PRIV_GUARD_ERROR_SUCCESS == res) { + LOGD("Rule %d deleted", rule_id); + deleted = true; + } else + LOGE("Failed to delete rule %d. Error=%d", rule_id, res); + } + + return deleted; +} + +void set_current_pattern_name(rule_detailed_view_data_s *data) +{ + const int res = privacy_guard_client_foreach_dlp_patterns(_pg_dlp_rule_pattern_name_cb, data); + if (PRIV_GUARD_ERROR_SUCCESS != res) { + LOGE("privacy_guard_client_foreach_dlp_patterns() failed. Error=%d", res); + strncpy(data->pattern_name, "(error)", LEN_PATTERN); + } else if ('\0' == data->pattern_name[0]) { + LOGE("Pattern %d not found in database", data->current_rule.pattern_id); + strncpy(data->pattern_name, "(null)", LEN_PATTERN); + } +} + +char* get_rule_action(int action) +{ + switch (action) { + case PRIV_GUARD_DLP_ACTION_ALLOW: return "Allow"; + case PRIV_GUARD_DLP_ACTION_DENY: return "Deny"; + case PRIV_GUARD_DLP_ACTION_SANITIZE: return "Sanitize"; + default: return ""; + } +} + +void add_rule_item_to_genlist(Evas_Object *genlist, void* data, const char* item_style, void* func_text_get) +{ + Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new(); + itc->item_style = item_style; + itc->func.text_get = func_text_get; + Elm_Object_Item *it = elm_genlist_item_append(genlist, itc, data, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL); + log_if(it == NULL, 1, "Error in elm_genlist_item_append"); + elm_genlist_item_class_free(itc); +} + +void set_current_rule(rule_detailed_view_data_s *data, const get_custom_rule_s *rule) +{ + data->current_rule.id = rule->id; + data->current_rule.action = rule->action; + data->current_rule.pattern_id = rule->pattern_id; + strncpy(data->current_rule.name, rule->name, LEN_NAME); + data->current_rule.name[LEN_NAME - 1] = '\0'; + strncpy(data->current_rule.description, rule->description, LEN_DESCRIPTION); + data->current_rule.description[LEN_DESCRIPTION - 1] = '\0'; + data->current_rule.leaks_count = rule->leaks_count; + strncpy(data->current_rule.application_id, rule->application_id, LEN_APPLICATION_ID); + data->current_rule.application_id[LEN_APPLICATION_ID - 1] = '\0'; +} + +void create_rule_detailed_view_components(rule_detailed_view_data_s *data) +{ + Evas_Object *rule_details_genlist = common_genlist_add(data->ad->nf); + evas_object_size_hint_weight_set(rule_details_genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(rule_details_genlist, EVAS_HINT_FILL, EVAS_HINT_FILL); + elm_genlist_mode_set(rule_details_genlist, ELM_LIST_COMPRESS); + elm_genlist_select_mode_set(rule_details_genlist, ELM_OBJECT_SELECT_MODE_NONE); + elm_object_style_set(rule_details_genlist, "default"); + rule_detailed_view_data.rule_details_genlist = rule_details_genlist; + /* add header (rule name and description) to genlist */ + add_rule_item_to_genlist(rule_details_genlist, &(rule_detailed_view_data.current_rule), "multiline", _gl_rule_header_text_get_cb); + /* add details separator to genlist */ + add_rule_item_to_genlist(rule_details_genlist, NULL, "group_index", _gl_group_rule_details_text_get_cb); + /* add rule pattern to genlist */ + add_rule_item_to_genlist(rule_details_genlist, &rule_detailed_view_data, "multiline", _gl_rule_pattern_text_get_cb); + + evas_object_show(rule_details_genlist); +} + +void update_privacy_dlp_rule_detailed_view(void *rule_detailed_view_data, const int pattern_id, const char *rule_name, const char *rule_description) +{ + rule_detailed_view_data_s *data = rule_detailed_view_data; + + // update current rule and pattern + data->current_rule.pattern_id = pattern_id; + strncpy(data->current_rule.name, rule_name, LEN_NAME); + data->current_rule.name[LEN_NAME - 1] = '\0'; + strncpy(data->current_rule.description, rule_description, LEN_DESCRIPTION); + data->current_rule.description[LEN_DESCRIPTION - 1] = '\0'; + set_current_pattern_name(data); + + // update view components + elm_genlist_realized_items_update(data->rule_details_genlist); +} + +void create_privacy_dlp_rule_detailed_view(struct app_data_s *ad, Elm_Object_Item *pop_to_nf_it, get_custom_rule_s *current_rule, const dlp_profile_s *config, void *rule_list_data) +{ + if (NULL == ad || NULL == current_rule || NULL == config) { + LOGE("Invalid parameter"); + return; + } + + rule_detailed_view_data.ad = ad; + rule_detailed_view_data.rule_list_data = rule_list_data; + rule_detailed_view_data.ctxpopup = NULL; + rule_detailed_view_data.delete_popup = NULL; + rule_detailed_view_data.pop_to_nf_it = pop_to_nf_it; + + set_current_rule(&rule_detailed_view_data, current_rule); + set_current_pattern_name(&rule_detailed_view_data); + + create_rule_detailed_view_components(&rule_detailed_view_data); + + Elm_Object_Item *nf_it = elm_naviframe_item_push( + rule_detailed_view_data.ad->nf, + dgettext("privacy-setting", PRIVACY_MENU_DLP_RULE_DETAIL_TITLE), + common_back_btn_add(rule_detailed_view_data.ad), + NULL, + rule_detailed_view_data.rule_details_genlist, + NULL); + + if (PRIV_GUARD_DLP_PROFILE_CUSTOM == config->profile) + /* Register the Menu key event callback */ + eext_object_event_callback_add(rule_detailed_view_data.rule_details_genlist, EEXT_CALLBACK_MORE, + _rule_detailed_view_menu_button_cb, &rule_detailed_view_data); + + /* set callback to genlist item pop event */ + elm_naviframe_item_pop_cb_set(nf_it, _rule_detailed_view_nf_pop_cb, &rule_detailed_view_data); + + elm_object_item_domain_text_translatable_set(nf_it, PACKAGE, EINA_TRUE); +} diff --git a/ui/src/privacy_dlp_rule_edit_view.c b/ui/src/privacy_dlp_rule_edit_view.c new file mode 100644 index 0000000..39dbdfe --- /dev/null +++ b/ui/src/privacy_dlp_rule_edit_view.c @@ -0,0 +1,450 @@ +/* + * Copyright (c) 2017 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* + * @file privacy_dlp_rule_edit_view.c + * @version 1.0 + * @brief + */ + +#include "common_edit_field.h" +#include "common_utils.h" +#include "privacy_view.h" +#include <privacy_guard_client.h> + +typedef struct { + struct app_data_s *ad; + GList *pattern_list; + GList *pattern_ids_in_use_list; + dlp_profile_s *config; + const get_custom_rule_s *current_rule; + get_custom_rule_s edited_rule; + const GList *app_list; + void *rule_list_data; + void *rule_detailed_view_data; + Elm_Object_Item *pop_to_nf_it; + dlp_edit_field *name_edit_field; + dlp_edit_field *description_edit_field; + Evas_Object *pattern_hoversel; + Evas_Object *done_button; + Evas_Object *next_button; +} rule_edit_data_s; + +static rule_edit_data_s rule_edit_data = { + .ad = NULL, + .pattern_list = NULL, + .pattern_ids_in_use_list = NULL, + .config = NULL, + .current_rule = NULL, + .app_list = NULL, + .rule_list_data = NULL, + .pop_to_nf_it = NULL, + .name_edit_field = NULL, + .description_edit_field = NULL, + .pattern_hoversel = NULL, + .done_button = NULL +}; +static get_pattern_s *current_pattern = NULL; + +#define CUSTOM_PATTERN_ITEM_ID -1 + +get_pattern_s *create_pattern( + int id, + const char *pattern, + const char *name, + const char *description, + PgDlpPatternType type, + const char *category, + bool undeletable, + int leaks_count); +static void set_state_of_done_button(rule_edit_data_s *red); + +static bool _rule_edit_get_patterns_cb( + int id, + const char *pattern, + const char *name, + const char *description, + PgDlpPatternType type, + const char *category, + bool undeletable, + int leaks_count, + void *user_data) +{ + get_pattern_s *dlp_pattern = create_pattern(id, pattern, name, description, type, category, undeletable, leaks_count); + rule_edit_data_s *red = user_data; + red->pattern_list = g_list_append(red->pattern_list, dlp_pattern); + + return true; +} + +static void _rule_edit_pattern_item_cb(void *data, Evas_Object *obj, void *event_info) +{ + get_pattern_s *dlp_pattern = data; + if (CUSTOM_PATTERN_ITEM_ID == dlp_pattern->id) { + create_privacy_dlp_pattern_create_view(rule_edit_data.ad, &rule_edit_data, NULL); + } else { + current_pattern = dlp_pattern; + elm_object_text_set(obj, current_pattern->name); + } +} + +static void _rule_edit_cancel_cb(void *data, Evas_Object *obj, void *event_info) +{ + rule_edit_data_s *red = data; + elm_naviframe_item_pop(red->ad->nf); +} + +static Eina_Bool _rule_edit_nf_pop_cb(void *data, Evas_Object* obj) +{ + rule_edit_data_s *red = data; + g_list_free_full(red->pattern_list, free_dlp_pattern); + red->pattern_list = NULL; + free_edit_field(red->name_edit_field); + free_edit_field(red->description_edit_field); + return EINA_TRUE; +} + +static void _rule_edit_done_cb(void *data, Evas_Object *obj, void *event_info) +{ + rule_edit_data_s *red = data; + + char name[LEN_NAME]; + strncpy(name, get_text_from_edit_field(red->name_edit_field), LEN_NAME); + name[LEN_NAME - 1] = '\0'; + + char description[LEN_DESCRIPTION]; + strncpy(description, get_text_from_edit_field(red->description_edit_field), LEN_DESCRIPTION); + description[LEN_DESCRIPTION - 1] = '\0'; + + const int pattern_id = current_pattern->id; + + if (NULL != red->app_list) { + bool rule_created = false; + const GList *l; + + char rule_name[LEN_NAME]; + for (l = red->app_list; l != NULL; l = l->next) { + const application_item_s *app_item = l->data; + if (!app_item->is_checked) + continue; + + const char *app_id = (SELECT_ALL_APPS_ITEM_ID == app_item->id) ? "" : app_item->id; + + const int res = privacy_guard_client_add_dlp_custom_rule(getuid(), PRIV_GUARD_DLP_ACTION_ALLOW, pattern_id, name, description, app_id); + if (PRIV_GUARD_ERROR_SUCCESS == res) { + LOGI("created new custom rule: name=%s, description=%s, pattern_id=%d, app_id=%s", name, description, pattern_id, app_id); + rule_created = true; + } else { + LOGE("privacy_guard_client_add_dlp_custom_rule() failed. Error=%d", res); + } + + if (SELECT_ALL_APPS_ITEM_ID == app_item->id) + break; + } + + if (rule_created) { + if (NULL == red->config) { + show_toast_notification(dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE), red->ad->win); + } else { + // Update profile + red->config->profile = PRIV_GUARD_DLP_PROFILE_CUSTOM; + const int set_prof_res = privacy_guard_client_set_dlp_profile(getuid(), red->config); + if (PRIV_GUARD_ERROR_SUCCESS == set_prof_res) { + // Refresh main menu to update new profile value + elm_genlist_realized_items_update(elm_object_item_part_content_get(red->pop_to_nf_it, "default")); + show_toast_notification(dgettext("privacy-setting", PRIVACY_MENU_DLP_CUSTOM_PROTECTION_MODE_APPLIED), red->ad->win); + } else { + LOGE("privacy_guard_client_set_dlp_profile() failed. Error=%d", set_prof_res); + } + } + } + } else if (NULL != red->current_rule) { + const int res = privacy_guard_client_update_dlp_custom_rule( + red->current_rule->id, + red->current_rule->action, + pattern_id, + name, + description, + red->current_rule->application_id); + if (PRIV_GUARD_ERROR_SUCCESS != res) + LOGE("privacy_guard_client_update_dlp_custom_rule() failed. Error=%d", res); + } + + if (NULL != red->pop_to_nf_it) + elm_naviframe_item_pop_to(red->pop_to_nf_it); + else + elm_naviframe_item_pop(red->ad->nf); + + if (NULL != red->rule_list_data) + update_privacy_dlp_rules_list_view(red->rule_list_data); + else if (NULL != red->rule_detailed_view_data) + update_privacy_dlp_rule_detailed_view(red->rule_detailed_view_data, pattern_id, name, description); + else + create_privacy_dlp_reports_rules_and_patterns_view(red->ad, red->config); +} + +static void _rule_edit_next_cb(void *data, Evas_Object *obj, void *event_info) +{ + rule_edit_data_s *red = data; + + red->edited_rule.id = red->current_rule->id; + red->edited_rule.pattern_id = current_pattern->id; + + strncpy(red->edited_rule.pattern, elm_object_text_get(red->pattern_hoversel), LEN_PATTERN); + red->edited_rule.pattern[LEN_PATTERN - 1] = '\0'; + + strncpy(red->edited_rule.name, get_text_from_edit_field(red->name_edit_field), LEN_NAME); + red->edited_rule.name[LEN_NAME - 1] = '\0'; + + strncpy(red->edited_rule.description, get_text_from_edit_field(red->description_edit_field), LEN_DESCRIPTION); + red->edited_rule.description[LEN_DESCRIPTION - 1] = '\0'; + + strncpy(red->edited_rule.application_id, red->current_rule->application_id, LEN_APPLICATION_ID); + red->edited_rule.application_id[LEN_APPLICATION_ID - 1] = '\0'; + + red->edited_rule.leaks_count = red->current_rule->leaks_count; + + create_privacy_dlp_choose_apps_view(red->ad, red->pop_to_nf_it, NULL, NULL, red->rule_list_data, &red->edited_rule, red->current_rule); +} + +static void _rule_edit_field_changed_cb(void *data, Evas_Object *obj, void *event_info) +{ + rule_edit_data_s *red = data; + set_state_of_done_button(red); +} + +get_pattern_s *create_pattern( + int id, + const char *pattern, + const char *name, + const char *description, + PgDlpPatternType type, + const char *category, + bool undeletable, + int leaks_count) +{ + get_pattern_s *dlp_pattern = malloc(sizeof(get_pattern_s)); + + if (dlp_pattern != NULL) { + dlp_pattern->id = id; + + strncpy(dlp_pattern->pattern, pattern, LEN_PATTERN); + dlp_pattern->pattern[LEN_PATTERN - 1] = '\0'; + + strncpy(dlp_pattern->name, name, LEN_NAME); + dlp_pattern->name[LEN_NAME - 1] = '\0'; + + strncpy(dlp_pattern->description, description, LEN_DESCRIPTION); + dlp_pattern->description[LEN_DESCRIPTION - 1] = '\0'; + + dlp_pattern->type = type; + + strncpy(dlp_pattern->category.text, category, LEN_CATEGORY); + dlp_pattern->category.text[LEN_CATEGORY - 1] = '\0'; + + dlp_pattern->undeletable = undeletable; + + dlp_pattern->leaks_count = leaks_count; + } + + return dlp_pattern; +} + +static void set_state_of_done_button(rule_edit_data_s *red) +{ + const Eina_Bool disable = !is_edit_field_empty(red->name_edit_field) + && !is_edit_field_empty(red->description_edit_field) + && NULL != current_pattern + ? EINA_FALSE : EINA_TRUE; + Evas_Object *button = (NULL != red->done_button) ? red->done_button : red->next_button; + elm_object_disabled_set(button, disable); +} + +Evas_Object *add_pattern_hoversel_to_grid(Evas_Object *rule_grid, rule_edit_data_s *data, int col, int row, int col_span, int row_span) +{ + Evas_Object *hoversel = elm_hoversel_add(rule_grid); + elm_hoversel_horizontal_set(hoversel, EINA_FALSE); + elm_hoversel_hover_parent_set(hoversel, rule_grid); + + GList* l; + /* Append patterns to hoversel */ + for (l = data->pattern_list; l != NULL; l = l->next) { + get_pattern_s *dlp_pattern = l->data; + Elm_Object_Item *item = elm_hoversel_item_add(hoversel, dlp_pattern->name, NULL, ELM_ICON_NONE, _rule_edit_pattern_item_cb, dlp_pattern); + if (NULL != data->current_rule && data->current_rule->pattern_id == dlp_pattern->id) { + current_pattern = dlp_pattern; + elm_object_text_set(hoversel, current_pattern->name); + } else { + /* check if pattern is already in use */ + if (NULL == g_list_find(data->pattern_ids_in_use_list, GINT_TO_POINTER(dlp_pattern->id))) { + /* if pattern is available, set the first available pattern to hoversel */ + const char *hoversel_text = elm_object_text_get(hoversel); + if (CUSTOM_PATTERN_ITEM_ID != dlp_pattern->id && NULL == data->current_rule && '\0' == hoversel_text[0]) { + current_pattern = dlp_pattern; + elm_object_text_set(hoversel, current_pattern->name); + } + } else { + /* if pattern is already in use, disable the item */ + elm_object_item_disabled_set(item, EINA_TRUE); + } + } + } + + elm_grid_pack(rule_grid, hoversel, col, row, col_span, row_span); + evas_object_show(hoversel); + + return hoversel; +} + +void update_privacy_dlp_rule_edit_view(void *rule_edit_data, const char *pattern, const PgDlpPatternType pattern_type, const bool undeletable) +{ + if (NULL == rule_edit_data || NULL == pattern) { + LOGD("Invalid parameter"); + return; + } + + rule_edit_data_s *data = rule_edit_data; + if (!elm_hoversel_expanded_get(data->pattern_hoversel)) + elm_hoversel_hover_end(data->pattern_hoversel); + + elm_hoversel_clear(data->pattern_hoversel); + + g_list_free_full(data->pattern_list, free_dlp_pattern); + data->pattern_list = NULL; + + /* Get dlp custom patterns from privacy guard */ + const int res = privacy_guard_client_foreach_dlp_patterns(_rule_edit_get_patterns_cb, data); + log_if(res != PRIV_GUARD_ERROR_SUCCESS, 1, "privacy_guard_client_foreach_dlp_custom_patterns() failed. [%d]", res); + + get_pattern_s *custom_pattern = create_pattern(CUSTOM_PATTERN_ITEM_ID, "", dgettext("privacy-setting", PRIVACY_MENU_DLP_PROFILE_CUSTOM), "", PRIV_GUARD_DLP_PATTERN_STRING, "", true, 0); + data->pattern_list = g_list_append(data->pattern_list, custom_pattern); + + current_pattern = NULL; + GList* l; + /* Append patterns to hoversel */ + for (l = data->pattern_list; l != NULL; l = l->next) { + get_pattern_s *dlp_pattern = l->data; + if (CUSTOM_PATTERN_ITEM_ID != dlp_pattern->id && strcmp(pattern, dlp_pattern->pattern) == 0 && pattern_type == dlp_pattern->type && undeletable == dlp_pattern->undeletable) + current_pattern = dlp_pattern; + + Elm_Object_Item *item = elm_hoversel_item_add(data->pattern_hoversel, dlp_pattern->name, NULL, ELM_ICON_NONE, _rule_edit_pattern_item_cb, dlp_pattern); + } + if (NULL != current_pattern) + elm_object_text_set(data->pattern_hoversel, current_pattern->name); + + set_state_of_done_button(data); +} + +/** + * @brief Displays the Rule Create/Edit view + * @param[in] ad the appliation data + * @param[in] pop_to_nf_it the view to pop to after user creates a new rule + * @param[in] config the user's configuration + * @param[in] current_rule rule to be edited. If NULL, a new rule will be created + * @param[in] app_list list of apps to which the new rule will be applied + * @param[in] rule_list_data pointer to a dlp_rule_list_data_s. May be NULL + * @param[in] rule_detailed_view_data pointer to a rule_detailed_view_data_s. May be NULL +*/ +void create_privacy_dlp_rule_edit_view(struct app_data_s *ad, Elm_Object_Item *pop_to_nf_it, dlp_profile_s *config, const get_custom_rule_s *current_rule, const GList *app_list, void *rule_list_data, void *rule_detailed_view_data) +{ + if (NULL == ad) { + LOGE("Invalid parameter"); + return; + } + + rule_edit_data.ad = ad; + g_list_free_full(rule_edit_data.pattern_list, free_dlp_pattern); + rule_edit_data.pattern_list = NULL; + g_list_free(rule_edit_data.pattern_ids_in_use_list); + rule_edit_data.pattern_ids_in_use_list = NULL; + rule_edit_data.config = config; + rule_edit_data.current_rule = current_rule; + rule_edit_data.app_list = app_list; + rule_edit_data.rule_list_data = rule_list_data; + rule_edit_data.rule_detailed_view_data = rule_detailed_view_data; + rule_edit_data.pop_to_nf_it = pop_to_nf_it; + rule_edit_data.name_edit_field = NULL; + rule_edit_data.description_edit_field = NULL; + rule_edit_data.pattern_hoversel = NULL; + rule_edit_data.done_button = NULL; + rule_edit_data.next_button = NULL; + + current_pattern = NULL; + + const bool got_patterns = get_pattern_ids_in_use_list(&(rule_edit_data.pattern_ids_in_use_list)); + log_if(!got_patterns, 1, "get_pattern_ids_in_use_list() failed"); + + /* Get dlp custom patterns from privacy guard */ + const int res = privacy_guard_client_foreach_dlp_patterns(_rule_edit_get_patterns_cb, &rule_edit_data); + log_if(res != PRIV_GUARD_ERROR_SUCCESS, 1, "privacy_guard_client_foreach_dlp_custom_patterns() failed. [%d]", res); + + get_pattern_s *custom_pattern = create_pattern(CUSTOM_PATTERN_ITEM_ID, "", dgettext("privacy-setting", PRIVACY_MENU_DLP_PROFILE_CUSTOM), "", PRIV_GUARD_DLP_PATTERN_STRING, "", true, 0); + rule_edit_data.pattern_list = g_list_append(rule_edit_data.pattern_list, custom_pattern); + + Evas_Object *bg = elm_bg_add(ad->nf); + elm_bg_color_set(bg, 255, 255, 255); + + Evas_Object *rule_grid = elm_grid_add(ad->nf); + elm_grid_size_set(rule_grid, 100, 10); + + elm_object_content_set(bg, rule_grid); + + const int col1 = 5; + const int col2 = 35; + const int col_span1 = 34; + const int col_span2 = 65; + int row = 0; + const int row_span = 1; + + static dlp_edit_field_changed_cb_s edit_field_changed_cb_data; + edit_field_changed_cb_data.changed_cb = _rule_edit_field_changed_cb; + edit_field_changed_cb_data.data = &rule_edit_data; + + /* add rule name fields to grid */ + static const Elm_Entry_Filter_Limit_Size name_limit_size = { .max_char_count = 0, .max_byte_count = LEN_NAME - 1 }; + add_edit_field_to_grid(rule_grid, dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_NAME), false, NULL, col1, row, col_span1, row_span, NULL); + rule_edit_data.name_edit_field = add_edit_field_to_grid(rule_grid, NULL == current_rule ? "" : current_rule->name, true, &name_limit_size, col2, row++, col_span2, row_span, &edit_field_changed_cb_data); + + /* add rule description fields to grid */ + static const Elm_Entry_Filter_Limit_Size description_limit_size = { .max_char_count = 0, .max_byte_count = LEN_DESCRIPTION - 1 }; + add_edit_field_to_grid(rule_grid, dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_DESCRIPTION), false, NULL, col1, row, col_span1, row_span, NULL); + rule_edit_data.description_edit_field = add_edit_field_to_grid(rule_grid, NULL == current_rule ? "" : current_rule->description, true, &description_limit_size, col2, row++, col_span2, row_span, &edit_field_changed_cb_data); + + /* add rule pattern fields to grid */ + add_edit_field_to_grid(rule_grid, dgettext("privacy-setting", PRIVACY_MENU_DLP_RULES_N_PATTERNS_TITLE_PATTERNS), false, NULL, col1, row, col_span1, row_span, NULL); + rule_edit_data.pattern_hoversel = add_pattern_hoversel_to_grid(rule_grid, &rule_edit_data, col2 + 4, row++, col_span2 - 8, row_span); + + evas_object_show(rule_grid); + + Elm_Object_Item *nf_it = elm_naviframe_item_push( + ad->nf, + NULL == current_rule ? dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_CREATE) : dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_EDIT), + NULL, + NULL, + bg, + NULL); + + /* set callback to genlist item pop event */ + elm_naviframe_item_pop_cb_set(nf_it, _rule_edit_nf_pop_cb, &rule_edit_data); + /* add a cancel button to naviframe title bar */ + common_naviframe_btn_add(ad->nf, nf_it, true, dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_CANCEL), _rule_edit_cancel_cb, &rule_edit_data); + if (NULL == current_rule) { + /* add a done button to naviframe title bar */ + rule_edit_data.done_button = common_naviframe_btn_add(ad->nf, nf_it, false, dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_DONE), _rule_edit_done_cb, &rule_edit_data); + elm_object_disabled_set(rule_edit_data.done_button, EINA_TRUE); + } else + /* add a next button to naviframe title bar */ + rule_edit_data.next_button = common_naviframe_btn_add(ad->nf, nf_it, false, dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_NEXT), _rule_edit_next_cb, &rule_edit_data); +} diff --git a/ui/src/privacy_dlp_rule_list_view.c b/ui/src/privacy_dlp_rule_list_view.c new file mode 100644 index 0000000..de6d8ab --- /dev/null +++ b/ui/src/privacy_dlp_rule_list_view.c @@ -0,0 +1,341 @@ +/* + * Copyright (c) 2017 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* + * @file privacy_dlp_rule_list_view.c + * @version 1.0 + * @brief + */ + +#include "common_utils.h" +#include "common_ctxpopup.h" +#include "privacy_setting.h" +#include "privacy_view.h" +#include <privacy_guard_client.h> +#include <app_manager.h> +#include <efl_extension.h> + +#define ACTION_TEXT_LEN 128 + +typedef struct { + struct app_data_s *ad; + GList *rule_list; + rule_action_filter action; + const dlp_profile_s *config; + Elm_Object_Item *pop_to_nf_it; + Evas_Object *view_parent; + Evas_Object *rule_box; + Evas_Object *rule_genlist; + Evas_Object *rule_ctxpopup; +} dlp_rule_list_data_s; + +static dlp_rule_list_data_s rule_list_data = { + .ad = NULL, + .rule_list = NULL, + .action = ACTION_ALL, + .config = NULL, + .view_parent = NULL, + .rule_box = NULL, + .rule_genlist = NULL, + .rule_ctxpopup = NULL +}; + +void apply_rule_action_filter(dlp_rule_list_data_s *rld, Evas_Object *obj, int action); +void create_rule_genlist(dlp_rule_list_data_s *data); +const char *get_rule_action_text(rule_action_filter action); +void set_rule_action_filter_text(Evas_Object *action_hoversel, int action); + +static bool _pg_dlp_rules_cb(int id, PgDlpAction action, int pattern_id, const char *name, const char *description, const char *application_id, int leaks_count, void *user_data) +{ + /* create a new rule and store db data in it*/ + get_custom_rule_s *rule = (get_custom_rule_s *)malloc(sizeof(get_custom_rule_s)); + + if (rule != NULL) { + rule->id = id; + rule->action = action; + rule->pattern_id = pattern_id; + strncpy(rule->name, name, LEN_NAME); + rule->name[LEN_NAME - 1] = '\0'; + strncpy(rule->description, description, LEN_DESCRIPTION); + rule->description[LEN_DESCRIPTION - 1] = '\0'; + rule->leaks_count = leaks_count; + strncpy(rule->application_id, application_id, LEN_APPLICATION_ID); + rule->application_id[LEN_APPLICATION_ID - 1] = '\0'; + + GList **dlp_rules_list = user_data; + *dlp_rules_list = g_list_prepend(*dlp_rules_list, rule); + } + return true; +} + +static gint _compare_rules_pattern_id_action_cb(gconstpointer lhs, gconstpointer rhs) +{ + const get_custom_rule_s *lhs_rule = lhs; + const get_custom_rule_s *rhs_rule = rhs; + + if (lhs_rule->pattern_id < rhs_rule->pattern_id) + return -1; + + if (lhs_rule->pattern_id > rhs_rule->pattern_id) + return 1; + + // note that here we already know that + // lhs_rule->pattern_id == rhs_rule->pattern_id, + // so we compare the rules actions + if (lhs_rule->action == rhs_rule->action) + return 0; + + return (lhs_rule->action < rhs_rule->action) ? -1 : 1; +} + +static void _rule_genlist_del_cb(void *data, Evas_Object *obj) +{ + get_custom_rule_s *item = (get_custom_rule_s *)data; + free(item); +} + +static char* _rule_genlist_text_get_cb(void *data, Evas_Object *obj, const char *part) +{ + dlp_item_rule_s *rule = (dlp_item_rule_s *)data; + + if (strcmp(part, "elm.text") == 0) + return strdup(rule->data->name); + + if (strcmp(part, "elm.text.multiline") == 0) { + if (rule == NULL) + return strdup(""); + + return strdup(rule->data->description); + } + + return NULL; +} + +static void _rule_list_view_create_rule_cb(void *data, Evas_Object *obj, void *event_info) +{ + dlp_rule_list_data_s *rld = data; + delete_ctxpopup(rld->rule_ctxpopup); + create_privacy_dlp_rule_create_view(rld->ad, rld->pop_to_nf_it, NULL, rld); +} + +static void _rule_list_view_delete_rules_cb(void *data, Evas_Object *obj, void *event_info) +{ + dlp_rule_list_data_s *rld = data; + delete_ctxpopup(rld->rule_ctxpopup); + create_privacy_dlp_rule_delete_view(rld->ad, rld->rule_list, rld); +} + +static void _rule_list_menu_item_selected_cb(void *data, Evas_Object *obj, void *event_info) +{ + /* Get selected item */ + Elm_Object_Item *ei = event_info; + dlp_item_rule_s *item = elm_object_item_data_get(ei); + + /* Unhighlight selected item */ + elm_genlist_item_selected_set(ei, EINA_FALSE); + + dlp_rule_list_data_s *view_data = (dlp_rule_list_data_s *)data; + create_privacy_dlp_rule_detailed_view(view_data->ad, view_data->pop_to_nf_it, item->data, view_data->config, view_data); +} + +static void _rule_list_view_menu_button_cb(void *data, Evas_Object *obj, void *event_info) +{ + dlp_rule_list_data_s *rld = data; + rld->rule_ctxpopup = create_ctxpop(rld->ad); + + elm_ctxpopup_item_append(rld->rule_ctxpopup, dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_CREATE), NULL, _rule_list_view_create_rule_cb, data); + elm_ctxpopup_item_append(rld->rule_ctxpopup, dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_DELETE), NULL, _rule_list_view_delete_rules_cb, data); +} + +static int _compare_rule_list_menu_item_cb(const void *lhs, const void* rhs) +{ + const get_custom_rule_s *lhs_rule = ((const dlp_item_rule_s *)elm_object_item_data_get(lhs))->data; + const get_custom_rule_s *rhs_rule = ((const dlp_item_rule_s *)elm_object_item_data_get(rhs))->data; + return strncasecmp(lhs_rule->name, rhs_rule->name, LEN_NAME); +} + +void delete_rule_list() +{ + if (NULL == rule_list_data.rule_list) + return; + + /* Delete all the rules */ + GList* l; + for (l = rule_list_data.rule_list; l != NULL; l = l->next) { + get_custom_rule_s* rule = (get_custom_rule_s*)l->data; + free(rule); + } + + g_list_free(rule_list_data.rule_list); + rule_list_data.rule_list = NULL; +} + +void apply_rule_action_filter(dlp_rule_list_data_s *data, Evas_Object *obj, int action) +{ + data->action = action; + set_rule_action_filter_text(obj, action); + elm_box_unpack(data->rule_box, data->rule_genlist); + evas_object_del(data->rule_genlist); + create_rule_genlist(data); +} + +const char *get_rule_action_text(rule_action_filter action) +{ + switch (action) { + case ACTION_ALLOW: + return "Allow"; + case ACTION_DENY: + return "Deny"; + case ACTION_SANITIZE: + return "Sanitize"; + default: + return "All rules"; + } +} + +void set_rule_action_filter_text(Evas_Object *action_hoversel, int action) +{ + char text[ACTION_TEXT_LEN + 1]; + text[ACTION_TEXT_LEN] = 0; + const char *format = "<color=#FFFFFFFF>%s</color>"; + const char *action_text = get_rule_action_text(action); + snprintf(text, ACTION_TEXT_LEN, format, action_text); + elm_object_text_set(action_hoversel, text); +} + +int populate_genlist(dlp_rule_list_data_s *data) +{ + int rule_count = 0; + + if (NULL != data->rule_list) { + Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new(); + itc->item_style = "multiline"; + itc->func.text_get = _rule_genlist_text_get_cb; + itc->func.del = _rule_genlist_del_cb; + + Elm_Object_Item *it = NULL; + GList* l = data->rule_list; + /* Append rules as genlist item */ + while (l != NULL) { + dlp_item_rule_s *item = calloc(1, sizeof(dlp_item_rule_s)); + + if (item != NULL) { + // rule item data + item->data = (get_custom_rule_s*)l->data; + get_custom_rule_s *rule = (get_custom_rule_s*)l->data; + + if (filter_rule_by_action(item->data->action, data->action)) { + // append rule to the genlist + it = elm_genlist_item_sorted_insert( + data->rule_genlist, + itc, + item, + NULL, + ELM_GENLIST_ITEM_NONE, + _compare_rule_list_menu_item_cb, + _rule_list_menu_item_selected_cb, + data); + log_if(it == NULL, 1, "Error in elm_genlist_item_append"); + ++rule_count; + + const int pattern_id = rule->pattern_id; + const PgDlpAction action = rule->action; + while (l != NULL && pattern_id == rule->pattern_id && action == rule->action) { + l = l->next; + if (l != NULL) + rule = (get_custom_rule_s*)l->data; + } + } else + l = l->next; + } else { + LOGE("populate_genlist() failed to calloc dlp_item_rule_s"); + } + } + + elm_genlist_item_class_free(itc); + } + + return rule_count; +} + +void create_rule_genlist(dlp_rule_list_data_s *data) +{ + data->rule_genlist = common_genlist_add(data->rule_box); + evas_object_size_hint_weight_set(data->rule_genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(data->rule_genlist, EVAS_HINT_FILL, EVAS_HINT_FILL); + if (populate_genlist(data) == 0) { + /* rules list is empty */ + elm_layout_theme_set(data->rule_genlist, "layout", "nocontents", "default"); + } else { + elm_genlist_item_show(elm_genlist_first_item_get(data->rule_genlist), ELM_GENLIST_ITEM_SCROLLTO_IN); + } + evas_object_show(data->rule_genlist); + elm_box_pack_end(data->rule_box, data->rule_genlist); +} + +void create_rule_list_components(dlp_rule_list_data_s *data) +{ + /* Create box container to hold view's components */ + data->rule_box = elm_box_add(data->view_parent); + evas_object_show(data->rule_box); + + create_rule_genlist(data); + elm_object_part_content_set(data->view_parent, "elm.swallow.content", data->rule_box); + + if (PRIV_GUARD_DLP_PROFILE_CUSTOM == data->config->profile) + /* Register the Menu key event callback */ + eext_object_event_callback_add(data->rule_box, EEXT_CALLBACK_MORE, _rule_list_view_menu_button_cb, data); +} + +void create_rule_list(const PgDlpProfile profile, GList **rule_list) +{ + delete_rule_list(); + + /* Get dlp leak logs from privacy guard */ + const int res = privacy_guard_client_foreach_dlp_rules(getuid(), profile, _pg_dlp_rules_cb, rule_list); + log_if(res != PRIV_GUARD_ERROR_SUCCESS, 1, "privacy_guard_client_foreach_dlp_custom_rules() is failed. [%d]", res); + + /* sort rules by pattern id and action */ + rule_list_data.rule_list = g_list_sort(rule_list_data.rule_list, _compare_rules_pattern_id_action_cb); +} + +void update_privacy_dlp_rules_list_view(void *rule_list_data) +{ + if (NULL == rule_list_data) { + LOGE("Invalid parameter"); + return; + } + + dlp_rule_list_data_s *rld = rule_list_data; + + create_rule_list(rld->config->profile, &(rld->rule_list)); + + elm_box_unpack(rld->rule_box, rld->rule_genlist); + evas_object_del(rld->rule_genlist); + create_rule_genlist(rld); +} + +void create_privacy_dlp_rules_list_view(struct app_data_s *ad, Evas_Object *parent, Elm_Object_Item *pop_to_nf_it, const dlp_profile_s *config) +{ + rule_list_data.ad = ad; + + rule_list_data.config = config; + rule_list_data.view_parent = parent; + rule_list_data.pop_to_nf_it = pop_to_nf_it; + + create_rule_list(rule_list_data.config->profile, &rule_list_data.rule_list); + + create_rule_list_components(&rule_list_data); +} diff --git a/ui/src/privacy_menu_view.c b/ui/src/privacy_menu_view.c index 47faa7d..5179756 100644 --- a/ui/src/privacy_menu_view.c +++ b/ui/src/privacy_menu_view.c @@ -82,6 +82,8 @@ static void menu_selected_cb(void *data, Evas_Object *obj, void *event_info) create_privacy_list_view(ad); } else if (strstr(selected_text, dgettext("privacy-setting", PRIVACY_MENU_MONITOR)) != NULL) {/* privacy guard */ create_privacy_guard_list_view(ad); + } else if (strstr(selected_text, dgettext("privacy-setting", PRIVACY_MENU_DLP)) != NULL) {/* data leak monitor */ + create_privacy_dlp_menu_view(ad); } else { LOGE("selected text = %s, no matching menu", selected_text); } @@ -99,6 +101,7 @@ void create_privacy_menu_view(struct app_data_s *ad) privacy_menu_list = NULL; privacy_menu_list = g_list_append(privacy_menu_list, PRIVACY_MENU_SETTING); privacy_menu_list = g_list_append(privacy_menu_list, PRIVACY_MENU_MONITOR); + privacy_menu_list = g_list_append(privacy_menu_list, PRIVACY_MENU_DLP); Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new(); itc->item_style = "default"; diff --git a/ui/src/privacy_view.c b/ui/src/privacy_view.c new file mode 100644 index 0000000..a1250de --- /dev/null +++ b/ui/src/privacy_view.c @@ -0,0 +1,89 @@ +/* + * Copyright (c) 2017 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* + * @file privacy_view.c + * @version 1.0 + * @brief + */ + +#include "privacy_view.h" + +bool filter_rule_by_action(int rule_action, rule_action_filter filter_action) +{ + switch (filter_action) { + case ACTION_ALLOW: + return PRIV_GUARD_DLP_ACTION_ALLOW == rule_action; + case ACTION_DENY: + return PRIV_GUARD_DLP_ACTION_DENY == rule_action; + case ACTION_SANITIZE: + return PRIV_GUARD_DLP_ACTION_SANITIZE == rule_action; + default: + return true; // defaults to ACTION_ALL; + } +} + +// NOTE: the function below is commented out because only allow actions will be +// released to Tizen 4.0, so action icons become meaningless. +// +// /** +// * @brief Overlay an image related to the action on top of the application icon +// * @param[in] icon The icon to be altered +// * @param[in] action The type of image to be overlaid +// */ +// void overlay_action_image(Evas_Object *icon, PgDlpAction action) +// { +// Evas_Object *img = elm_image_object_get((const Elm_Image *)icon); +// Eina_Bool has_alpha = evas_object_image_alpha_get(img); +// unsigned char *ptr = (unsigned char *)evas_object_image_data_get(img, EINA_TRUE); +// int stride = evas_object_image_stride_get(img); +// int psize = 3, width, height; +// int radius, x, y; + +// evas_object_image_size_get(img, &width, &height); +// radius = width / 4; +// if (height / 4 < radius) +// radius = height / 4; +// if (has_alpha) psize = 4; +// float xcenter = (float)(width - radius); +// for (y = stride * (height - radius * 2); y < stride * height; y += stride) { +// float sliceval = (float)radius * sinf(((float)height - 1. - (float)y / (float)stride) / (float)radius * M_PI / 2.); +// for (x = (int)(xcenter - sliceval + .5) * psize; x < (int)(xcenter + sliceval + .5) * psize; x += psize) { +// // order is bgra in elm_image +// switch (action) { +// case PRIV_GUARD_DLP_ACTION_ALLOW: +// ptr[y + x] = 0; +// ptr[y + x + 1] = 255; +// ptr[y + x + 2] = 0; +// break; +// case PRIV_GUARD_DLP_ACTION_DENY: +// ptr[y + x] = 0; +// ptr[y + x + 1] = 0; +// ptr[y + x + 2] = 255; +// break; +// case PRIV_GUARD_DLP_ACTION_SANITIZE: +// ptr[y + x] = 0; +// ptr[y + x + 1] = 255; +// ptr[y + x + 2] = 255; +// break; +// default: +// LOGE("Invalid action type"); +// break; +// } +// if (has_alpha) ptr[y + x + 3] = 255; +// } +// } +//} + |