diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index ceb9413..90a81ca 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -20,7 +20,7 @@ jobs:
steps:
- name: Checkout repository
- uses: actions/checkout@v4
+ uses: actions/checkout@v5
- name: Set environment
run: |
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index e8a08d4..23d8ce9 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -19,7 +19,7 @@ jobs:
steps:
- name: Checkout code
- uses: actions/checkout@v4
+ uses: actions/checkout@v5
- name: Setup PHP
uses: shivammathur/setup-php@v2
@@ -28,7 +28,7 @@ jobs:
tools: composer:v2, supportpal/language-tools
- name: PHP Syntax Check
- uses: overtrue/phplint@9.1
+ uses: overtrue/phplint@9.5
with:
path: .
options: --exclude=vendor
@@ -41,7 +41,7 @@ jobs:
- name: Check out English
if: ${{ env.LANG_NAME != 'en' }}
- uses: actions/checkout@v4
+ uses: actions/checkout@v5
with:
repository: supportpal/addon-language-english
path: addon-language-english/
diff --git a/Lang/pt/actions.php b/Lang/pt/actions.php
index 8ef879f..ec79862 100644
--- a/Lang/pt/actions.php
+++ b/Lang/pt/actions.php
@@ -26,7 +26,6 @@
/*
* 2.2.0
*/
- "close_and_lock_ticket" => "Fechar e bloquear ticket",
"unlock_ticket" => "Desbloquear ticket",
"update_sla_plan" => "Actualizar plano SLA",
"update_subject" => "Actualizar assunto",
@@ -83,4 +82,11 @@
"pause_due_times" => "Pause due times",
"unpause_due_times" => "Unpause due times",
+ /*
+ * 5.5.0
+ */
+ "close_ticket" => "Close ticket",
+ "lock_ticket" => "Lock ticket",
+ "notify_user" => "Notify user",
+
);
diff --git a/Lang/pt/core.php b/Lang/pt/core.php
index ab0a90a..273cf2f 100644
--- a/Lang/pt/core.php
+++ b/Lang/pt/core.php
@@ -369,7 +369,6 @@
"multi_ip" => "Suporte Multi-IP",
"multi_ip_desc" => "Allows locking SupportPal to more than one internal/external IP.",
"purchase" => "Subscrever",
- "ticket_number_missing" => "For ticket related emails, the {{ ticket.number }} merge field should be present in the email subject and must be wrapped in either [#{{ ticket.number }}] or (#{{ ticket.number }}) in order to route replies to the correct ticket. If you would like to remove the ticket number, please consider enabling email sub-addressing.",
/*
* 2.5.0
@@ -662,7 +661,6 @@
/*
* 5.3.0
*/
- "ticket_channel_2" => "We provide a number of default channels. You may wish to activate and configure the Facebook and Twitter channels to collect tickets generated via social media.",
"incoming_duplicate" => "Incoming (Duplicate)",
/*
@@ -682,4 +680,86 @@
"hcaptcha_desc" => "Please register at hCaptcha. Copy the site and secret key above.",
"captcha_type_desc" => "Select the Captcha to be used throughout the system. We recommend switching to Google reCAPTCHA, which requires additional configuration.",
+ /*
+ * 5.5.0
+ */
+ "ticket_channel_2" => "We provide a number of default channels. You may wish to activate and configure the Facebook and Twitter channels to collect tickets generated via social media.",
+ "selected_country_aria_label" => "Selected country",
+ "no_country_selected" => "No country selected",
+ "country_list_aria_label" => "List of countries",
+ "zero_search_results" => "No results found",
+ "one_search_result" => "1 result found",
+ "multiple_search_results" => "\${count} results found", // ${count} is a JS variable and should not be changed.
+ "advanced" => "Advanced",
+ "table" => "Table",
+ "cell" => "Cell",
+ "cell_properties" => "Cell properties",
+ "merge_cells" => "Merge cells",
+ "split_cell" => "Split cell",
+ "row" => "Row",
+ "inset_row_before" => "Insert row before",
+ "inset_row_after" => "Insert row after",
+ "delete_row" => "Delete row",
+ "row_properties" => "Row properties",
+ "cut_row" => "Cut row",
+ "copy_row" => "Copy row",
+ "paste_row_before" => "Paste row before",
+ "paste_row_after" => "Paste row after",
+ "column" => "Column",
+ "insert_column_before" => "Insert column before",
+ "insert_column_after" => "Insert column after",
+ "delete_column" => "Delete column",
+ "cut_column" => "Cut column",
+ "copy_column" => "Copy column",
+ "paste_column_before" => "Paste column before",
+ "paste_column_after" => "Paste column after",
+ "table_properties" => "Table properties",
+ "delete_table" => "Delete table",
+ "width" => "Width",
+ "height" => "Height",
+ "cell_spacing" => "Cell spacing",
+ "cell_padding" => "Cell padding",
+ "border_width" => "Border width",
+ "caption" => "Caption",
+ "show_caption" => "Show caption",
+ "alignment" => "Alignment",
+ "border_style" => "Border style",
+ "border_colour" => "Border colour",
+ "cell_type" => "Cell type",
+ "scope" => "Scope",
+ "horizontal_align" => "Horizontal align",
+ "vertical_align" => "Vertical align",
+ "header_cell" => "Header cell",
+ "row_group" => "Row group",
+ "column_group" => "Column group",
+ "left" => "Left",
+ "center" => "Center",
+ "right" => "Right",
+ "top" => "Top",
+ "middle" => "Middle",
+ "bottom" => "Bottom",
+ "anchor" => "Anchor",
+ "example" => "Example",
+
+ /*
+ * 5.6.0
+ */
+ "email_template_enabled_desc" => "Disabling the email template will prevent notifications that use this template from being sent.",
+ "template_disabled" => "Template Disabled",
+ "reset_email_template" => "This will update the editor with the default email template content. Any previous changes made will be lost once the email template has been saved.",
+
+ /*
+ * 5.7.0
+ */
+ "cursor_position" => "Cursor Position",
+ "set_cursor_position" => "Set Cursor Position",
+ "private_message_notification" => "New Operator Private Message",
+ "private_message_notification_desc" => "Notifies you when you receive correspondence from another operator via private message.",
+
+ /*
+ * 5.7.3
+ */
+ "solid" => "Solid",
+ "dashed" => "Dashed",
+ "dotted" => "Dotted",
);
diff --git a/Lang/pt/general.php b/Lang/pt/general.php
index 5fb597a..08a73ad 100644
--- a/Lang/pt/general.php
+++ b/Lang/pt/general.php
@@ -429,4 +429,15 @@
"week" => "Week|Weeks",
"quarter" => "Quarter|Quarters",
+ /*
+ * 5.5.0
+ */
+ "mark_as_done" => "Mark as Done",
+
+ /*
+ * 5.7.0
+ */
+ "bot" => "Bot|Bots",
+ "allow_all" => "Allow All",
+
);
diff --git a/Lang/pt/integrations.php b/Lang/pt/integrations.php
index c4cf81c..25f89cd 100644
--- a/Lang/pt/integrations.php
+++ b/Lang/pt/integrations.php
@@ -45,8 +45,6 @@
"twilio_api_details_desc" => "Search for 'API Keys' in the console. Create an API key, and enter the key and secret below.",
"twilio_api_secret" => "API Secret",
"twilio_number_verification" => "Number Verification",
- "twilio_number_verification_desc" => "Optional - Enter a verification service SID to enable verification of user phone numbers. This is recommended to avoid a user entering any phone number - the Verify service by Twilio is chargeable.",
- "twilio_verify_sid" => "Verification SID",
"twitter_api_key_secret" => "API Key Secret",
@@ -56,4 +54,27 @@
"twitter_documentation" => "Please read over our documentation for setting up X.",
"twitter_redirect_url" => "The following URL must be entered for the X App 'Callback URL':",
+ /*
+ * 5.4.1
+ */
+ "twilio_verify_sid" => "Verification SID",
+ "twilio_number_verification_desc" => "Optional - Enter a verification service SID to enable verification of user phone numbers. This is recommended to avoid a user entering any phone number - the Verify service by Twilio is chargeable.",
+ "twilio_verify_countries" => "Verify Allowed Countries",
+ "twilio_verify_countries_desc" => "Restrict phone number verification to specific countries, to reduce costs and the risk of abuse. Phone numbers belonging to countries outside of the permitted list can be manually marked as verified by staff.",
+
+ /*
+ * 5.5.0
+ */
+ "algolia_frontend_search_rate_limit" => "Frontend Search Rate Limiting",
+ "algolia_max_daily" => "Daily Max Requests",
+ "algolia_max_daily_desc" => "The maximum number of API calls that can be made to Algolia from the frontend.",
+ "algolia_max_min" => "Max Requests Per Minute",
+ "algolia_max_min_desc" => "The maximum number of API calls that can be made to Algolia from the frontend, per authenticated user / IP address.",
+
+ /*
+ * 5.7.0
+ */
+ "microsoft_tenant_id" => "Tenant ID",
+ "microsoft_tenant_id_desc" => "If you are required to use a single tenant for supported account types, enter the tenant ID; otherwise, leave this field blank. The tenant ID can be found in the Microsoft Entra Identity overview.",
+
);
diff --git a/Lang/pt/license.php b/Lang/pt/license.php
index ac4b462..c3bc922 100644
--- a/Lang/pt/license.php
+++ b/Lang/pt/license.php
@@ -48,4 +48,9 @@
*/
"unlicensed" => "Unlicensed",
+ /*
+ * 5.5.0
+ */
+ "key_updated" => "License key updated successfully.",
+
);
diff --git a/Lang/pt/locale.php b/Lang/pt/locale.php
index 7bfc3d6..2984822 100644
--- a/Lang/pt/locale.php
+++ b/Lang/pt/locale.php
@@ -310,7 +310,6 @@
"Africa/Cairo" => "(GMT+02:00) Cairo",
"Africa/Harare" => "(GMT+02:00) Harare",
"Europe/Helsinki" => "(GMT+02:00) Helsinki",
- "Europe/Istanbul" => "(GMT+02:00) Istanbul",
"Asia/Jerusalem" => "(GMT+02:00) Jerusalem",
"Africa/Johannesburg" => "(GMT+02:00) Johannesburg",
"Europe/Minsk" => "(GMT+02:00) Minsk",
@@ -320,6 +319,7 @@
"Europe/Vilnius" => "(GMT+02:00) Vilnius",
"Africa/Windhoek" => "(GMT+02:00) Windhoek",
"Asia/Baghdad" => "(GMT+03:00) Baghdad",
+ "Europe/Istanbul" => "(GMT+02:00) Istanbul",
"Asia/Kuwait" => "(GMT+03:00) Kuwait",
"Europe/Moscow" => "(GMT+03:00) Moscow",
"Africa/Nairobi" => "(GMT+03:00) Nairobi",
diff --git a/Lang/pt/log.php b/Lang/pt/log.php
index 60b70c1..11fc60a 100644
--- a/Lang/pt/log.php
+++ b/Lang/pt/log.php
@@ -267,4 +267,15 @@
"ticket_feedback_saved" => "Saved :extra_rel1 on ticket #:rel.", // Saved (lowercase ticket.feedback) on ticket #123
"selfservice_feedback_saved" => "Saved :extra_rel1 on article :rel.", // Saved (lowercase ticket.feedback) on article 'Foo bar'
+ /*
+ * 5.5.0
+ */
+ "ticket_pinned_message" => "Pinned :extra_rel1 on ticket #:rel.", // Pinned message (lowercase general.message) on ticket #123.
+ "ticket_unpinned_message" => "Unpinned :extra_rel1 on ticket #:rel.", // Unpinned message (lowercase general.message) on ticket #123.
+
+ /*
+ * 5.7.0
+ */
+ "operator_notifications_updated" => "Updated :rel's notification preferences.", // Updated Joe Blog's notification preferences.
+
);
diff --git a/Lang/pt/messages.php b/Lang/pt/messages.php
index 3d7ae2b..e787d5d 100644
--- a/Lang/pt/messages.php
+++ b/Lang/pt/messages.php
@@ -168,4 +168,9 @@
"lock_timeout" => "Lock Timeout",
"lock_timeout_desc" => "The server is currently busy processing other requests. Please try again.",
+ /*
+ * 5.4.1
+ */
+ "throttle_error" => "Too many attempts, please try again :in_time." // :in_time becomes in 1 minute, etc
+
);
diff --git a/Lang/pt/permission.php b/Lang/pt/permission.php
index 273791d..248d4cc 100644
--- a/Lang/pt/permission.php
+++ b/Lang/pt/permission.php
@@ -137,4 +137,11 @@
* 5.1.0
*/
"manage_report" => "Manage Reports",
+
+ /*
+ * 5.7.0
+ */
+ "operatornotification" => "Manage Operator Notifications",
+ "replytemplate" => "Manage Own Reply Templates",
+
);
diff --git a/Lang/pt/report.php b/Lang/pt/report.php
index 23f0dcb..2146c0c 100644
--- a/Lang/pt/report.php
+++ b/Lang/pt/report.php
@@ -165,4 +165,9 @@
"total_tickets_canned_responses_used" => "Total Tickets with Canned Responses Used",
"operators_most_used_responses" => "Operators with Most Canned Responses Used",
+ /*
+ * 5.7.0
+ */
+ "group_by" => "Group by",
+
);
diff --git a/Lang/pt/selfservice.php b/Lang/pt/selfservice.php
index 51fdb54..cc438ff 100644
--- a/Lang/pt/selfservice.php
+++ b/Lang/pt/selfservice.php
@@ -33,7 +33,6 @@
"excerpt" => "Excerto",
"associate_tag" => "Associar artigo com uma tag...",
"associate_category" => "Associar artigo com uma categoria...",
- "published_desc" => "Se este artigo pode ser visto publicamente. Caso não seja publicado, este poderá continuar a ser visualizado pelo endereço URL directo desde que uma das categorias seja pública.",
"registered_users_desc" => "Activar para mostrar o artigo apenas a utilizadores autenticados.",
"comment_by" => "Comentário por",
@@ -158,4 +157,16 @@
*/
"in_reply_to" => "in reply to",
+ /*
+ * 5.7.0
+ */
+ "comment_notification" => "New Comment Posted",
+ "comment_notification_desc" => "Notifies you when a new comment is posted on a self-service article.",
+
+ /*
+ * 5.7.5
+ */
+ "published_desc" => "Se este artigo pode ser visto publicamente. Caso não seja publicado, este poderá continuar a ser visualizado pelo endereço URL directo desde que uma das categorias seja pública.",
+ "not_published" => "Not Published",
+
);
diff --git a/Lang/pt/ticket.php b/Lang/pt/ticket.php
index 66cb1d0..adae8d9 100644
--- a/Lang/pt/ticket.php
+++ b/Lang/pt/ticket.php
@@ -290,11 +290,6 @@
"type_in_tags" => "Escrever tags",
- /*
- * 2.0.1
- */
- "allowed_files_desc" => "A list of file extensions, separated by the pipe | character, that are permitted as attachments. For example: txt|png|jpg. To allow all attachments, input: ?.*",
-
/*
* 2.0.2
*/
@@ -538,8 +533,6 @@
"append_ip_address_api_desc" => "Append the user's IP address to the end of their ticket messages (requires user_ip_address data to be provided).",
"check_spam" => "Check Spam Rules",
"check_spam_api_desc" => "Block messages which match spam rules.",
- "enable_throttling" => "Enable Throttling",
- "enable_throttling_api_desc" => "Limit the number of messages user's can post within a time frame. See Throttling configuration for more details on how to adjust the limits.",
"captcha_desc" => "Quando o Captcha deve ser mostrado aos utilizadores que abrem novos tickets.",
/*
@@ -573,4 +566,52 @@
"reject_duplicate_emails_desc" => "Stop emails being imported more than once, detected based on the Message-ID header.",
"duplicate_email_detected" => "Duplicate email that has already been imported.",
+ /*
+ * 5.5.0
+ */
+ "rate_limiting" => "Rate Limiting",
+ "max_requests" => "Max Requests",
+ "max_requests_desc" => "Set the maximum number of requests before a user is throttled.",
+ "decay_time" => "Decay Time",
+ "decay_time_desc" => "The number of minutes until the available attempts are reset.",
+ "exclude_addresses" => "Exclude Addresses",
+ "exclude_addresses_desc" => "A list of email addresses which are excluded from rate limits.",
+ "enable_throttling" => "Enable Throttling",
+ "enable_throttling_api_desc" => "Limit the number of messages user's can post within a time frame. See Throttling configuration for more details on how to adjust the limits.",
+ "close_without_notify" => "Close (without notification)",
+ "lock" => "Lock",
+ "pin" => "Pin",
+ "unpin" => "Unpin",
+
+ /*
+ * 5.6.0
+ */
+ "copy_to_new_filter" => "Copy to New Filter",
+ "alias_support" => "Alias Support",
+ "alias_support_desc" => "Alias support analyses the recipient addresses of incoming emails to determine which department the email should be opened in. Disabling alias support will open all emails in the department they were fetched in irrespective of the recipient addresses.",
+
+ /*
+ * 5.7.0
+ */
+ "run_as_operator" => "Run As",
+ "run_as_operator_desc" => "Execute the following actions as the selected operator: \":actions\"",
+ "use_ticket_print_view" => "Please use the dedicated print view to print this ticket. You can access it by clicking the 'Print' option in the ticket view.",
+ "save_feedback" => "Save Feedback",
+ "ticket_opened_notification" => "New Ticket Opened",
+ "ticket_opened_notification_desc" => "Notifies you when a new user or internal ticket has been opened.",
+ "user_reply_notification" => "User Ticket Reply Posted",
+ "user_reply_notification_desc" => "Notifies you when a user replies to an existing ticket.",
+ "operator_reply_notification" => "Operator Ticket Reply Posted",
+ "operator_reply_notification_desc" => "Notifies you when another operator replies to a ticket.",
+ "operator_note_notification" => "Operator Ticket Note Posted",
+ "operator_note_notification_desc" => "Notifies you when another operator posts a note on a ticket.",
+ "assigned_notification" => "Assigned to Ticket",
+ "assigned_notification_desc" => "Notifies you when you are assigned to a ticket.",
+ "department_changed_notification" => "Department Changed",
+ "department_changed_notification_desc" => "Notifies you when a ticket changes department.",
+ "mention_notification" => "Mentioned",
+ "mention_notification_desc" => "Notifies you when you are mentioned on a ticket.",
+ "mark_resolved_and_post_reply" => "Mark as Resolved & Post Reply",
+ "allowed_files_desc" => "A list of file extensions, separated by the pipe | character, that are permitted as attachments. For example: txt|png|jpg. To allow all attachments, input: ?.*",
+
);
diff --git a/Lang/pt/user.php b/Lang/pt/user.php
index 82bc304..8db091f 100644
--- a/Lang/pt/user.php
+++ b/Lang/pt/user.php
@@ -86,9 +86,6 @@
"operator_details" => "Detalhes Operador",
- "email_notifications" => "Notificações de Email",
- "email_notifications_desc" => "As notificações de e-mail que serão recebidas do sistema.",
-
"enable_ldap" => "Activar Autenticação LDAP",
"enable_ldap_desc" => "If you use LDAP, you can enable it for operator login. After enabling, go to the LDAP Accounts settings page to configure it.",
"user_reg_enabled" => "Registo de Utilizadores Activo",
@@ -132,7 +129,6 @@
"two_fa_code" => "Código 2FA",
"two_fa_secret" => "Código Secreto 2FA",
"two_fa_secret_desc" => "Por favor guarde esta informação num local seguro, uma vez que irá necessitar da mesma caso pretenda adicionar novamente a conta a um dispositivo móvel caso o perca ou formate.",
- "display_notifications" => "Mostrar Notificações",
"desktop_notifications" => "Notificações do Desktop",
"browser_notifications" => "Notificações do Browser",
@@ -372,11 +368,6 @@
"error_join" => "The invitation code could not be found, or has expired.",
"verify_to_view_tickets" => "Please verify all additional email addresses or remove unverified email addresses under your account profile.",
- /*
- * 5.2.3
- */
- "display_notifications_desc" => "O sistema irá detectar novos tickets, respostas ou autenticação de outros utilizadores enquanto tem o painel de operador aberto. Poderá optar entre notificações desktop, notificações no browser ou desactivar completamente as notificações.",
-
/*
* 5.3.0
*/
@@ -386,4 +377,36 @@
"operator_set_password_desc" => "Please enter a password below to finish setting up your operator account.",
"password_set_success" => "Password set successfully!",
+ /*
+ * 5.7.0
+ */
+ "reply_template_cursor_position" => "Use the 'Set Cursor Position' option in the editor to specify where the cursor will be positioned when the user opens the editor to reply to a ticket.",
+ "system_bot_desc" => "This is a system bot account used for automated actions. You can only edit its name and avatar.",
+ "notification_settings" => "Notification Settings",
+ "operator_notifications" => "Operator Notifications",
+ "operator_notifications_desc" => "Update the notification preferences for the operator account.",
+ "default_department_subscription" => "Default Department Subscription",
+ "default_department_subscription_desc" => "Set the default notification subscription to determine when notifications are sent on ticket events. This subscription will be used for any department that does not have a specific subscription configured.",
+ "department_subscriptions" => "Department Subscriptions",
+ "department_subscriptions_desc" => "Customise the notification subscription for each department.",
+ "subscription_type" => "Subscription Type",
+ "subscription_default" => "Default",
+ "subscription_default_desc" => "Use the default department subscription for this department.",
+ "subscription_all_activity" => "All Activity",
+ "subscription_all_activity_desc" => "Receive notifications about all activity in this department.",
+ "subscription_unassigned_and_assigned" => "Unassigned and Assigned",
+ "subscription_unassigned_and_assigned_desc" => "Receive notifications from this department when there are no assignees on the ticket, or when you are assigned. Notifications are also sent when watching the ticket or @mentioned.",
+ "subscription_assigned_only" => "Assigned Only",
+ "subscription_assigned_only_desc" => "Receive notifications from this department only when assigned to the ticket. Notifications are also sent when watching the ticket or @mentioned.",
+ "subscription_ignore" => "Ignore",
+ "subscription_ignore_desc" => "Don't receive notifications for any activity in this department, apart from when watching or @mentioned.",
+ "configure_on_operator_notifications" => "Department-specific notification subscriptions can be set on the operator notifications page.",
+ "notification_channel_email" => "Email",
+ "notification_channel_browser" => "Browser",
+ "browser_notifications_desc" => "The system will notify you of certain events through the browser. You can choose between desktop notifications, in-app notifications, or disabling them completely.",
+ "failed_login_notification" => "Failed Operator Login",
+ "failed_login_notification_desc" => "Notifies you when someone fails to log in to the operator panel or has their IP banned due to multiple failed login attempts.",
+ "notifications_desc" => "Select the channels on which you would like to be notified about system events, or disable individual notifications completely.",
+ "in_app_notifications" => "In-App Notifications",
+
);