From 8a0168def5e0d3d569412e8df7a18aea468ac5e7 Mon Sep 17 00:00:00 2001 From: Goran Jakovljevic Date: Sun, 25 Jan 2026 12:47:08 +0100 Subject: [PATCH 1/4] 1.4.1 update, XSS fixed --- README.txt | 6 +- gls-shipping-for-woocommerce.php | 4 +- includes/admin/class-gls-shipping-bulk.php | 278 +++++++++++------- includes/admin/class-gls-shipping-pickup.php | 4 +- .../methods/class-gls-shipping-method.php | 2 +- 5 files changed, 182 insertions(+), 112 deletions(-) diff --git a/README.txt b/README.txt index 7e04a2c..3566442 100644 --- a/README.txt +++ b/README.txt @@ -3,7 +3,7 @@ Contributors: goran87 Tags: gls, shipping, woocommerce shipping Requires at least: 4.4 Tested up to: 6.9 -Stable tag: 1.4.0 +Stable tag: 1.4.1 License: GPLv2 License URI: http://www.gnu.org/licenses/gpl-2.0.html @@ -81,6 +81,10 @@ To install and configure this plugin: == Changelog == += 1.4.1 = +* Fix: Fixed Reflected Cross-Site Scripting (XSS) vulnerability in bulk action admin notices via the 'failed_orders' parameter. Added proper input sanitization and output escaping. +* Fix: Added proper exception handling for GLS API errors in bulk label operations to prevent fatal errors. API errors are now displayed as admin notices instead of causing crashes. + = 1.4.0 = * Secure PDF Label Storage: Labels are now stored in a protected directory with authentication-based download. * Added Hungary Locker Saturation Filter for parcel locker map (filter-saturation attribute). diff --git a/gls-shipping-for-woocommerce.php b/gls-shipping-for-woocommerce.php index 12d509a..8611af6 100644 --- a/gls-shipping-for-woocommerce.php +++ b/gls-shipping-for-woocommerce.php @@ -3,7 +3,7 @@ /** * Plugin Name: GLS Shipping for WooCommerce * Description: Offical GLS Shipping for WooCommerce plugin - * Version: 1.4.0 + * Version: 1.4.1 * Author: Inchoo * License: GPLv2 * License URI: http://www.gnu.org/licenses/gpl-2.0.html @@ -24,7 +24,7 @@ final class GLS_Shipping_For_Woo { private static $instance; - private $version = '1.4.0'; + private $version = '1.4.1'; private function __construct() { diff --git a/includes/admin/class-gls-shipping-bulk.php b/includes/admin/class-gls-shipping-bulk.php index defb256..300339f 100644 --- a/includes/admin/class-gls-shipping-bulk.php +++ b/includes/admin/class-gls-shipping-bulk.php @@ -113,101 +113,116 @@ public function process_bulk_gls_label_generation($redirect, $doaction, $order_i } // Bulk print labels, dont generate for each but just print in single PDF if ('print_gls_labels' === $doaction) { - $prepare_data = new GLS_Shipping_API_Data($order_ids); - $data = $prepare_data->generate_post_fields_multi(); - - // Send order to GLS API - $is_multi = true; - $api = new GLS_Shipping_API_Service(); - $result = $api->send_order($data, $is_multi); + try { + $prepare_data = new GLS_Shipping_API_Data($order_ids); + $data = $prepare_data->generate_post_fields_multi(); + + // Send order to GLS API + $is_multi = true; + $api = new GLS_Shipping_API_Service(); + $result = $api->send_order($data, $is_multi); - $body = $result['body']; - $failed_orders = $result['failed_orders']; - - // Check if all orders failed - don't attempt PDF creation if no successful labels - if (count($failed_orders) >= count($order_ids)) { - $redirect = add_query_arg( - array( - 'bulk_action' => 'print_gls_labels', - 'gls_labels_printed' => 0, - 'gls_labels_failed' => count($failed_orders), - 'failed_orders' => implode(',', array_column($failed_orders, 'order_id')), - ), - $redirect - ); - return $redirect; - } - - $pdf_filename = $this->bulk_create_print_labels($body); - - if ($pdf_filename) { - // Save tracking numbers to order meta - if (!empty($body['PrintLabelsInfoList'])) { - // Group tracking codes by order ID to handle multiple parcels per order - $orders_data = array(); - - foreach ($body['PrintLabelsInfoList'] as $labelInfo) { - if (isset($labelInfo['ClientReference'])) { - $order_id = str_replace('Order:', '', $labelInfo['ClientReference']); - - if (!isset($orders_data[$order_id])) { - $orders_data[$order_id] = array( - 'tracking_codes' => array(), - 'parcel_ids' => array() - ); - } - - if (isset($labelInfo['ParcelNumber'])) { - $orders_data[$order_id]['tracking_codes'][] = $labelInfo['ParcelNumber']; - } - if (isset($labelInfo['ParcelId'])) { - $orders_data[$order_id]['parcel_ids'][] = $labelInfo['ParcelId']; + $body = $result['body']; + $failed_orders = $result['failed_orders']; + + // Check if all orders failed - don't attempt PDF creation if no successful labels + if (count($failed_orders) >= count($order_ids)) { + $redirect = add_query_arg( + array( + 'bulk_action' => 'print_gls_labels', + 'gls_labels_printed' => 0, + 'gls_labels_failed' => count($failed_orders), + 'failed_orders' => implode(',', array_column($failed_orders, 'order_id')), + ), + $redirect + ); + return $redirect; + } + + $pdf_filename = $this->bulk_create_print_labels($body); + + if ($pdf_filename) { + // Save tracking numbers to order meta + if (!empty($body['PrintLabelsInfoList'])) { + // Group tracking codes by order ID to handle multiple parcels per order + $orders_data = array(); + + foreach ($body['PrintLabelsInfoList'] as $labelInfo) { + if (isset($labelInfo['ClientReference'])) { + $order_id = str_replace('Order:', '', $labelInfo['ClientReference']); + + if (!isset($orders_data[$order_id])) { + $orders_data[$order_id] = array( + 'tracking_codes' => array(), + 'parcel_ids' => array() + ); + } + + if (isset($labelInfo['ParcelNumber'])) { + $orders_data[$order_id]['tracking_codes'][] = $labelInfo['ParcelNumber']; + } + if (isset($labelInfo['ParcelId'])) { + $orders_data[$order_id]['parcel_ids'][] = $labelInfo['ParcelId']; + } } } - } - - // Now save all tracking codes for each order - $successful_orders = array(); - foreach ($orders_data as $order_id => $data) { - $order = wc_get_order($order_id); - if ($order) { - if (!empty($data['tracking_codes'])) { - $order->update_meta_data('_gls_tracking_codes', $data['tracking_codes']); + + // Now save all tracking codes for each order + $successful_orders = array(); + foreach ($orders_data as $order_id => $data) { + $order = wc_get_order($order_id); + if ($order) { + if (!empty($data['tracking_codes'])) { + $order->update_meta_data('_gls_tracking_codes', $data['tracking_codes']); + } + if (!empty($data['parcel_ids'])) { + $order->update_meta_data('_gls_parcel_ids', $data['parcel_ids']); + } + + // Save just the filename, URL with nonce is generated on display + $order->update_meta_data('_gls_print_label', $pdf_filename); + $order->save(); + + $successful_orders[] = $order_id; } - if (!empty($data['parcel_ids'])) { - $order->update_meta_data('_gls_parcel_ids', $data['parcel_ids']); - } - - // Save just the filename, URL with nonce is generated on display - $order->update_meta_data('_gls_print_label', $pdf_filename); - $order->save(); - - $successful_orders[] = $order_id; } + + // Fire hook after successful bulk label generation + do_action('gls_bulk_labels_generated', $order_ids, $successful_orders, $failed_orders); } - - // Fire hook after successful bulk label generation - do_action('gls_bulk_labels_generated', $order_ids, $successful_orders, $failed_orders); - } - // Add query args to URL for displaying notices and providing PDF link - $pdf_url = GLS_Shipping_For_Woo::get_label_download_url($pdf_filename); - $redirect = add_query_arg( - array( - 'bulk_action' => 'print_gls_labels', - 'gls_labels_printed' => count($order_ids) - count($failed_orders), - 'gls_labels_failed' => count($failed_orders), - 'gls_pdf_url' => urlencode($pdf_url), - 'failed_orders' => implode(',', array_column($failed_orders, 'order_id')), - ), - $redirect - ); - } else { - // Handle error case + // Add query args to URL for displaying notices and providing PDF link + $pdf_url = GLS_Shipping_For_Woo::get_label_download_url($pdf_filename); + $redirect = add_query_arg( + array( + 'bulk_action' => 'print_gls_labels', + 'gls_labels_printed' => count($order_ids) - count($failed_orders), + 'gls_labels_failed' => count($failed_orders), + 'gls_pdf_url' => urlencode($pdf_url), + 'failed_orders' => implode(',', array_column($failed_orders, 'order_id')), + ), + $redirect + ); + } else { + // Handle error case + $redirect = add_query_arg( + array( + 'bulk_action' => 'print_gls_labels', + 'gls_labels_printed_error' => 'true', + ), + $redirect + ); + } + } catch (Exception $e) { + // Log the error for debugging + error_log('GLS Bulk Print Labels Error: ' . $e->getMessage()); + + // Handle the exception gracefully - redirect with error message $redirect = add_query_arg( array( 'bulk_action' => 'print_gls_labels', 'gls_labels_printed_error' => 'true', + 'gls_error_message' => urlencode($e->getMessage()), ), $redirect ); @@ -250,10 +265,25 @@ public function bulk_create_print_labels($body) // Display admin notice after bulk action public function gls_bulk_action_admin_notice() { if (isset($_REQUEST['bulk_action'])) { - if ('generate_gls_labels' == $_REQUEST['bulk_action']) { - $generated = intval($_REQUEST['gls_labels_generated']); - $failed = intval($_REQUEST['gls_labels_failed']); - $failed_orders = isset($_REQUEST['failed_orders']) ? explode(',', $_REQUEST['failed_orders']) : []; + // Sanitize the bulk action parameter + $bulk_action = sanitize_text_field(wp_unslash($_REQUEST['bulk_action'])); + + if ('generate_gls_labels' === $bulk_action) { + $generated = isset($_REQUEST['gls_labels_generated']) ? intval($_REQUEST['gls_labels_generated']) : 0; + $failed = isset($_REQUEST['gls_labels_failed']) ? intval($_REQUEST['gls_labels_failed']) : 0; + + // Sanitize failed_orders - only allow integers (order IDs) + $failed_orders = array(); + if (isset($_REQUEST['failed_orders']) && !empty($_REQUEST['failed_orders'])) { + $raw_failed_orders = sanitize_text_field(wp_unslash($_REQUEST['failed_orders'])); + $failed_orders_array = explode(',', $raw_failed_orders); + foreach ($failed_orders_array as $order_id) { + $sanitized_id = absint(trim($order_id)); + if ($sanitized_id > 0) { + $failed_orders[] = $sanitized_id; + } + } + } // Prepare success message $message = sprintf( @@ -279,21 +309,38 @@ public function gls_bulk_action_admin_notice() { ), number_format_i18n($failed) ); - $message .= ' ' . sprintf( - /* translators: %s: comma-separated list of order IDs that failed */ - __('Failed order IDs: %s', 'gls-shipping-for-woocommerce'), - implode(', ', $failed_orders) - ); + if (!empty($failed_orders)) { + $message .= ' ' . sprintf( + /* translators: %s: comma-separated list of order IDs that failed */ + __('Failed order IDs: %s', 'gls-shipping-for-woocommerce'), + esc_html(implode(', ', $failed_orders)) + ); + } } - // Display the notice - printf('

' . $message . '

'); - } elseif ('print_gls_labels' == $_REQUEST['bulk_action']) { + // Display the notice with proper escaping + printf( + '

%s

', + wp_kses_post($message) + ); + } elseif ('print_gls_labels' === $bulk_action) { if (isset($_REQUEST['gls_labels_printed']) && isset($_REQUEST['gls_pdf_url'])) { $printed = intval($_REQUEST['gls_labels_printed']); - $failed = intval($_REQUEST['gls_labels_failed']); - $pdf_url = urldecode($_REQUEST['gls_pdf_url']); - $failed_orders = isset($_REQUEST['failed_orders']) ? explode(',', $_REQUEST['failed_orders']) : []; + $failed = isset($_REQUEST['gls_labels_failed']) ? intval($_REQUEST['gls_labels_failed']) : 0; + $pdf_url = esc_url_raw(urldecode($_REQUEST['gls_pdf_url'])); + + // Sanitize failed_orders - only allow integers (order IDs) + $failed_orders = array(); + if (isset($_REQUEST['failed_orders']) && !empty($_REQUEST['failed_orders'])) { + $raw_failed_orders = sanitize_text_field(wp_unslash($_REQUEST['failed_orders'])); + $failed_orders_array = explode(',', $raw_failed_orders); + foreach ($failed_orders_array as $order_id) { + $sanitized_id = absint(trim($order_id)); + if ($sanitized_id > 0) { + $failed_orders[] = $sanitized_id; + } + } + } // Prepare success message $message = sprintf( @@ -319,10 +366,12 @@ public function gls_bulk_action_admin_notice() { ), number_format_i18n($failed) ); - $message .= sprintf( - __('Failed order IDs: %s', 'gls-shipping-for-woocommerce'), - implode(', ', $failed_orders) - ); + if (!empty($failed_orders)) { + $message .= sprintf( + __('Failed order IDs: %s', 'gls-shipping-for-woocommerce'), + esc_html(implode(', ', $failed_orders)) + ); + } } $message .= sprintf( @@ -331,11 +380,28 @@ public function gls_bulk_action_admin_notice() { esc_url($pdf_url) ); - // Display the notice - printf('

' . $message . '

'); + // Display the notice with proper escaping + printf( + '

%s

', + wp_kses_post($message) + ); } elseif (isset($_REQUEST['gls_labels_printed_error'])) { $message = __('An error occurred while generating the GLS labels PDF.', 'gls-shipping-for-woocommerce'); - printf('

' . $message . '

'); + + // Display specific error message if available + if (isset($_REQUEST['gls_error_message']) && !empty($_REQUEST['gls_error_message'])) { + $error_detail = sanitize_text_field(urldecode($_REQUEST['gls_error_message'])); + $message .= ' ' . sprintf( + /* translators: %s: error message from GLS API */ + __('Error: %s', 'gls-shipping-for-woocommerce'), + $error_detail + ); + } + + printf( + '

%s

', + esc_html($message) + ); } } } diff --git a/includes/admin/class-gls-shipping-pickup.php b/includes/admin/class-gls-shipping-pickup.php index bd501e6..fb14c53 100644 --- a/includes/admin/class-gls-shipping-pickup.php +++ b/includes/admin/class-gls-shipping-pickup.php @@ -102,7 +102,7 @@ public function pickup_admin_page() $message = ''; $error = ''; - if (isset($_POST['schedule_pickup']) && wp_verify_nonce($_POST['gls_pickup_nonce'], 'gls_pickup_action')) { + if (isset($_POST['schedule_pickup']) && isset($_POST['gls_pickup_nonce']) && wp_verify_nonce(sanitize_text_field(wp_unslash($_POST['gls_pickup_nonce'])), 'gls_pickup_action')) { $result = $this->process_pickup_form(); if (is_wp_error($result)) { $error = $result->get_error_message(); @@ -114,7 +114,7 @@ public function pickup_admin_page() // Get all addresses (including store fallback as first option) $all_addresses = GLS_Shipping_Sender_Address_Helper::get_all_addresses_with_store_fallback(); - $current_tab = isset($_GET['tab']) ? $_GET['tab'] : 'schedule'; + $current_tab = isset($_GET['tab']) ? sanitize_key(wp_unslash($_GET['tab'])) : 'schedule'; ?>
diff --git a/includes/methods/class-gls-shipping-method.php b/includes/methods/class-gls-shipping-method.php index 041f1f7..fdee58c 100644 --- a/includes/methods/class-gls-shipping-method.php +++ b/includes/methods/class-gls-shipping-method.php @@ -598,7 +598,7 @@ public function validate_account_mode_field($key, $value) // Add admin notice to inform user add_action('admin_notices', function() { echo '
'; - echo '

' . __('Multiple accounts mode was not saved because no valid GLS accounts were found. Please add at least one account to use multiple accounts mode.', 'gls-shipping-for-woocommerce') . '

'; + echo '

' . esc_html__('Multiple accounts mode was not saved because no valid GLS accounts were found. Please add at least one account to use multiple accounts mode.', 'gls-shipping-for-woocommerce') . '

'; echo '
'; }); From 0458d0fceef0ef980d76fb27e0397a394d1b8ed2 Mon Sep 17 00:00:00 2001 From: Goran Jakovljevic Date: Mon, 9 Feb 2026 12:17:25 +0100 Subject: [PATCH 2/4] fix: plugin checker --- README.txt | 2 +- gls-shipping-for-woocommerce.php | 28 ++++-- includes/admin/class-gls-shipping-bulk.php | 27 +++--- .../class-gls-shipping-label-migration.php | 57 +++++++----- includes/admin/class-gls-shipping-order.php | 72 ++++++++------- .../class-gls-shipping-pickup-history.php | 11 ++- includes/admin/class-gls-shipping-pickup.php | 24 +++-- ...lass-gls-shipping-product-restrictions.php | 1 + .../api/class-gls-shipping-api-service.php | 26 +++--- .../class-gls-shipping-pickup-api-service.php | 16 ++-- ...ls-shipping-method-parcel-locker-zones.php | 3 + ...lass-gls-shipping-method-parcel-locker.php | 4 + ...-gls-shipping-method-parcel-shop-zones.php | 4 + .../class-gls-shipping-method-parcel-shop.php | 4 + .../class-gls-shipping-method-zones.php | 4 + .../methods/class-gls-shipping-method.php | 87 ++++++++++--------- includes/public/class-gls-shipping-assets.php | 2 + .../public/class-gls-shipping-checkout.php | 5 +- ...ls-shipping-for-woocommerce-cs_CZ.l10n.php | 3 + .../gls-shipping-for-woocommerce-hr.l10n.php | 3 + ...ls-shipping-for-woocommerce-hu_HU.l10n.php | 3 + ...ls-shipping-for-woocommerce-ro_RO.l10n.php | 3 + ...ls-shipping-for-woocommerce-sk_SK.l10n.php | 3 + ...ls-shipping-for-woocommerce-sl_SI.l10n.php | 3 + ...ls-shipping-for-woocommerce-sr_RS.l10n.php | 3 + 25 files changed, 259 insertions(+), 139 deletions(-) diff --git a/README.txt b/README.txt index 3566442..2a8a9ab 100644 --- a/README.txt +++ b/README.txt @@ -1,7 +1,7 @@ === GLS Shipping for WooCommerce === Contributors: goran87 Tags: gls, shipping, woocommerce shipping -Requires at least: 4.4 +Requires at least: 5.9 Tested up to: 6.9 Stable tag: 1.4.1 License: GPLv2 diff --git a/gls-shipping-for-woocommerce.php b/gls-shipping-for-woocommerce.php index 8611af6..b8c0905 100644 --- a/gls-shipping-for-woocommerce.php +++ b/gls-shipping-for-woocommerce.php @@ -173,16 +173,16 @@ public function handle_label_download() } // Verify nonce - if (!isset($_GET['nonce']) || !wp_verify_nonce(sanitize_text_field($_GET['nonce']), 'gls_download_label')) { + if (!isset($_GET['nonce']) || !wp_verify_nonce(sanitize_text_field(wp_unslash($_GET['nonce'])), 'gls_download_label')) { wp_die(esc_html__('Invalid security token. Please refresh the page and try again.', 'gls-shipping-for-woocommerce')); } // Check user permissions if (!current_user_can('edit_shop_orders')) { - wp_die(__('You do not have permission to download shipping labels.', 'gls-shipping-for-woocommerce')); + wp_die(esc_html__('You do not have permission to download shipping labels.', 'gls-shipping-for-woocommerce')); } - $file_id = sanitize_file_name($_GET['gls_download_label']); + $file_id = sanitize_file_name(wp_unslash($_GET['gls_download_label'])); $file_path = GLS_LABELS_DIR . '/' . $file_id; // Security check - ensure file is within labels directory @@ -190,22 +190,33 @@ public function handle_label_download() $real_labels_dir = realpath(GLS_LABELS_DIR); if ($real_path === false || strpos($real_path, $real_labels_dir) !== 0) { - wp_die(__('Invalid file path.', 'gls-shipping-for-woocommerce')); + wp_die(esc_html__('Invalid file path.', 'gls-shipping-for-woocommerce')); } if (!file_exists($file_path)) { - wp_die(__('PDF label not found.', 'gls-shipping-for-woocommerce')); + wp_die(esc_html__('PDF label not found.', 'gls-shipping-for-woocommerce')); + } + + // Serve the file using WP_Filesystem + global $wp_filesystem; + if (empty($wp_filesystem)) { + require_once ABSPATH . 'wp-admin/includes/file.php'; + WP_Filesystem(); + } + + $file_contents = $wp_filesystem->get_contents($file_path); + if (false === $file_contents) { + wp_die(esc_html__('Could not read PDF file.', 'gls-shipping-for-woocommerce')); } - // Serve the file header('Content-Type: application/pdf'); header('Content-Disposition: inline; filename="' . basename($file_path) . '"'); header('Content-Transfer-Encoding: binary'); - header('Content-Length: ' . filesize($file_path)); + header('Content-Length: ' . strlen($file_contents)); header('Cache-Control: private, max-age=0, must-revalidate'); header('Pragma: public'); - readfile($file_path); + echo $file_contents; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Binary PDF data exit; } @@ -259,6 +270,7 @@ public static function get_secure_label_url($order_id) public function load_textdomain() { + // phpcs:ignore PluginCheck.CodeAnalysis.DiscouragedFunctions.load_plugin_textdomainFound -- Manual loading needed for non-wp.org distribution load_plugin_textdomain('gls-shipping-for-woocommerce', false, basename(dirname(__FILE__)) . '/languages/'); } diff --git a/includes/admin/class-gls-shipping-bulk.php b/includes/admin/class-gls-shipping-bulk.php index 300339f..4b1b8c2 100644 --- a/includes/admin/class-gls-shipping-bulk.php +++ b/includes/admin/class-gls-shipping-bulk.php @@ -214,7 +214,7 @@ public function process_bulk_gls_label_generation($redirect, $doaction, $order_i ); } } catch (Exception $e) { - // Log the error for debugging + // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_error_log -- Intentional error logging for debugging error_log('GLS Bulk Print Labels Error: ' . $e->getMessage()); // Handle the exception gracefully - redirect with error message @@ -241,6 +241,7 @@ public function bulk_create_print_labels($body) // Check if Labels exist and is an array if (empty($body['Labels']) || !is_array($body['Labels'])) { + // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_error_log -- Intentional error logging for debugging error_log('GLS Bulk Print: No labels found in API response. This may happen if all orders failed validation.'); return false; } @@ -263,6 +264,7 @@ public function bulk_create_print_labels($body) } // Display admin notice after bulk action + // phpcs:disable WordPress.Security.NonceVerification.Recommended -- Display-only notice after redirect, nonce verified in original action public function gls_bulk_action_admin_notice() { if (isset($_REQUEST['bulk_action'])) { // Sanitize the bulk action parameter @@ -287,8 +289,8 @@ public function gls_bulk_action_admin_notice() { // Prepare success message $message = sprintf( + /* translators: %s: number of generated labels */ _n( - /* translators: %s: number of generated labels */ '%s GLS label was successfully generated.', '%s GLS labels were successfully generated.', $generated, @@ -296,12 +298,12 @@ public function gls_bulk_action_admin_notice() { ), number_format_i18n($generated) ); - + // Add failure message if any labels failed to generate if ($failed > 0) { $message .= ' ' . sprintf( + /* translators: %s: number of failed labels */ _n( - /* translators: %s: number of failed labels */ '%s label failed to generate.', '%s labels failed to generate.', $failed, @@ -327,7 +329,7 @@ public function gls_bulk_action_admin_notice() { if (isset($_REQUEST['gls_labels_printed']) && isset($_REQUEST['gls_pdf_url'])) { $printed = intval($_REQUEST['gls_labels_printed']); $failed = isset($_REQUEST['gls_labels_failed']) ? intval($_REQUEST['gls_labels_failed']) : 0; - $pdf_url = esc_url_raw(urldecode($_REQUEST['gls_pdf_url'])); + $pdf_url = esc_url_raw(urldecode(sanitize_text_field(wp_unslash($_REQUEST['gls_pdf_url'])))); // Sanitize failed_orders - only allow integers (order IDs) $failed_orders = array(); @@ -344,8 +346,8 @@ public function gls_bulk_action_admin_notice() { // Prepare success message $message = sprintf( + /* translators: %s: number of orders processed */ _n( - /* translators: %s: number of orders processed */ 'GLS label for %s order has been generated. ', 'GLS labels for %s orders have been generated. ', $printed, @@ -357,8 +359,8 @@ public function gls_bulk_action_admin_notice() { // Add failure message if any labels failed to generate if ($failed > 0) { $message .= sprintf( + /* translators: %s: number of failed labels */ _n( - /* translators: %s: number of failed labels */ '%s label failed to generate. ', '%s labels failed to generate. ', $failed, @@ -368,12 +370,13 @@ public function gls_bulk_action_admin_notice() { ); if (!empty($failed_orders)) { $message .= sprintf( + /* translators: %s: comma-separated list of order IDs that failed */ __('Failed order IDs: %s', 'gls-shipping-for-woocommerce'), esc_html(implode(', ', $failed_orders)) ); } } - + $message .= sprintf( /* translators: %s: URL to download the PDF file */ __('
Click here to download the PDF', 'gls-shipping-for-woocommerce'), @@ -390,7 +393,8 @@ public function gls_bulk_action_admin_notice() { // Display specific error message if available if (isset($_REQUEST['gls_error_message']) && !empty($_REQUEST['gls_error_message'])) { - $error_detail = sanitize_text_field(urldecode($_REQUEST['gls_error_message'])); + // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- Sanitized via sanitize_text_field after urldecode + $error_detail = sanitize_text_field(urldecode(wp_unslash($_REQUEST['gls_error_message']))); $message .= ' ' . sprintf( /* translators: %s: error message from GLS API */ __('Error: %s', 'gls-shipping-for-woocommerce'), @@ -406,6 +410,7 @@ public function gls_bulk_action_admin_notice() { } } } + // phpcs:enable WordPress.Security.NonceVerification.Recommended // Enqueue bulk styles public function admin_enqueue_styles() @@ -506,9 +511,9 @@ private function display_parcel_ids($order_id) } } - // Display the tracking numbers + // Display the tracking numbers (each element is already escaped with esc_html()) if (!empty($tracking_numbers)) { - echo implode(' ', $tracking_numbers); + echo wp_kses_post( implode(' ', $tracking_numbers) ); } else { echo '-'; } diff --git a/includes/admin/class-gls-shipping-label-migration.php b/includes/admin/class-gls-shipping-label-migration.php index 6a33959..9e7d44e 100644 --- a/includes/admin/class-gls-shipping-label-migration.php +++ b/includes/admin/class-gls-shipping-label-migration.php @@ -116,21 +116,24 @@ private function has_orders_needing_migration() Automattic\WooCommerce\Utilities\OrderUtil::custom_orders_table_usage_is_enabled()) { // HPOS enabled $table = $wpdb->prefix . 'wc_orders_meta'; + // phpcs:disable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.PreparedSQL.InterpolatedNotPrepared, PluginCheck.Security.DirectDB.UnescapedDBParameter -- Table name uses $wpdb->prefix + constant $exists = $wpdb->get_var($wpdb->prepare( - "SELECT 1 FROM {$table} - WHERE meta_key = '_gls_print_label' - AND meta_value LIKE %s + "SELECT 1 FROM {$table} + WHERE meta_key = '_gls_print_label' + AND meta_value LIKE %s AND meta_value NOT LIKE %s LIMIT 1", '%/wp-content/uploads/%', '%gls_download_label%' )); + // phpcs:enable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.PreparedSQL.InterpolatedNotPrepared, PluginCheck.Security.DirectDB.UnescapedDBParameter } else { // Legacy post meta + // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching -- Using $wpdb->postmeta property $exists = $wpdb->get_var($wpdb->prepare( - "SELECT 1 FROM {$wpdb->postmeta} - WHERE meta_key = '_gls_print_label' - AND meta_value LIKE %s + "SELECT 1 FROM {$wpdb->postmeta} + WHERE meta_key = '_gls_print_label' + AND meta_value LIKE %s AND meta_value NOT LIKE %s LIMIT 1", '%/wp-content/uploads/%', @@ -156,22 +159,25 @@ private function get_orders_needing_migration($limit) Automattic\WooCommerce\Utilities\OrderUtil::custom_orders_table_usage_is_enabled()) { // HPOS enabled $table = $wpdb->prefix . 'wc_orders_meta'; + // phpcs:disable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.PreparedSQL.InterpolatedNotPrepared, PluginCheck.Security.DirectDB.UnescapedDBParameter -- Table name uses $wpdb->prefix + constant $order_ids = $wpdb->get_col($wpdb->prepare( - "SELECT order_id FROM {$table} - WHERE meta_key = '_gls_print_label' - AND meta_value LIKE %s + "SELECT order_id FROM {$table} + WHERE meta_key = '_gls_print_label' + AND meta_value LIKE %s AND meta_value NOT LIKE %s LIMIT %d", '%/wp-content/uploads/%', '%gls_download_label%', $limit )); + // phpcs:enable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.PreparedSQL.InterpolatedNotPrepared, PluginCheck.Security.DirectDB.UnescapedDBParameter } else { // Legacy post meta + // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching -- Using $wpdb->postmeta property $order_ids = $wpdb->get_col($wpdb->prepare( - "SELECT post_id FROM {$wpdb->postmeta} - WHERE meta_key = '_gls_print_label' - AND meta_value LIKE %s + "SELECT post_id FROM {$wpdb->postmeta} + WHERE meta_key = '_gls_print_label' + AND meta_value LIKE %s AND meta_value NOT LIKE %s LIMIT %d", '%/wp-content/uploads/%', @@ -278,7 +284,7 @@ private function migrate_single_label($order_id) $order->save(); // Delete old file - @unlink($old_path); + wp_delete_file($old_path); return true; } @@ -330,13 +336,13 @@ private function cleanup_orphaned_labels() continue; } foreach ($files as $file) { - if (@unlink($file)) { - $deleted_count++; - } + wp_delete_file($file); + $deleted_count++; } } if ($deleted_count > 0) { + // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_error_log -- Intentional logging for migration process error_log("GLS Migration: Cleaned up {$deleted_count} orphaned label files from old uploads folders."); } } @@ -373,7 +379,7 @@ public function handle_old_label_fallback() } // Verify nonce - if (!wp_verify_nonce(sanitize_text_field($_GET['nonce']), 'gls_old_label_access')) { + if (!wp_verify_nonce(sanitize_text_field(wp_unslash($_GET['nonce'])), 'gls_old_label_access')) { wp_die(esc_html__('Invalid security token.', 'gls-shipping-for-woocommerce')); } @@ -403,15 +409,26 @@ public function handle_old_label_fallback() wp_die(esc_html__('PDF label file not found.', 'gls-shipping-for-woocommerce')); } - // Serve the file + // Serve the file using WP_Filesystem + global $wp_filesystem; + if (empty($wp_filesystem)) { + require_once ABSPATH . 'wp-admin/includes/file.php'; + WP_Filesystem(); + } + + $file_contents = $wp_filesystem->get_contents($file_path); + if (false === $file_contents) { + wp_die(esc_html__('Could not read PDF file.', 'gls-shipping-for-woocommerce')); + } + header('Content-Type: application/pdf'); header('Content-Disposition: inline; filename="' . basename($file_path) . '"'); header('Content-Transfer-Encoding: binary'); - header('Content-Length: ' . filesize($file_path)); + header('Content-Length: ' . strlen($file_contents)); header('Cache-Control: private, max-age=0, must-revalidate'); header('Pragma: public'); - readfile($file_path); + echo $file_contents; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Binary PDF data exit; } } diff --git a/includes/admin/class-gls-shipping-order.php b/includes/admin/class-gls-shipping-order.php index f971180..fbbad6e 100644 --- a/includes/admin/class-gls-shipping-order.php +++ b/includes/admin/class-gls-shipping-order.php @@ -182,7 +182,7 @@ public function gls_shipping_info_meta_box_content($order_or_post_id) @@ -241,7 +243,7 @@ public function gls_shipping_info_meta_box_content($order_or_post_id)
+

id)); ?>

@@ -497,6 +501,7 @@ private function render_history_pagination($data, $search = '', $status_filter = ?>
+ 1): ?> @@ -540,6 +545,7 @@ private function render_history_pagination($data, $search = '', $status_filter = /** * Process pickup form submission + * Nonce verified in calling method (render_pickup_page) */ private function process_pickup_form() { @@ -548,6 +554,7 @@ private function process_pickup_form() return new WP_Error('permission_denied', __('Permission denied.', 'gls-shipping-for-woocommerce')); } + // phpcs:disable WordPress.Security.NonceVerification.Missing -- Nonce verified in render_pickup_page() before calling this method try { // Get all addresses for validation $all_addresses = GLS_Shipping_Sender_Address_Helper::get_all_addresses_with_store_fallback(); @@ -565,16 +572,16 @@ private function process_pickup_form() return new WP_Error('invalid_package_count', __('Package count must be at least 1.', 'gls-shipping-for-woocommerce')); } - $pickup_date_from = sanitize_text_field($_POST['pickup_date_from'] ?? ''); - $pickup_date_to = sanitize_text_field($_POST['pickup_date_to'] ?? ''); - + $pickup_date_from = isset($_POST['pickup_date_from']) ? sanitize_text_field(wp_unslash($_POST['pickup_date_from'])) : ''; + $pickup_date_to = isset($_POST['pickup_date_to']) ? sanitize_text_field(wp_unslash($_POST['pickup_date_to'])) : ''; + if (empty($pickup_date_from) || empty($pickup_date_to)) { return new WP_Error('missing_dates', __('Pickup dates are required.', 'gls-shipping-for-woocommerce')); } // Combine date and time fields - $pickup_time_from = !empty($_POST['pickup_time_from']) ? sanitize_text_field($_POST['pickup_time_from']) : '08:00'; - $pickup_time_to = !empty($_POST['pickup_time_to']) ? sanitize_text_field($_POST['pickup_time_to']) : '17:00'; + $pickup_time_from = !empty($_POST['pickup_time_from']) ? sanitize_text_field(wp_unslash($_POST['pickup_time_from'])) : '08:00'; + $pickup_time_to = !empty($_POST['pickup_time_to']) ? sanitize_text_field(wp_unslash($_POST['pickup_time_to'])) : '17:00'; $pickup_datetime_from = $pickup_date_from . ' ' . $pickup_time_from; $pickup_datetime_to = $pickup_date_to . ' ' . $pickup_time_to; @@ -608,6 +615,7 @@ private function process_pickup_form() } catch (Exception $e) { return new WP_Error('api_error', $e->getMessage()); } + // phpcs:enable WordPress.Security.NonceVerification.Missing } } diff --git a/includes/admin/class-gls-shipping-product-restrictions.php b/includes/admin/class-gls-shipping-product-restrictions.php index 0de3dd1..cf3fc74 100644 --- a/includes/admin/class-gls-shipping-product-restrictions.php +++ b/includes/admin/class-gls-shipping-product-restrictions.php @@ -49,6 +49,7 @@ public function add_product_shipping_restriction_field() */ public function save_product_shipping_restriction_field($post_id) { + // phpcs:ignore WordPress.Security.NonceVerification.Missing -- WooCommerce handles nonce verification for product meta $restrict_parcel_shipping = isset($_POST['_gls_restrict_parcel_shipping']) ? 'yes' : 'no'; update_post_meta($post_id, '_gls_restrict_parcel_shipping', $restrict_parcel_shipping); } diff --git a/includes/api/class-gls-shipping-api-service.php b/includes/api/class-gls-shipping-api-service.php index 5a9a007..c3ccc1d 100644 --- a/includes/api/class-gls-shipping-api-service.php +++ b/includes/api/class-gls-shipping-api-service.php @@ -92,21 +92,21 @@ public function send_order($post_fields, $is_multi = false) $error_message .= ': ' . esc_html($body['Message']); } $this->log_error($error_message, $post_fields); - throw new Exception($error_message); + throw new Exception(esc_html($error_message)); } // Check for JSON decode errors if (json_last_error() !== JSON_ERROR_NONE) { $error_message = 'Invalid JSON response from GLS API: ' . json_last_error_msg(); $this->log_error($error_message, $post_fields); - throw new Exception($error_message); + throw new Exception(esc_html($error_message)); } // Check for general API errors (authentication, authorization, etc.) if (isset($body['ErrorCode']) && $body['ErrorCode'] !== 0) { $error_message = isset($body['ErrorDescription']) ? esc_html($body['ErrorDescription']) : 'Unknown GLS API error'; $this->log_error($error_message, $post_fields); - throw new Exception($error_message); + throw new Exception(esc_html($error_message)); } $failed_orders = []; @@ -119,7 +119,7 @@ public function send_order($post_fields, $is_multi = false) // If ClientReferenceList is empty, this is likely a general error (like authentication) if (empty($error['ClientReferenceList'])) { $this->log_error($error_message, $post_fields); - throw new Exception($error_message); + throw new Exception(esc_html($error_message)); } // Process order-specific errors @@ -196,7 +196,7 @@ public function get_parcel_status($parcel_number) $error_message = 'Tracking error: ' . implode(', ', $errors); // Also log the error with more context $this->log_error($error_message . ' (Parcel Number: ' . $parcel_number . ')', $post_fields); - throw new Exception($error_message); + throw new Exception(esc_html($error_message)); } return $body; @@ -218,9 +218,10 @@ private function sanitize_params_for_logging($params) private function log_error($error_message, $params) { $sanitized_params = $this->sanitize_params_for_logging($params); - error_log('** API request to: ' . $this->api_url . ' FAILED ** - Request Params: {' . wp_json_encode($sanitized_params) . '} - Error: ' . $error_message . ' + // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_error_log -- Intentional API error logging for debugging + error_log('** API request to: ' . $this->api_url . ' FAILED ** + Request Params: {' . wp_json_encode($sanitized_params) . '} + Error: ' . $error_message . ' ** END **'); } @@ -235,10 +236,11 @@ private function log_response($body, $response, $params) if (isset($body['POD']) && $body['POD']) { $body['POD'] = 'SANITIZED'; } - - error_log('** API request to: ' . $this->api_url . ' SUCCESS ** - Request Params: {' . wp_json_encode($sanitized_params) . '} - Response Body: ' . wp_json_encode($body) . ' + + // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_error_log -- Intentional API response logging for debugging + error_log('** API request to: ' . $this->api_url . ' SUCCESS ** + Request Params: {' . wp_json_encode($sanitized_params) . '} + Response Body: ' . wp_json_encode($body) . ' ** END **'); } } diff --git a/includes/api/class-gls-shipping-pickup-api-service.php b/includes/api/class-gls-shipping-pickup-api-service.php index af29293..d49e76d 100644 --- a/includes/api/class-gls-shipping-pickup-api-service.php +++ b/includes/api/class-gls-shipping-pickup-api-service.php @@ -62,7 +62,7 @@ private function convert_date_to_dotnet_format($date_string) // Handle invalid date if ($timestamp === false) { - throw new Exception('Invalid date format: ' . $date_string); + throw new Exception(esc_html('Invalid date format: ' . $date_string)); } return '/Date(' . ($timestamp * 1000) . ')/'; @@ -141,36 +141,36 @@ private function send_pickup_request($api_url, $request_data) if (is_wp_error($response)) { $error_message = $response->get_error_message(); - throw new Exception('Error communicating with GLS API: ' . $error_message); + throw new Exception(esc_html('Error communicating with GLS API: ' . $error_message)); } $body = json_decode(wp_remote_retrieve_body($response), true); $response_code = wp_remote_retrieve_response_code($response); if ($response_code !== 200) { - throw new Exception('GLS API returned error code: ' . $response_code); + throw new Exception(esc_html('GLS API returned error code: ' . $response_code)); } // Check for API errors if (isset($body['ErrorCode']) && $body['ErrorCode'] !== 0) { $error_message = isset($body['ErrorDescription']) ? $body['ErrorDescription'] : 'Unknown API error'; - throw new Exception('GLS API Error: ' . $error_message); + throw new Exception(esc_html('GLS API Error: ' . $error_message)); } // Check for pickup request specific errors if (isset($body['PickupRequestErrors']) && !empty($body['PickupRequestErrors'])) { $pickup_errors = $body['PickupRequestErrors']; $error_messages = array(); - + foreach ($pickup_errors as $error) { if (isset($error['ErrorCode']) && $error['ErrorCode'] !== 0) { $error_msg = isset($error['ErrorDescription']) ? $error['ErrorDescription'] : 'Unknown pickup error'; $error_messages[] = $error_msg; } } - + if (!empty($error_messages)) { - throw new Exception('GLS Pickup Error: ' . implode('; ', $error_messages)); + throw new Exception(esc_html('GLS Pickup Error: ' . implode('; ', $error_messages))); } } @@ -212,6 +212,7 @@ private function log_pickup_response($response, $request_data) 'response' => $response ); + // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_error_log -- Intentional API logging for debugging error_log('GLS Pickup API Response: ' . wp_json_encode($log_entry)); } @@ -227,6 +228,7 @@ private function log_pickup_error($error_message, $pickup_data) 'request_data' => $pickup_data // pickup_data doesn't contain credentials, safe to log ); + // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_error_log -- Intentional API error logging for debugging error_log('GLS Pickup API Error: ' . wp_json_encode($log_entry)); } } diff --git a/includes/methods/class-gls-shipping-method-parcel-locker-zones.php b/includes/methods/class-gls-shipping-method-parcel-locker-zones.php index 4869e73..46482fc 100644 --- a/includes/methods/class-gls-shipping-method-parcel-locker-zones.php +++ b/includes/methods/class-gls-shipping-method-parcel-locker-zones.php @@ -1,4 +1,7 @@ array( 'title' => __('Weight Based Rates: max_weight|cost', 'gls-shipping-for-woocommerce'), 'type' => 'textarea', + /* translators: %s: weight unit (e.g. kg, lbs) */ 'description' => sprintf(__('Optional: Enter weight based rates (one per line). Format: max_weight|cost. Example: 1|100 means up to 1 %s costs 100. Leave empty to use default price.', 'gls-shipping-for-woocommerce'), $weight_unit), 'default' => '', 'placeholder' => 'max_weight|cost diff --git a/includes/methods/class-gls-shipping-method-parcel-shop-zones.php b/includes/methods/class-gls-shipping-method-parcel-shop-zones.php index 2d6f124..2baca3b 100644 --- a/includes/methods/class-gls-shipping-method-parcel-shop-zones.php +++ b/includes/methods/class-gls-shipping-method-parcel-shop-zones.php @@ -1,4 +1,7 @@ array( 'title' => __('Weight Based Rates: max_weight|cost', 'gls-shipping-for-woocommerce'), 'type' => 'textarea', + /* translators: %s: weight unit (e.g. kg, lbs) */ 'description' => sprintf(__('Optional: Enter weight based rates (one per line). Format: max_weight|cost. Example: 1|100 means up to 1 %s costs 100. Leave empty to use default price.', 'gls-shipping-for-woocommerce'), $weight_unit), 'default' => '', 'placeholder' => 'max_weight|cost diff --git a/includes/methods/class-gls-shipping-method-parcel-shop.php b/includes/methods/class-gls-shipping-method-parcel-shop.php index ce597ea..af56a44 100644 --- a/includes/methods/class-gls-shipping-method-parcel-shop.php +++ b/includes/methods/class-gls-shipping-method-parcel-shop.php @@ -1,4 +1,7 @@ array( 'title' => __('Weight Based Rates: max_weight|cost', 'gls-shipping-for-woocommerce'), 'type' => 'textarea', + /* translators: %s: weight unit (e.g. kg, lbs) */ 'description' => sprintf(__('Optional: Enter weight based rates (one per line). Format: max_weight|cost. Example: 1|100 means up to 1 %s costs 100. Leave empty to use default price.', 'gls-shipping-for-woocommerce'), $weight_unit), 'default' => '', 'placeholder' => 'max_weight|cost diff --git a/includes/methods/class-gls-shipping-method-zones.php b/includes/methods/class-gls-shipping-method-zones.php index fe2ecea..7117793 100644 --- a/includes/methods/class-gls-shipping-method-zones.php +++ b/includes/methods/class-gls-shipping-method-zones.php @@ -1,4 +1,7 @@ array( 'title' => __('Weight Based Rates: max_weight|cost', 'gls-shipping-for-woocommerce'), 'type' => 'textarea', + /* translators: %s: weight unit (e.g. kg, lbs) */ 'description' => sprintf(__('Optional: Enter weight based rates (one per line). Format: max_weight|cost. Example: 1|100 means up to 1 %s costs 100. Leave empty to use default price.', 'gls-shipping-for-woocommerce'), $weight_unit), 'default' => '', 'placeholder' => 'max_weight|cost diff --git a/includes/methods/class-gls-shipping-method.php b/includes/methods/class-gls-shipping-method.php index fdee58c..c8644fe 100644 --- a/includes/methods/class-gls-shipping-method.php +++ b/includes/methods/class-gls-shipping-method.php @@ -1,4 +1,7 @@ array( 'title' => __('Weight Based Rates: max_weight|cost', 'gls-shipping-for-woocommerce'), 'type' => 'textarea', + /* translators: %s: weight unit (e.g. kg, lbs) */ 'description' => sprintf(__('Optional: Enter weight based rates (one per line). Format: max_weight|cost. Example: 1|100 means up to 1 %s costs 100. Leave empty to use default price.', 'gls-shipping-for-woocommerce'), $weight_unit), 'default' => '', 'placeholder' => 'max_weight|cost @@ -361,7 +365,7 @@ public function generate_sender_addresses_grid_html($key, $data) ?> - +
@@ -370,19 +374,19 @@ public function generate_sender_addresses_grid_html($key, $data) - - - + + +
- has_default_address($addresses), true); ?> class="address-default-radio" /> + has_default_address($addresses), true); ?> class="address-default-radio" /> - + @@ -397,9 +401,9 @@ public function generate_sender_addresses_grid_html($key, $data) ?>
- +
- get_description_html($data); ?> + get_description_html($data) ); ?> @@ -431,7 +435,7 @@ public function generate_gls_accounts_grid_html($key, $data) ?> - +
@@ -440,9 +444,9 @@ public function generate_gls_accounts_grid_html($key, $data) - - - + + + @@ -455,9 +459,9 @@ public function generate_gls_accounts_grid_html($key, $data) ?>
- +
- get_description_html($data); ?> + get_description_html($data) ); ?> @@ -501,28 +505,28 @@ private function render_address_row($index, $address = array()) 'is_default' => false )); ?> - + - class="address-default-radio" /> + class="address-default-radio" /> - - + + - - - - - - - - - - + + + + + + + + + + false )); ?> - + - class="account-active-radio" /> + class="account-active-radio" /> - - + + - - - - - - - + + + + + + + get_field_key('gls_accounts_grid')]) ? $_POST[$this->get_field_key('gls_accounts_grid')] : array(); + // phpcs:ignore WordPress.Security.NonceVerification.Missing, WordPress.Security.ValidatedSanitizedInput -- WooCommerce handles nonce, data sanitized below + $accounts_data = isset($_POST[$this->get_field_key('gls_accounts_grid')]) ? wp_unslash($_POST[$this->get_field_key('gls_accounts_grid')]) : array(); // Check if there are any accounts with required credentials $has_valid_accounts = false; diff --git a/includes/public/class-gls-shipping-assets.php b/includes/public/class-gls-shipping-assets.php index 52e85cb..4952f0c 100644 --- a/includes/public/class-gls-shipping-assets.php +++ b/includes/public/class-gls-shipping-assets.php @@ -110,6 +110,7 @@ private static function get_locker_filter_saturation() public static function add_module_type_attribute($tag, $handle, $src) { if ('gls-shipping-dpm' === $handle) { + // phpcs:ignore WordPress.WP.EnqueuedResources.NonEnqueuedScript -- Modifying already-enqueued script via script_loader_tag filter $tag = ''; } return $tag; @@ -126,6 +127,7 @@ public static function admin_enqueue_scripts() // Check if we're on order pages OR shipping settings page $isOrderPage = ($screenID === "shop_order" || $screenID === "woocommerce_page_wc-orders" || $screenID === "edit-shop_order"); + // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Read-only check for page identification $isShippingSettingsPage = ($screenID === "woocommerce_page_wc-settings" && isset($_GET['tab']) && $_GET['tab'] === 'shipping'); if ($isOrderPage || $isShippingSettingsPage) { diff --git a/includes/public/class-gls-shipping-checkout.php b/includes/public/class-gls-shipping-checkout.php index 0a4cb6b..cce02c0 100644 --- a/includes/public/class-gls-shipping-checkout.php +++ b/includes/public/class-gls-shipping-checkout.php @@ -63,6 +63,7 @@ public function validate_gls_parcel_shop_selection() // Check if GLS shipping method is selected if (array_intersect($this->map_selection_methods, $chosen_shipping_methods)) { // Check if the required GLS info is set and not empty + // phpcs:ignore WordPress.Security.NonceVerification.Missing -- WooCommerce handles nonce verification for checkout if (empty($_POST['gls_pickup_info'])) { wc_add_notice(__('Please select a parcel locker/shop by clicking on Select Parcel button.', 'gls-shipping-for-woocommerce'), 'error'); } @@ -119,16 +120,18 @@ public function save_gls_parcel_shop_info($order_id) $order = wc_get_order($order_id); $shipping_methods = $order->get_shipping_methods(); + // phpcs:disable WordPress.Security.NonceVerification.Missing -- WooCommerce handles nonce verification for checkout foreach ($shipping_methods as $shipping_method) { if (in_array($shipping_method->get_method_id(), $this->map_selection_methods)) { if (!empty($_POST['gls_pickup_info'])) { - $gls_pickup_info = sanitize_text_field(stripslashes($_POST['gls_pickup_info'])); + $gls_pickup_info = sanitize_text_field(wp_unslash($_POST['gls_pickup_info'])); $order->update_meta_data('_gls_pickup_info', $gls_pickup_info); $order->save(); } break; } } + // phpcs:enable WordPress.Security.NonceVerification.Missing } } diff --git a/languages/gls-shipping-for-woocommerce-cs_CZ.l10n.php b/languages/gls-shipping-for-woocommerce-cs_CZ.l10n.php index d9f090a..173c9a0 100644 --- a/languages/gls-shipping-for-woocommerce-cs_CZ.l10n.php +++ b/languages/gls-shipping-for-woocommerce-cs_CZ.l10n.php @@ -1,4 +1,7 @@ '','report-msgid-bugs-to'=>'https://wordpress.org/support/plugin/gls-wp','pot-creation-date'=>'2025-08-22T09:50:00+00:00','po-revision-date'=>'2025-12-18 21:07+0000','last-translator'=>'','language-team'=>'Czech','language'=>'cs_CZ','mime-version'=>'1.0','content-type'=>'text/plain; charset=UTF-8','content-transfer-encoding'=>'8bit','plural-forms'=>'nplurals=3; plural=( n == 1 ) ? 0 : ( n >= 2 && n <= 4 ) ? 1 : 2;','x-generator'=>'Loco https://localise.biz/','x-loco-version'=>'2.8.0; wp-6.8.1; php-8.2.17','messages'=>['%d items'=>'%d položek','%s GLS label was successfully generated.'=>'%s štítek GLS byl úspěšně vygenerován.' . "\0" . '%s štítek GLS byl úspěšně vygenerován.' . "\0" . '%s štítek GLS byl úspěšně vygenerován.','%s label failed to generate.'=>'Štítek %s se nepodařilo vygenerovat.' . "\0" . 'Štítek %s se nepodařilo vygenerovat.' . "\0" . 'Štítek %s se nepodařilo vygenerovat.','%s label failed to generate. '=>'Štítek %s se nepodařilo vygenerovat.' . "\0" . 'Štítek %s se nepodařilo vygenerovat.' . "\0" . 'Štítek %s se nepodařilo vygenerovat.','24H Service'=>'24H služba','
Click here to download the PDF'=>'
Klikněte zde pro stažení PDF','Account'=>'Účet','Account Mode'=>'Režim účtu','Actions'=>'Akce','Active'=>'Aktivní','Add New Account'=>'Přidat nový účet','Add New Address'=>'Přidat novou adresu','Address'=>'Adresa','Address:'=>'Adresa:','Addressee Only (AOS)'=>'Pouze adresát (AOS)','Addressee Only Service (AOS)'=>'Addressee Only Service (AOS)','An error occurred while generating the GLS labels PDF.'=>'Při generování PDF štítků GLS došlo k chybě.','API Settings for all of the GLS Shipping Options.'=>'Nastavení API pro všechny možnosti přepravy GLS.','Austria'=>'Rakousko','Availability depends on the country. Can’t be used with FDS and FSS services.'=>'Dostupnost závisí na zemi. Nelze použít se službami FDS a FSS.','Available within specific limits based on the country.'=>'K dispozici v rámci určitých limitů v závislosti na zemi.','Belgium'=>'Belgie','Bulgaria'=>'Bulharsko','Bulk Generate GLS Labels'=>'Hromadné generování štítků GLS','Bulk Print GLS Labels'=>'Hromadný tisk štítků GLS','Can’t be used with T09, T10, and T12 services.'=>'Nelze použít se službami T09, T10 a T12.','Cart total amount above which shipping will be free. Set to 0 to disable.'=>'Celková částka košíku, nad kterou bude doprava zdarma. Nastavením na 0 deaktivujete.','Change Pickup Location'=>'Změnit místo vyzvednutí','Check this box if this product cannot be shipped to parcel shops or parcel lockers. This will hide those shipping options when this product is in the cart.'=>'parcel shopy nebo parcel lockery. Tím se skryjí tyto možnosti dopravy, když je tento produkt v košíku.','Choose between single or multiple GLS accounts.'=>'Vyberte mezi jedním nebo více GLS účty.','Choose the pickup address from configured sender addresses or store default.'=>'Vyberte adresu vyzvednutí z nakonfigurovaných adres odesílatele nebo výchozí adresu obchodu.','Client ID'=>'Klientské ID','COD Reference:'=>'COD reference:','Contact Email'=>'Kontaktní email','Contact Name'=>'Jméno kontaktu','Contact Phone'=>'Kontaktní telefon','Contact Service (CS1)'=>'Kontaktovat službu (CS1)','Content'=>'Obsah','Count'=>'Počet','Country'=>'Země','Country:'=>'Země','Created'=>'Vytvořeno','Croatia'=>'Chorvatsko','Customize how GLS shipping methods are displayed to customers.'=>'Přizpůsobte způsob zobrazení GLS dopravních metod zákazníkům.','Czech Republic'=>'Česká republika','Default'=>'Výchozí','Default Account'=>'Výchozí účet','Delete'=>'Odstranit','Delivery to Address'=>'Doručení na adresu','Delivery to GLC Parcel Locker'=>'Doručení do GLC Parcel Lockeru','Delivery to GLC Parcel Shop'=>'Doručení do GLC Parcel Shopu','Delivery to GLS Parcel Locker'=>'Doručení do GLS Parcel Lockeru','Delivery to GLS Parcel Shop'=>'Doručení do GLS Parcel Shopu','Denmark'=>'Dánsko','Disabled'=>'Vypnuto','Display GLS logo next to shipping methods'=>'Zobrazte logo GLS vedle dopravních metod','Display Options'=>'Možnosti zobrazení','Download GLS Label'=>'Stáhněte si GLS Label','Earliest date and time for pickup.'=>'Nejbližší datum a čas vyzvednutí.','Edit'=>'Upravit','Enable'=>'Povolit','Enable 24H'=>'Povolit 24H','Enable AOS'=>'Povolit AOS','Enable CS1'=>'Povolit CS1','Enable FDS'=>'Povolit FDS','Enable FSS'=>'Povolit FSS','Enable INS'=>'Povolit INS','Enable Logging'=>'Povolit protokolování','Enable logging of GLS API requests and responses'=>'Povolit protokolování požadavků a odpovědí rozhraní GLS API','Enable SM1'=>'Povolit SM1','Enable SM2'=>'Povolit SM2','Enable this shipping globally.'=>'Povolit tuto dopravu globálně.','Enable/Disable each of GLS Services for your store.'=>'Povolit/zakázat jednotlivé služby GLS pro váš obchod.','Enter the format for order reference. Use {{order_id}} where you want the order ID to be inserted.'=>'Zadejte formát odkazu na objednávku. Použijte {{order_id}}, kam chcete vložit ID objednávky.','Enter the shipping price for this method.'=>'Zadejte cenu dopravy pro tento způsob.','Enter your GLS Client ID.'=>'Zadejte své ID klienta GLS.','Enter your GLS Password.'=>'Zadejte své GLS heslo.','Enter your GLS Username.'=>'Zadejte své GLS uživatelské jméno.','Error'=>'Chyba','Express Delivery Service (T09, T10, T12)'=>'Expresní doručovací služba (T09, T10, T12)','Express Delivery Service Time'=>'Čas expresního doručení','Express Service:'=>'Expresní služba:','Failed order IDs: %s'=>'ID neúspěšných objednávek: %s','Filter locker locations on the map for Hungary. Only applies when country is Hungary.'=>'Filtrovat umístění výdejních boxů na mapě pro Maďarsko. Platí pouze v případě, že je země Maďarsko. ','Finland'=>'Finsko','Flexible Delivery (FDS)'=>'Flexibilní doručovací služba (FDS)','Flexible Delivery Service (FDS)'=>'Flexibilní doručovací služba (FDS)','Flexible Delivery SMS (FSS)'=>'Flexibilní SMS doručovací služba (FSS)','Flexible Delivery SMS Service (FSS)'=>'Flexibilní SMS doručovací služba (FSS)','France'=>'Francie','Free Shipping Threshold'=>'Hranice dopravy zdarma','Generate GLS Label'=>'Vygenerovat štítek GLS','Generate Shipping Label'=>'Generoval přepravní štítek','Germany'=>'Německo','Get Parcel Status #%d (%s)'=>'Získat stav zásilky #%d (%s) ','Get Parcel Status (%s)'=>'Získat stav zásilky (%s) diff --git a/languages/gls-shipping-for-woocommerce-hr.l10n.php b/languages/gls-shipping-for-woocommerce-hr.l10n.php index 89fdccd..b4ddba5 100644 --- a/languages/gls-shipping-for-woocommerce-hr.l10n.php +++ b/languages/gls-shipping-for-woocommerce-hr.l10n.php @@ -1,3 +1,6 @@ 'GLS Shipping for WooCommerce 1.0.0','report-msgid-bugs-to'=>'https://wordpress.org/support/plugin/gls-wp','pot-creation-date'=>'2025-08-22T09:50:00+00:00','po-revision-date'=>'2025-12-18 20:46+0000','last-translator'=>'','language-team'=>'Croatian','language'=>'hr','mime-version'=>'1.0','content-type'=>'text/plain; charset=UTF-8','content-transfer-encoding'=>'8bit','plural-forms'=>'nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10 >= 2 && n%10<=4 &&(n%100<10||n%100 >= 20)? 1 : 2;','x-loco-source-locale'=>'en_HR','x-generator'=>'Loco https://localise.biz/','x-domain'=>'gls-shipping-for-woocommerce','x-loco-version'=>'2.6.7; wp-6.5.3','x-loco-parser'=>'loco_parse_po ','messages'=>['%d items'=>'%d stavki','%s GLS label was successfully generated.'=>'%s GLS oznaka je uspješno generirana.' . "\0" . '%s GLS oznake su uspješno generirane.' . "\0" . '%s GLS oznaka je uspješno generirano.','%s label failed to generate.'=>'Generiranje oznake za %s narudžbu nije uspjelo.' . "\0" . 'Generiranje oznaka za %s narudžbe nije uspjelo.' . "\0" . 'Generiranje oznaka za %s narudžbi nije uspjelo.','%s label failed to generate. '=>'Generiranje oznake za %s narudžbu nije uspjelo. ' . "\0" . 'Generiranje oznaka za %s narudžbe nije uspjelo. ' . "\0" . 'Generiranje oznaka za %s narudžbi nije uspjelo. ','24H Service'=>'24H usluga','
Click here to download the PDF'=>'
Kliknite ovdje za preuzimanje PDF-a','Account'=>'Račun','Account Mode'=>'Način računa','Actions'=>'Radnje','Active'=>'Aktivno','Add New Account'=>'Dodaj novi račun','Add New Address'=>'Dodaj novu adresu','Address'=>'Adresa','Address:'=>'Adresa:','Addressee Only (AOS)'=>'Samo primatelj (AOS)','Addressee Only Service (AOS)'=>'Usluga AddresseeOnlyService (AOS)','An error occurred while generating the GLS labels PDF.'=>'Došlo je do pogreške prilikom generiranja PDF-a GLS oznaka.','API Settings for all of the GLS Shipping Options.'=>'API postavke za sve GLS opcije dostave.','Austria'=>'Austrija','Availability depends on the country. Can’t be used with FDS and FSS services.'=>'Dostupnost ovisi o zemlji. Ne može se koristiti s FDS i FSS uslugama.','Available within specific limits based on the country.'=>'Dostupno unutar određenih ograničenja ovisno o zemlji.','Belgium'=>'Belgija','Bulgaria'=>'Bugarska','Bulk Generate GLS Labels'=>'Skupno generiranje GLS naljepnica','Bulk Print GLS Labels'=>'Skupno ispisivanje GLS naljepnica','Can’t be used with T09, T10, and T12 services.'=>'Ne može se koristiti s uslugama T09, T10 i T12.','Cart total amount above which shipping will be free. Set to 0 to disable.'=>'Ukupni iznos košarice iznad kojeg će dostava biti besplatna. Postavite na 0 za onemogućavanje.','Change Pickup Location'=>'Promijeni lokaciju preuzimanja','Check this box if this product cannot be shipped to parcel shops or parcel lockers. This will hide those shipping options when this product is in the cart.'=>'Označite ako ovaj proizvod ne može biti dostavljen u PaketShopove ili Paketomate. Ovo će sakriti te opcije dostave kada je ovaj proizvod u košarici.','Choose between single or multiple GLS accounts.'=>'Odaberite između jednog ili više GLS računa.','Choose the pickup address from configured sender addresses or store default.'=>'Odaberite adresu preuzimanja iz konfiguriranih adresa pošiljaoca ili zadanu adresu trgovine.','Client ID'=>'ID klijenta','COD Reference:'=>'COD referenca:','Contact Email'=>'Kontakt email','Contact Name'=>'Ime kontakta','Contact Phone'=>'Kontakt telefon','Contact Service (CS1)'=>'Usluga ContactService(CS1)','Content'=>'Sadržaj','Count'=>'Broj','Country'=>'Država','Country:'=>'Država:','Created'=>'Kreirano','Croatia'=>'Hrvatska','Customize how GLS shipping methods are displayed to customers.'=>'Prilagodite kako se GLS načini dostave prikazuju kupcima.','Czech Republic'=>'Češka','Default'=>'Zadano','Default Account'=>'Zadani račun','Delete'=>'Obriši','Delivery to Address'=>'Dostava na adresu','Delivery to GLC Parcel Locker'=>'Dostava u GLS Paketomat','Delivery to GLC Parcel Shop'=>'Dostava u GLS PaketShop','Delivery to GLS Parcel Locker'=>'Dostava u GLS Paketomat','Delivery to GLS Parcel Shop'=>'Dostava u GLS PaketShop','Denmark'=>'Danska','Disabled'=>'Onemogućeno','Display GLS logo next to shipping methods'=>'Prikaži GLS logo pored načina dostave','Display Options'=>'Opcije prikaza','Download GLS Label'=>'Preuzmi GLS oznaku','Earliest date and time for pickup.'=>'Najraniji datum i vrijeme za preuzimanje.','Edit'=>'Uredi','Enable'=>'Omogući','Enable 24H'=>'Omogući 24h','Enable AOS'=>'Omogući AOS','Enable CS1'=>'Omogući CS1','Enable FDS'=>'Omogući FDS','Enable FSS'=>'Omogući FSS','Enable INS'=>'Omogući INS','Enable Logging'=>'Omogući bilježenje','Enable logging of GLS API requests and responses'=>'Omogući bilježenje GLS API zahtjeva i odgovora','Enable SM1'=>'Omogući SM1','Enable SM2'=>'Omogući SM2','Enable this shipping globally.'=>'Omogući ovu metodu globalno.','Enable/Disable each of GLS Services for your store.'=>'Omogućite/onemogućite svaku GLS uslugu za svoju trgovinu.','Enter the format for order reference. Use {{order_id}} where you want the order ID to be inserted.'=>'Unesite format za referencu narudžbe. Upotrijebite {{order_id}} gdje želite da se umetne ID narudžbe.','Enter the shipping price for this method.'=>'Unesite cijenu dostave za ovu metodu.','Enter your GLS Client ID.'=>'Unesite svoj GLS ID klijenta.','Enter your GLS Password.'=>'Unesite svoju GLS lozinku.','Enter your GLS Username.'=>'Unesite svoje GLS korisničko ime.','Error'=>'Greška','Express Delivery Service (T09, T10, T12)'=>'Usluga ExpressDeliveryService(T09, T10, T12)','Express Delivery Service Time'=>'Vrijeme usluge ekspresne dostave','Express Service:'=>'Express usluga:','Failed order IDs: %s'=>'Neuspjeli ID-ovi narudžbi: %s','Filter locker locations on the map for Hungary. Only applies when country is Hungary.'=>'Filtriraj lokacije paketnih ormarića na karti za Mađarsku. Primjenjuje se samo kada je država Mađarska.','Finland'=>'Finska','Flexible Delivery (FDS)'=>'Fleksibilna dostava (FDS)','Flexible Delivery Service (FDS)'=>'Usluga FlexDeliveryService (FDS)','Flexible Delivery SMS (FSS)'=>'Fleksibilna dostava SMS (FSS)','Flexible Delivery SMS Service (FSS)'=>'Usluga FlexDeliveryService SMS (FDS)','France'=>'Francuska','Free Shipping Threshold'=>'Prag besplatne dostave','Generate GLS Label'=>'Generiraj GLS oznaku','Generate Shipping Label'=>'Generiraj oznaku za dostavu','Germany'=>'Njemačka','Get Parcel Status #%d (%s)'=>'Dohvati status pošiljke #%d (%s)','Get Parcel Status (%s)'=>'Dohvati status pošiljke (%s)','GLS Accounts'=>'GLS računi','GLS API credentials not configured.'=>'GLS API podaci nisu konfigurirani.','GLS API Settings'=>'GLS API postavke','GLS Delivery to Address'=>'GLS dostava na adresu','GLS label for %s order has been generated. '=>'GLS oznaka za %s narudžbu je generirana. ' . "\0" . 'GLS oznake za %s narudžbe su generirane. ' . "\0" . 'GLS oznaka za %s narudžbi je generirano. ','GLS Parcel Locker'=>'GLS Paketomat','GLS Parcel Shop'=>'GLS PaketShop','GLS Pickup'=>'GLS preuzimanje','GLS pickup location changed to: %s (%s)'=>'GLS lokacija preuzimanja promijenjena u: %s (%s)','GLS Pickup Location:'=>'GLS mjesto preuzimanja:','GLS Pickup Management'=>'Upravljanje GLS preuzimanjima','GLS Services'=>'GLS usluge','GLS Shipping for WooCommerce'=>'GLS Shipping za WooCommerce','GLS Shipping Info'=>'GLS Informacije o dostavi','GLS Shipping Restriction'=>'GLS ograničenje dostave','GLS Tracking Number'=>'GLS broj za praćenje','GLS Tracking Number: '=>'GLS broj za praćenje:','GLS Tracking Numbers:'=>'GLS brojevi za praćenje:','Greece'=>'Grčka','Guaranteed 24h Service (24H)'=>'Usluga Guranteed24hService (24H)','High Volume'=>'Veliki promet','https://inchoo.hr'=>'https://inchoo.hr','Hungary'=>'Mađarska','Hungary Locker Saturation Filter'=>'Filter zasićenosti ormarića u Mađarskoj','ID'=>'ID','ID:'=>'ID:','Inchoo'=>'Inchoo','Insurance (INS)'=>'Osiguranje (INS)','Insurance Service (INS)'=>'Usluga InsuranceService','Invalid sender address selected.'=>'Odabrana je nevažeća adresa pošiljaoca.','Italy'=>'Italija','Latest date and time for pickup.'=>'Najkasniji datum i vrijeme za preuzimanje.','Low Volume'=>'Mali promet','Luxembourg'=>'Luksemburg','Manage multiple GLS accounts. Each account can have different credentials and country settings.'=>'Upravljajte više GLS računa. Svaki račun može imati različite vjerodajnice i postavke zemlje.','Manage multiple sender addresses. Each address can be set as default for shipments.'=>'Upravljajte više adresa pošiljaoca. Svaku adresu možete postaviti kao zadanu za pošiljke.','Mode'=>'Način rada','Multiple accounts mode was not saved because no valid GLS accounts were found. Please add at least one account to use multiple accounts mode.'=>'Način rada s više računa nije spremljen jer nisu pronađeni valjani GLS računi. Dodajte barem jedan račun za korištenje načina rada s više računa.','Multiple GLS Accounts'=>'Više GLS računa','Name'=>'Naziv','Name:'=>'Naziv:','Netherlands'=>'Nizozemska','New Account'=>'Novi račun','New Address'=>'Nova adresa','No custom sender address (use default from store settings)'=>'Nema prilagođene adrese pošiljaoca (koristi zadano iz postavki trgovine)','No pickup requests found.'=>'Nema pronađenih zahtjeva za preuzimanje.','Not available in Serbia.'=>'Nije dostupno u Srbiji.','Not available without FDS service.'=>'Nije dostupno bez FDS usluge.','Number of Packages'=>'Broj paketa','Number of Packages:'=>'Broj paketa:','Offical GLS Shipping for WooCommerce plugin'=>'Službena GLS ekstenzija za WooCommerce','Only in Serbia! REQUIRED'=>'Samo za Srbiju. NEOPHODAN.','Optional: Enter weight based rates (one per line). Format: max_weight|cost. Example: 1|100 means up to 1 %s costs 100. Leave empty to use default price.'=>'Neobavezno: Unesite stope temeljene na težini (jednu po retku). Format: max_težina|trošak. Primjer: 1|100 znači do 1 %s košta 100. Ostavite prazno za korištenje zadane cijene.','Order Reference Format'=>'Format reference narudžbe','Out Of Order'=>'Izvan funkcije','Package Count'=>'Broj paketa','Package count must be at least 1.'=>'Broj paketa mora biti najmanje 1.','Parcel info printed on label. Use placeholders: {{order_id}}, {{customer_comment}}, {{customer_name}}, {{customer_email}}, {{customer_phone}}, {{order_total}}, {{shipping_method}}.'=>'Informacije o pošiljci ispisane na oznaci. Koristi zamjenske oznake: {{order_id}}, {{customer_comment}}, {{customer_name}}, {{customer_email}}, {{customer_phone}}, {{order_total}}, {{shipping_method}}.','Parcel Shop Delivery (PSD) service that ships parcels to the GLS Locker. GLS Parcel Locker can be selected from the interactive GLS Parcel Shop and GLS Locker finder map.'=>'Usluga ParcelShopDelivery (PSD) koja šalje pakete u GLS PaketShopove i Paketomate. GLS Paketomat može se odabrati iz interaktivne karte GLS PaketShopova i GLS Paketomata.','Parcel Shop Delivery (PSD) service that ships parcels to the GLS Parcel Shop. GLS Parcel Shop can be selected from the interactive GLS Parcel Shop and GLS Locker finder map.'=>'Usluga ParcelShopDelivery (PSD) koja šalje pakete u GLS PaketShopove i Paketomate. GLS PaketShop može se odabrati iz interaktivne karte GLS PaketShopova i GLS Paketomata.','Parcels are shipped to the customer’s address.'=>'Paketi se šalju na adresu kupca.','Password'=>'Lozinka','Pending'=>'Na čekanju','Permission denied.'=>'Dozvola odbijena.','Pickup Address'=>'Adresa preuzimanja','Pickup Date From'=>'Datum preuzimanja od','Pickup Date To'=>'Datum preuzimanja do','Pickup dates are required.'=>'Datumi preuzimanja su obavezni.','Pickup Details #%d'=>'Detalji preuzimanja #%d','Pickup From'=>'Preuzimanje od','Pickup History'=>'Povijest preuzimanja','Pickup ID'=>'ID preuzimanja','Pickup Location'=>'Mjesto preuzimanja','Pickup location updated successfully'=>'Lokacija preuzimanja uspješno ažurirana','Pickup not found.'=>'Preuzimanje nije pronađeno.','Pickup scheduled successfully!'=>'Preuzimanje uspješno zakazano!','Pickup To'=>'Preuzimanje do','Please select a parcel locker/shop by clicking on Select Parcel button.'=>'Odaberite Paketomat/PaketShop klikom na gumb Odaberi paket.','Poland'=>'Poljska','Portugal'=>'Portugal','Print Label'=>'Ispiši oznaku','Print Position'=>'Pozicija ispisa','Print Position:'=>'Pozicija ispisa:','Production'=>'Produkcija','Regenerate Shipping Label'=>'Ponovno generiraj oznaku za dostavu','Request Data'=>'Podaci zahtjeva','Request Information'=>'Informacije zahtjeva','Romania'=>'Rumunjska','Sandbox'=>'Sandbox','Schedule a pickup request with GLS to collect packages from your location.'=>'Zakažite zahtjev za preuzimanje s GLS-om za prikupljanje paketa s vaše lokacije.','Schedule Pickup'=>'Zakaži preuzimanje','Select countries to support for this shipping method.'=>'Odaberite zemlje koje podržavaju ovaj način dostave.','Select Parcel Locker'=>'Odaberite paketomat','Select Parcel Shop'=>'Odaberite trgovinu za pakete','Select the country for the GLS service.'=>'Odaberite državu za GLS uslugu.','Select the mode for the GLS API.'=>'Odaberite način rada za GLS API.','Select the Print Position.'=>'Odaberite položaj ispisa.','Select the Printer Type.'=>'Odaberite vrstu pisača.','Selected Address Details:'=>'Detalji odabrane adrese:','Sender Addresses'=>'Adrese pošiljaoca','Sender Identity Card Number. Required for Serbia.'=>'Broj osobne iskaznice pošiljaoca. Obavezno za Srbiju.','Serbia'=>'Srbija','Shipping Price'=>'Cijena dostave','Show GLS Logo'=>'Prikaži GLS logo','Show the GLS logo icon next to all GLS shipping methods in cart and checkout to highlight your GLS delivery options.'=>'Prikažite GLS logo ikonu pored svih GLS načina dostave u košarici i pri plaćanju kako biste istaknuli svoje GLS opcije dostave.','Single GLS Account'=>'Jedan GLS račun','Slovakia'=>'Slovačka','Slovenia'=>'Slovenija','SM1 Service Text'=>'Tekst usluge SM1','SMS Pre-advice (SM2)'=>'SMS prethodna obavijest (SM2)','SMS Pre-advice Service (SM2)'=>'Usluga Pre-AdviceService putem SMS-a (SM2)','SMS Service (SM1)'=>'Usluga SMSService (SM1)','SMS Service Text'=>'Tekst SMSService usluge','SMS Service Text. Variables that can be used in the text of the SMS: #ParcelNr#, #COD#, #PickupDate#, #From_Name#, #ClientRef#.'=>'Tekst SMS usluge. Varijable koje se mogu koristiti u tekstu SMS-a: #ParcelNr#, #COD#, #PickupDate#, #From_Name#, #ClientRef#.','SMS service with a maximum text length of 130.'=>'SMS usluga s maksimalnom dužinom teksta od 130.','SMS Text:'=>'SMS tekst:','Some products in your cart (%s) cannot be shipped to parcel shops or parcel lockers. Only standard delivery options are available.'=>'Neki proizvodi u vašoj košarici (%s) ne mogu se slati u PaketShopove ili Paketomate. Dostupne su samo standardne opcije dostave.','Spain'=>'Španjolska','Status'=>'Status','Store Phone Number'=>'Telefonski broj trgovine','Store Phone number that will be sent to GLS as a contact information.'=>'Telefonski broj trgovine koji će biti poslan GLS-u kao kontakt informacija.','Success'=>'Uspjeh','Supported Countries'=>'Podržane zemlje','Time From'=>'Vrijeme od','Time To'=>'Vrijeme do','Title'=>'Naslov','Title to be display on site'=>'Naslov koji će biti prikazan na stranici','Title to be displayed on site'=>'Naslov prikazan na stranici','Total number of packages to be collected.'=>'Ukupan broj paketa za preuzimanje.','Type of Printer'=>'Vrsta pisača','Updated'=>'Ažurirano','Username'=>'Korisničko ime','Variables: #ParcelNr#, #COD#, #PickupDate#, #From_Name#, #ClientRef#'=>'Varijable: #ParcelNr#, #COD#, #PickupDate#, #From_Name#, #ClientRef#','View'=>'Pogledaj','Weight Based Rates: max_weight|cost'=>'Stope zasnovane na težini: maksimalna_težina|trošak','← Back to History'=>'← Povratak na povijest','⚙️ Advanced Services'=>'⚙️ Napredne usluge']]; diff --git a/languages/gls-shipping-for-woocommerce-hu_HU.l10n.php b/languages/gls-shipping-for-woocommerce-hu_HU.l10n.php index 2e95071..c7f7ef5 100644 --- a/languages/gls-shipping-for-woocommerce-hu_HU.l10n.php +++ b/languages/gls-shipping-for-woocommerce-hu_HU.l10n.php @@ -1,3 +1,6 @@ '','report-msgid-bugs-to'=>'https://wordpress.org/support/plugin/gls-wp','pot-creation-date'=>'2025-08-22T09:50:00+00:00','po-revision-date'=>'2025-12-18 21:08+0000','last-translator'=>'','language-team'=>'Hungarian','language'=>'hu_HU','mime-version'=>'1.0','content-type'=>'text/plain; charset=UTF-8','content-transfer-encoding'=>'8bit','plural-forms'=>'nplurals=2; plural=n != 1;','x-generator'=>'Loco https://localise.biz/','x-loco-version'=>'2.8.0; wp-6.8.1; php-8.2.17','messages'=>['%d items'=>'%d tétel','%s GLS label was successfully generated.'=>'%s GLS címke sikeresen generálva.' . "\0" . '%s GLS címke sikeresen generálva.','%s label failed to generate.'=>'%s címke létrehozása nem sikerült.' . "\0" . '%s címke létrehozása nem sikerült.','%s label failed to generate. '=>'%s címke létrehozása nem sikerült.' . "\0" . '%s címke létrehozása nem sikerült.','24H Service'=>'24H szolgáltatás','
Click here to download the PDF'=>'
Kattintson ide a PDF letöltéséhez','Account'=>'Fiók','Account Mode'=>'Fiók mód','Actions'=>'Műveletek','Active'=>'Aktív','Add New Account'=>'Új fiók hozzáadása','Add New Address'=>'Új cím hozzáadása','Address'=>'Cím','Address:'=>'Cím:','Addressee Only (AOS)'=>'Csak címzett (AOS)','Addressee Only Service (AOS)'=>'Csak címzett szolgáltatás (AOS)','An error occurred while generating the GLS labels PDF.'=>'Hiba történt a GLS-címkék PDF-fájljának generálásakor.','API Settings for all of the GLS Shipping Options.'=>'API beállítások az összes GLS szállítási opcióhoz','Austria'=>'Ausztria','Availability depends on the country. Can’t be used with FDS and FSS services.'=>'Az elérhetőség országtól függő. Nem párosítható FDS és FSS szolgáltatással.','Available within specific limits based on the country.'=>'Országtól függően, bizonyos kereteken belül elérhető.','Belgium'=>'Belgium','Bulgaria'=>'Bulgária','Bulk Generate GLS Labels'=>'GLS-címkék tömeges generálása','Bulk Print GLS Labels'=>'Tömeges nyomtatás GLS címkék','Can’t be used with T09, T10, and T12 services.'=>'Nem párosítható T09, T10 és T12 szolgáltatással.','Cart total amount above which shipping will be free. Set to 0 to disable.'=>'A kosár teljes összege, amely felett a szállítás ingyenes. A letiltáshoz állítsa 0-ra.','Change Pickup Location'=>'Felvételi hely módosítása','Check this box if this product cannot be shipped to parcel shops or parcel lockers. This will hide those shipping options when this product is in the cart.'=>'parcel shopokba vagy parcel lockerekbe. Ez elrejti ezeket a szállítási lehetőségeket, amikor ez a termék a kosárban van.','Choose between single or multiple GLS accounts.'=>'Válasszon egy vagy több GLS fiók között.','Choose the pickup address from configured sender addresses or store default.'=>'Válassza ki a felvételi címet a beállított feladói címek közül, vagy az üzlet alapértelmezett címét.','Client ID'=>'Ügyfél ID','COD Reference:'=>'COD hivatkozás:','Contact Email'=>'Kapcsolati email','Contact Name'=>'Kapcsolati név','Contact Phone'=>'Kapcsolati telefon','Contact Service (CS1)'=>'Kapcsolati szolgáltatás (CS1)','Content'=>'Tartalom','Count'=>'Darabszám','Country'=>'Ország','Country:'=>'Ország:','Created'=>'Létrehozva','Croatia'=>'Horvátország','Customize how GLS shipping methods are displayed to customers.'=>'Testreszabhatja a GLS szállítási módszerek megjelenítését az ügyfelek számára.','Czech Republic'=>'Csehország','Default'=>'Alapértelmezett','Default Account'=>'Alapértelmezett fiók','Delete'=>'Törlés','Delivery to Address'=>'Címre szállítás','Delivery to GLC Parcel Locker'=>'GLS Csomagautomatába szállítás','Delivery to GLC Parcel Shop'=>'GLS Csomagpontba szállítás','Delivery to GLS Parcel Locker'=>'GLS Csomagautomatába szállítás','Delivery to GLS Parcel Shop'=>'GLS Csomagpontba szállítás','Denmark'=>'Dánia','Disabled'=>'Letiltva','Display GLS logo next to shipping methods'=>'GLS logó megjelenítése a szállítási módszerek mellett','Display Options'=>'Megjelenítési beállítások','Download GLS Label'=>'Töltse le a GLS-címkét','Earliest date and time for pickup.'=>'Legkorábbi felvételi dátum és idő.','Edit'=>'Szerkesztés','Enable'=>'Engedélyezd','Enable 24H'=>'Engedélyezd a 24H-t','Enable AOS'=>'Engedélyezd az AOS-t','Enable CS1'=>'Engedélyezd a CS1-et','Enable FDS'=>'Engedélyezd az FDS-t','Enable FSS'=>'Engedélyezd az FSS-t','Enable INS'=>'Engedélyezd az INS-t','Enable Logging'=>'Engedélyezd a naplózást','Enable logging of GLS API requests and responses'=>'Engedélyezd a GLS API lekérések és válaszok naplózását','Enable SM1'=>'Engedélyezd az SM1-et','Enable SM2'=>'Engedélyezd az SM2-t','Enable this shipping globally.'=>'Engedélyezze ezt a globális szállítást.','Enable/Disable each of GLS Services for your store.'=>'Engedélyezd/tiltsd le az egyes GLS szolgáltatásokat az áruházadban.','Enter the format for order reference. Use {{order_id}} where you want the order ID to be inserted.'=>'Írd be a rendelési hivatkozás formátumát. Használd a {{order_id}}-t ott, ahol a rendelési azonosítót be szeretnéd illeszteni.','Enter the shipping price for this method.'=>'Írd be ennek a módszernek a szállítási díját.','Enter your GLS Client ID.'=>'Írd be a GLS ügyfél azonosító számodat.','Enter your GLS Password.'=>'Írd be a GLS jelszavadat.','Enter your GLS Username.'=>'Írd be a GLS felhasználó nevedet.','Error'=>'Hiba','Express Delivery Service (T09, T10, T12)'=>'Határidős kézbesítési szolgáltatás (T09, T10, T12)','Express Delivery Service Time'=>'Határidős kézbesítési szolgáltatás ideje','Express Service:'=>'Express szolgáltatás:','Failed order IDs: %s'=>'Sikertelen rendelésazonosítók: %s','Filter locker locations on the map for Hungary. Only applies when country is Hungary.'=>'Csomagautomaták helyeinek szűrése a térképen Magyarország esetén. Csak akkor érvényes, ha az ország Magyarország.','Finland'=>'Finnország','Flexible Delivery (FDS)'=>'Rugalmas kézbesítési szolgáltatás (FDS)','Flexible Delivery Service (FDS)'=>'Rugalmas kézbesítési szolgáltatás (FDS)','Flexible Delivery SMS (FSS)'=>'Rugalmas kézbesítési szolgáltatás SMS (FSS)','Flexible Delivery SMS Service (FSS)'=>'Rugalmas kézbesítési szolgáltatás SMS (FSS)','France'=>'Franciaország','Free Shipping Threshold'=>'Ingyenes szállítási küszöb','Generate GLS Label'=>'GLS-címke létrehozása','Generate Shipping Label'=>'Szállítási címke létrehozása','Germany'=>'Németország','Get Parcel Status #%d (%s)'=>'Csomag státusz lekérdezése #%d (%s)','Get Parcel Status (%s)'=>'Csomag státusz lekérdezése (%s) ','GLS Accounts'=>'GLS fiókok','GLS API credentials not configured.'=>'GLS API hitelesítő adatok nem konfigurálva.','GLS API Settings'=>'GLS API beállítások','GLS Delivery to Address'=>'GLS címre szállítás','GLS label for %s order has been generated. '=>'A(z) %s rendelés GLS-címkéje létrejött.' . "\0" . 'A(z) %s rendelés GLS-címkéje létrejött.','GLS Parcel Locker'=>'GLS Csomagautomata','GLS Parcel Shop'=>'GLS Csomagpont','GLS Pickup'=>'GLS felvétel','GLS pickup location changed to: %s (%s)'=>'GLS felvételi hely módosult: %s (%s)','GLS Pickup Location:'=>'GLS felvételi cím:','GLS Pickup Management'=>'GLS felvétel kezelése','GLS Services'=>'GLS szolgáltatások','GLS Shipping for WooCommerce'=>'GLS szállítás WooCommerce-hez','GLS Shipping Info'=>'GLS szállítási infó','GLS Shipping Restriction'=>'GLS szállítási korlátozás','GLS Tracking Number'=>'GLS nyomon követési szám','GLS Tracking Number: '=>'GLS nyomon követési szám:','GLS Tracking Numbers:'=>'GLS követési számok:','Greece'=>'Görögország','Guaranteed 24h Service (24H)'=>'Guaranteed 24h Service szolgáltatás (24H)','High Volume'=>'Nagy forgalom','https://inchoo.hr'=>'https://inchoo.hr','Hungary'=>'Magyarország','Hungary Locker Saturation Filter'=>'Magyarországi csomagautomata telítettségi szűrő','ID'=>'Azonosító','ID:'=>'ID:','Inchoo'=>'Inchoo','Insurance (INS)'=>'Biztosítás (INS)','Insurance Service (INS)'=>'Biztosítási szolgáltatás (INS)','Invalid sender address selected.'=>'Érvénytelen feladói cím választva.','Italy'=>'Olaszország','Latest date and time for pickup.'=>'Legutóbbi felvételi dátum és idő.','Low Volume'=>'Alacsony forgalom','Luxembourg'=>'Luxemburg','Manage multiple GLS accounts. Each account can have different credentials and country settings.'=>'Több GLS fiók kezelése. Minden fióknak különböző hitelesítési adatok és országbeállítások lehetnek.','Manage multiple sender addresses. Each address can be set as default for shipments.'=>'Több feladó címének kezelése. Minden cím beállítható alapértelmezettként a szállítmányokhoz.','Mode'=>'Mód','Multiple accounts mode was not saved because no valid GLS accounts were found. Please add at least one account to use multiple accounts mode.'=>'A többfiókos módot nem sikerült menteni, mert nem található érvényes GLS-fiók. Kérjük, adjon hozzá legalább egy fiókot a többfiókos mód használatához.','Multiple GLS Accounts'=>'Több GLS fiók','Name'=>'Név','Name:'=>'Név:','Netherlands'=>'Hollandia','New Account'=>'Új fiók','New Address'=>'Új cím','No custom sender address (use default from store settings)'=>'Nincs egyéni feladói cím (használja az áruház alapértelmezett beállításait)','No pickup requests found.'=>'Nincs felvételi kérés található.','Not available in Serbia.'=>'Nem elérhető Szerbiában.','Not available without FDS service.'=>'FDS szolgáltatás nélkül nem elérhető.','Number of Packages'=>'Csomagok száma','Number of Packages:'=>'Csomagok száma:','Offical GLS Shipping for WooCommerce plugin'=>'Hivatalos GLS szállítási WooCommerce bővítmény','Only in Serbia! REQUIRED'=>'Csak Szerbiában! KÍVÁNT','Optional: Enter weight based rates (one per line). Format: max_weight|cost. Example: 1|100 means up to 1 %s costs 100. Leave empty to use default price.'=>'Nem kötelező: Adja meg a súlyalapú díjakat (soronként egyet). Formátum: max_súly|költség. Példa: 1|100 azt jelenti, hogy 1 %s-ig 100-ba kerül. Hagyja üresen az alapértelmezett ár használatához.','Order Reference Format'=>'Rendelési hivatkozás formátuma','Out Of Order'=>'Üzemen kívül','Package Count'=>'Csomagok száma','Package count must be at least 1.'=>'A csomagok száma legalább 1 kell legyen.','Parcel info printed on label. Use placeholders: {{order_id}}, {{customer_comment}}, {{customer_name}}, {{customer_email}}, {{customer_phone}}, {{order_total}}, {{shipping_method}}.'=>'{{customer_comment}}, {{customer_name}}, {{customer_email}}, {{customer_phone}}, {{order_total}}, {{shipping_method}}.','Parcel Shop Delivery (PSD) service that ships parcels to the GLS Locker. GLS Parcel Locker can be selected from the interactive GLS Parcel Shop and GLS Locker finder map.'=>'Parcel Shop Delivery (PSD) szolgáltatás, amely által a GLS a csomagot Csomagautomatába szállítja. A Csomagautomatát az interaktív CsomagPont és Csomagautomata kereső térképen lehet kiválasztani.','Parcel Shop Delivery (PSD) service that ships parcels to the GLS Parcel Shop. GLS Parcel Shop can be selected from the interactive GLS Parcel Shop and GLS Locker finder map.'=>'Parcel Shop Delivery (PSD) szolgáltatás, amely által a GLS a csomagot CsomagPontba szállítja. A CsomagPontot az interaktív CsomagPont és Csomagautomata kereső térképen lehet kiválasztani.','Parcels are shipped to the customer’s address.'=>'A csomagok az ügyfél címére kerülnek kiszállításra.','Password'=>'Jelszó','Pending'=>'Függőben','Permission denied.'=>'Engedély megtagadva.','Pickup Address'=>'Felvételi cím','Pickup Date From'=>'Felvételi dátum kezdő','Pickup Date To'=>'Felvételi dátum vége','Pickup dates are required.'=>'A felvételi dátumok kötelezőek.','Pickup Details #%d'=>'Felvétel részletei #%d','Pickup From'=>'Felvétel kezdete','Pickup History'=>'Felvétel előzmények','Pickup ID'=>'Felvételi azonosító','Pickup Location'=>'Felvételi cím','Pickup location updated successfully'=>'Felvételi hely sikeresen frissítve','Pickup not found.'=>'Felvétel nem található.','Pickup scheduled successfully!'=>'Felvétel sikeresen ütemezve!','Pickup To'=>'Felvétel vége','Please select a parcel locker/shop by clicking on Select Parcel button.'=>'Válasszon Csomagautomatát/CsomagPont-ot a Válasszon csomagot gombra kattintva.','Poland'=>'Lengyelország','Portugal'=>'Portugália','Print Label'=>'Csomagcímke nyomtatása','Print Position'=>'Nyomtatási pozíció','Print Position:'=>'Nyomtatási pozíció:','Production'=>'Termelés','Regenerate Shipping Label'=>'Szállítási címke újragenerálása','Request Data'=>'Kérési adatok','Request Information'=>'Kérés információi','Romania'=>'Románia','Sandbox'=>'Sandbox','Schedule a pickup request with GLS to collect packages from your location.'=>'Ütemezzen egy felvételi kérést a GLS-szel a csomagok összegyűjtéséhez a helyszínéről.','Schedule Pickup'=>'Felvétel ütemezése','Select countries to support for this shipping method.'=>'Válaszd ki az országokat amelyeknél támogatott ez a szállítási mód.','Select Parcel Locker'=>'Válasszon csomagautomatát','Select Parcel Shop'=>'Válasszon csomagüzletet','Select the country for the GLS service.'=>'Válaszd ki az országot a GLS szolgáltatáshoz.','Select the mode for the GLS API.'=>'Válaszd ki a módot a GLS API-hoz.','Select the Print Position.'=>'Válassza ki a Nyomtatási pozíciót.','Select the Printer Type.'=>'Válassza ki a nyomtató típusát.','Selected Address Details:'=>'Kiválasztott cím részletei:','Sender Addresses'=>'Feladói címek','Sender Identity Card Number. Required for Serbia.'=>'Feladó személyi igazolványának száma. Szerbiában kötelező.','Serbia'=>'Szerbia','Shipping Price'=>'Szállítási díj','Show GLS Logo'=>'GLS logó megjelenítése','Show the GLS logo icon next to all GLS shipping methods in cart and checkout to highlight your GLS delivery options.'=>'Jelenítse meg a GLS logó ikont minden GLS szállítási módszer mellett a kosárban és a fizetésnél a GLS szállítási lehetőségek kiemeléséhez.','Single GLS Account'=>'Egyedi GLS fiók','Slovakia'=>'Szlovákia','Slovenia'=>'Szlovénia','SM1 Service Text'=>'SM1 szolgáltatás szövege','SMS Pre-advice (SM2)'=>'SMS előzetes riport (SM2)','SMS Pre-advice Service (SM2)'=>'SMS előzetes riport szolgáltatás (SM2)','SMS Service (SM1)'=>'SMS szolgáltatás (SM1)','SMS Service Text'=>'SMS szolgáltatás szövege','SMS Service Text. Variables that can be used in the text of the SMS: #ParcelNr#, #COD#, #PickupDate#, #From_Name#, #ClientRef#.'=>'SMS szolgáltatás szövege. Az SMS szövegében használható változók: #ParcelNr#, #COD#, #PickupDate#, #From_Name#, #ClientRef#.','SMS service with a maximum text length of 130.'=>'SMS szolgáltatás szöveghossza maximum 130 karakter.','SMS Text:'=>'SMS szöveg:','Some products in your cart (%s) cannot be shipped to parcel shops or parcel lockers. Only standard delivery options are available.'=>'A kosaradban lévő egyes termékek (%s) nem szállíthatók parcel shopokba vagy parcel lockerekbe. Csak a szabványos szállítási lehetőségek érhetők el.','Spain'=>'Spanyolország','Status'=>'Állapot','Store Phone Number'=>'Az üzlet telefonszáma','Store Phone number that will be sent to GLS as a contact information.'=>'Tárolja a telefonszámot, amelyet kapcsolatfelvételi adatként küldünk el a GLS-nek.','Success'=>'Sikeres','Supported Countries'=>'Támogatott országok','Time From'=>'Időponttól','Time To'=>'Időpontig','Title'=>'Név','Title to be display on site'=>'Az oldalon megjelenítendő megnevezés','Title to be displayed on site'=>'A címet a helyszínen kell megjeleníteni','Total number of packages to be collected.'=>'Összesen gyűjtendő csomagok száma.','Type of Printer'=>'Nyomtató típusa','Updated'=>'Frissítve','Username'=>'Felhasználónév','Variables: #ParcelNr#, #COD#, #PickupDate#, #From_Name#, #ClientRef#'=>'Változók: #ParcelNr#, #COD#, #PickupDate#, #From_Name#, #ClientRef#','View'=>'Megtekintés','Weight Based Rates: max_weight|cost'=>'Súlyalapú árak: max_weight|cost','← Back to History'=>'← Vissza az előzményekhez','⚙️ Advanced Services'=>'⚙️ Speciális szolgáltatások']]; diff --git a/languages/gls-shipping-for-woocommerce-ro_RO.l10n.php b/languages/gls-shipping-for-woocommerce-ro_RO.l10n.php index ea098bf..21df55b 100644 --- a/languages/gls-shipping-for-woocommerce-ro_RO.l10n.php +++ b/languages/gls-shipping-for-woocommerce-ro_RO.l10n.php @@ -1,3 +1,6 @@ '','report-msgid-bugs-to'=>'https://wordpress.org/support/plugin/gls-wp','pot-creation-date'=>'2025-08-22T09:50:00+00:00','po-revision-date'=>'2025-12-18 21:09+0000','last-translator'=>'','language-team'=>'Romanian','language'=>'ro_RO','mime-version'=>'1.0','content-type'=>'text/plain; charset=UTF-8','content-transfer-encoding'=>'8bit','plural-forms'=>'nplurals=3; plural=(n==1 ? 0 :(((n%100>19)||(( n%100==0)&&(n!=0)))? 2 : 1));','x-generator'=>'Loco https://localise.biz/','x-loco-version'=>'2.8.0; wp-6.8.1; php-8.2.17','messages'=>['%d items'=>'%d articole','%s GLS label was successfully generated.'=>'Eticheta GLS %s a fost generată cu succes.' . "\0" . 'Eticheta GLS %s a fost generată cu succes.' . "\0" . 'Eticheta GLS %s a fost generată cu succes.','%s label failed to generate.'=>'Eticheta %s nu a putut fi generată.' . "\0" . 'Eticheta %s nu a putut fi generată.' . "\0" . 'Eticheta %s nu a putut fi generată.','%s label failed to generate. '=>'Eticheta %s nu a putut fi generată.' . "\0" . 'Eticheta %s nu a putut fi generată.' . "\0" . 'Eticheta %s nu a putut fi generată.','24H Service'=>'Serviciu 24H','
Click here to download the PDF'=>'
Faceți clic aici pentru a descărca PDF-ul','Account'=>'Cont','Account Mode'=>'Mod cont','Actions'=>'Acțiuni','Active'=>'Activ','Add New Account'=>'Adaugă cont nou','Add New Address'=>'Adăugați o adresă nouă','Address'=>'Adresă','Address:'=>'Adresă:','Addressee Only (AOS)'=>'Doar destinatar (AOS)','Addressee Only Service (AOS)'=>'We do not use this service in RO','An error occurred while generating the GLS labels PDF.'=>'A apărut o eroare la generarea PDF-ului de etichete GLS.','API Settings for all of the GLS Shipping Options.'=>'Setări API pentru toate opțiunile de expediere GLS.','Austria'=>'Austria','Availability depends on the country. Can’t be used with FDS and FSS services.'=>'Disponibilitatea depinde de fiecare țară. Nu poate fi utilizat cu serviciile FDS și FSS.','Available within specific limits based on the country.'=>'Disponibil în anumite limite specifice în funcție de țară.','Belgium'=>'Belgia','Bulgaria'=>'Bulgaria','Bulk Generate GLS Labels'=>'Generați în bloc etichete GLS','Bulk Print GLS Labels'=>'Imprimare în vrac etichete GLS','Can’t be used with T09, T10, and T12 services.'=>'Nu poate fi utilizat cu serviciul T12.','Cart total amount above which shipping will be free. Set to 0 to disable.'=>'Suma totală coș peste care transportul va fi gratuit. Setați la 0 pentru a dezactiva.','Change Pickup Location'=>'Schimbați locația de ridicare','Check this box if this product cannot be shipped to parcel shops or parcel lockers. This will hide those shipping options when this product is in the cart.'=>'Bifați această casetă dacă acest produs nu poate fi livrat către magazine de colete sau dulapuri pentru colete. Această acțiune va ascunde opțiunile de livrare atunci când produsul se află în coș.','Choose between single or multiple GLS accounts.'=>'Alegeți între unul sau mai multe conturi GLS.','Choose the pickup address from configured sender addresses or store default.'=>'Alegeți adresa de preluare dintre adresele expeditorului configurate sau adresa implicită din magazin.','Client ID'=>'ID client','COD Reference:'=>'Referință COD:','Contact Email'=>'Email contact','Contact Name'=>'Numele contactului','Contact Phone'=>'Telefon contact','Contact Service (CS1)'=>'Serviciu de contact (CS1)','Content'=>'Conținut','Count'=>'Număr','Country'=>'Țară','Country:'=>'Țară:','Created'=>'Creat','Croatia'=>'Croația','Customize how GLS shipping methods are displayed to customers.'=>'Personalizați modul în care metodele de transport GLS sunt afișate clienților.','Czech Republic'=>'Republica Cehă','Default'=>'Implicit','Default Account'=>'Cont implicit','Delete'=>'Șterge','Delivery to Address'=>'Livrare la adresă','Delivery to GLC Parcel Locker'=>'Livrare la GLC Parcel Locker','Delivery to GLC Parcel Shop'=>'Livrare la GLC Parcel Shop','Delivery to GLS Parcel Locker'=>'Livrare la GLS Parcel Locker','Delivery to GLS Parcel Shop'=>'Livrare la GLS Parcel Shop','Denmark'=>'Danemarca','Disabled'=>'Dezactivat','Display GLS logo next to shipping methods'=>'Afișează logo-ul GLS lângă metodele de transport','Display Options'=>'Opțiuni afișare','Download GLS Label'=>'Descărcați eticheta GLS','Earliest date and time for pickup.'=>'Cea mai timpurie dată și oră pentru ridicare.','Edit'=>'Editează','Enable'=>'Activați','Enable 24H'=>'Activare 24H','Enable AOS'=>'We do not have this service','Enable CS1'=>'We do not have this service','Enable FDS'=>'Activare FDS','Enable FSS'=>'Activare FSS','Enable INS'=>'Activare INS','Enable Logging'=>'Activați logarea','Enable logging of GLS API requests and responses'=>'Activați logarea cererilor și răspunsurilor la API GLS','Enable SM1'=>'Activare SM1','Enable SM2'=>'Activare SM2','Enable this shipping globally.'=>'Activați această expediere la nivel global.','Enable/Disable each of GLS Services for your store.'=>'Activați/dezactivați fiecare dintre serviciile GLS pentru magazinul dumneavoastră.','Enter the format for order reference. Use {{order_id}} where you want the order ID to be inserted.'=>'Introduceți formatul pentru referința comenzii. Folosiți {{order_id}}} în locul în care doriți să fie introdus ID-ul comenzii.','Enter the shipping price for this method.'=>'Introduceți prețul de expediere pentru această metodă.','Enter your GLS Client ID.'=>'Introduceți ID-ul dvs. de client GLS.','Enter your GLS Password.'=>'Introduceți parola GLS.','Enter your GLS Username.'=>'Introduceți numele de utilizator GLS.','Error'=>'Eroare','Express Delivery Service (T09, T10, T12)'=>'Serviciul de livrare expres (T12)','Express Delivery Service Time'=>'Timpul serviciului de livrare Express','Express Service:'=>'Serviciu Express:','Failed order IDs: %s'=>'ID-uri de comandă nereușită: %s','Filter locker locations on the map for Hungary. Only applies when country is Hungary.'=>'Filtrează locațiile lockerelor pe hartă pentru Ungaria. Se aplică doar când țara este Ungaria.','Finland'=>'Finlanda','Flexible Delivery (FDS)'=>'Livrare flexibilă (FDS)','Flexible Delivery Service (FDS)'=>'Serviciul de livrare flexibilă (FDS)','Flexible Delivery SMS (FSS)'=>'Livrare flexibilă SMS (FSS)','Flexible Delivery SMS Service (FSS)'=>'Serviciul SMS de livrare flexibilă (FSS)','France'=>'Franța','Free Shipping Threshold'=>'Pragul de livrare gratuită','Generate GLS Label'=>'Generați eticheta GLS','Generate Shipping Label'=>'Generarea etichetei de expediere','Germany'=>'Germania','Get Parcel Status #%d (%s)'=>'Obține statusul coletului #%d (%s)','Get Parcel Status (%s)'=>'Obține statusul coletului (%s) ','GLS Accounts'=>'Conturi GLS','GLS API credentials not configured.'=>'Credențialele API GLS nu sunt configurate.','GLS API Settings'=>'Setări GLS API','GLS Delivery to Address'=>'Livrare GLS la adresă','GLS label for %s order has been generated. '=>'Eticheta GLS pentru comanda %s a fost generată.' . "\0" . 'Eticheta GLS pentru comanda %s a fost generată.' . "\0" . 'Eticheta GLS pentru comanda %s a fost generată.','GLS Parcel Locker'=>'GLS Parcel Locker','GLS Parcel Shop'=>'GLS Parcel Shop','GLS Pickup'=>'Ridicare GLS','GLS pickup location changed to: %s (%s)'=>'Locația de ridicare GLS a fost modificată la: %s (%s)','GLS Pickup Location:'=>'GLS Locația de preluare:','GLS Pickup Management'=>'Gestionare ridicări GLS','GLS Services'=>'Servicii GLS','GLS Shipping for WooCommerce'=>'GLS Shipping pentru WooCommerce','GLS Shipping Info'=>'Informații de expediere GLS','GLS Shipping Restriction'=>'Restricția de transport GLS','GLS Tracking Number'=>'Număr de urmărire GLS','GLS Tracking Number: '=>'Număr de urmărire GLS:','GLS Tracking Numbers:'=>'Numere de urmărire GLS:','Greece'=>'Grecia','Guaranteed 24h Service (24H)'=>'Serviciu garantat 24h (24H)','High Volume'=>'Trafic ridicat','https://inchoo.hr'=>'?','Hungary'=>'Ungaria','Hungary Locker Saturation Filter'=>'Filtru de saturare a lockerelor din Ungaria','ID'=>'ID','ID:'=>'ID:','Inchoo'=>'?','Insurance (INS)'=>'Asigurare (INS)','Insurance Service (INS)'=>'Serviciul de asigurare (INS)','Invalid sender address selected.'=>'Adresa expeditorului selectată nu este validă.','Italy'=>'Italia','Latest date and time for pickup.'=>'Ultima dată și oră pentru ridicare.','Low Volume'=>'Trafic scăzut','Luxembourg'=>'Luxemburg','Manage multiple GLS accounts. Each account can have different credentials and country settings.'=>'Gestionați mai multe conturi GLS. Fiecare cont poate avea acreditări și setări de țară diferite.','Manage multiple sender addresses. Each address can be set as default for shipments.'=>'Gestionați mai multe adrese de expeditor. Fiecare adresă poate fi setată ca implicită pentru expedieri.','Mode'=>'Mod','Multiple accounts mode was not saved because no valid GLS accounts were found. Please add at least one account to use multiple accounts mode.'=>'Modul conturi multiple nu a fost salvat deoarece nu au fost găsite conturi GLS valide. Adăugați cel puțin un cont pentru a utiliza modul conturi multiple.','Multiple GLS Accounts'=>'Conturi multiple GLS','Name'=>'Nume','Name:'=>'Nume:','Netherlands'=>'Olanda','New Account'=>'Cont nou','New Address'=>'Adresă nouă','No custom sender address (use default from store settings)'=>'Nicio adresă personalizată de expeditor (utilizați setările implicite ale magazinului)','No pickup requests found.'=>'Nu s-au găsit cereri de ridicare.','Not available in Serbia.'=>'Nu este disponibil în Serbia.','Not available without FDS service.'=>'Nu este disponibil fără serviciul FDS.','Number of Packages'=>'Numărul de pachete','Number of Packages:'=>'Numărul de pachete:','Offical GLS Shipping for WooCommerce plugin'=>'Plugin oficial GLS Shipping pentru WooCommerce','Only in Serbia! REQUIRED'=>'Doar în Serbia! NECESAR','Optional: Enter weight based rates (one per line). Format: max_weight|cost. Example: 1|100 means up to 1 %s costs 100. Leave empty to use default price.'=>'Opțional: Introduceți tarife bazate pe ponderare (unul pe linie). Format: max_weight|cost. Exemplu: 1|100 înseamnă că până la 1 %s costă 100. Lăsați câmpul gol pentru a utiliza prețul implicit.','Order Reference Format'=>'Format referință comandă','Out Of Order'=>'Indisponibil','Package Count'=>'Număr pachete','Package count must be at least 1.'=>'Numărul de pachete trebuie să fie cel puțin 1.','Parcel info printed on label. Use placeholders: {{order_id}}, {{customer_comment}}, {{customer_name}}, {{customer_email}}, {{customer_phone}}, {{order_total}}, {{shipping_method}}.'=>'Informațiile despre colet sunt tipărite pe etichetă. Folosiți provizorii: {{order_id}}, {{customer_comment}}, {{customer_name}}, {{customer_email}}, {{customer_phone}}, {{order_total}}, {{shipping_method}}.','Parcel Shop Delivery (PSD) service that ships parcels to the GLS Locker. GLS Parcel Locker can be selected from the interactive GLS Parcel Shop and GLS Locker finder map.'=>'Serviciul de livrare Parcel Shop (PSD) care expediază colete către GLS Locker. GLS Parcel Locker poate fi selectat de pe harta interactivă de căutare a GLS Parcel Shop și GLS Locker.','Parcel Shop Delivery (PSD) service that ships parcels to the GLS Parcel Shop. GLS Parcel Shop can be selected from the interactive GLS Parcel Shop and GLS Locker finder map.'=>'Serviciul de livrare colete (PSD) care expediază colete către magazinul de colete GLS. GLS Parcel Shop poate fi selectat de pe harta interactivă GLS Parcel Shop și GLS Locker.','Parcels are shipped to the customer’s address.'=>'Coletele sunt expediate la adresa clientului.','Password'=>'Parolă','Pending'=>'În așteptare','Permission denied.'=>'Permisiune refuzată.','Pickup Address'=>'Adresa de ridicare','Pickup Date From'=>'Data ridicării de la','Pickup Date To'=>'Data ridicării până la','Pickup dates are required.'=>'Datele de ridicare sunt obligatorii.','Pickup Details #%d'=>'Detalii ridicare #%d','Pickup From'=>'Ridicare de la','Pickup History'=>'Istoric ridicări','Pickup ID'=>'ID ridicare','Pickup Location'=>'Locație ridicare','Pickup location updated successfully'=>'Locația de ridicare a fost actualizată cu succes','Pickup not found.'=>'Ridicarea nu a fost găsită.','Pickup scheduled successfully!'=>'Ridicarea a fost programată cu succes!','Pickup To'=>'Ridicare până la','Please select a parcel locker/shop by clicking on Select Parcel button.'=>'Vă rugăm să selectați un locker/parcel shop, făcând clic pe butonul Selectați coletul.','Poland'=>'Polonia','Portugal'=>'Portugalia','Print Label'=>'Tipărire etichetă','Print Position'=>'Poziție de imprimare','Print Position:'=>'Poziția de imprimare:','Production'=>'Producție','Regenerate Shipping Label'=>'Regenerați eticheta de expediere','Request Data'=>'Date cerere','Request Information'=>'Informații cerere','Romania'=>'Romania','Sandbox'=>'Sandbox','Schedule a pickup request with GLS to collect packages from your location.'=>'Programați o cerere de ridicare cu GLS pentru a colecta pachetele de la locația dvs.','Schedule Pickup'=>'Programați ridicarea','Select countries to support for this shipping method.'=>'Selectați țările pentru care să suportați această metodă de transport.','Select Parcel Locker'=>'Selectați caseta pentru colete','Select Parcel Shop'=>'Selectați magazinul de colete','Select the country for the GLS service.'=>'Selectați țara pentru serviciul GLS.','Select the mode for the GLS API.'=>'Selectați modul pentru API GLS.','Select the Print Position.'=>'Selectați Poziția de imprimare.','Select the Printer Type.'=>'Selectați tipul de imprimantă.','Selected Address Details:'=>'Detalii adresă selectată:','Sender Addresses'=>'Adrese expeditor','Sender Identity Card Number. Required for Serbia.'=>'Numărul cărții de identitate expeditorului. Necesar pentru Serbia.','Serbia'=>'Serbia','Shipping Price'=>'Preț de livrare','Show GLS Logo'=>'Afișați logo-ul GLS','Show the GLS logo icon next to all GLS shipping methods in cart and checkout to highlight your GLS delivery options.'=>'Afișați pictograma cu sigla GLS lângă toate metodele de livrare GLS în coș și la finalizarea comenzii pentru a evidenția opțiunile de livrare GLS.','Single GLS Account'=>'Cont GLS unic','Slovakia'=>'Slovacia','Slovenia'=>'Slovenia','SM1 Service Text'=>'SM1 Serviciu Text','SMS Pre-advice (SM2)'=>'SMS pre-aviz (SM2)','SMS Pre-advice Service (SM2)'=>'SMS Pre-advice Service (SM2)','SMS Service (SM1)'=>'SMS Service (SM1)','SMS Service Text'=>'SMS Service Text','SMS Service Text. Variables that can be used in the text of the SMS: #ParcelNr#, #COD#, #PickupDate#, #From_Name#, #ClientRef#.'=>'Serviciul SMS Text. Variabile care pot fi utilizate în textul SMS-ului: #ParcelNr#, #COD#, #PickupDate#, #From_Name#, #ClientRef#.','SMS service with a maximum text length of 130.'=>'Serviciul SMS cu o lungime maximă a textului de 130 de caractere.','SMS Text:'=>'Text SMS:','Some products in your cart (%s) cannot be shipped to parcel shops or parcel lockers. Only standard delivery options are available.'=>'Unele produse din coșul dvs. (%s) nu pot fi livrate către magazine de colete sau dulapuri pentru colete. Sunt disponibile doar opțiunile de livrare standard.','Spain'=>'Spania','Status'=>'Stare','Store Phone Number'=>'Numărul de telefon al magazinului','Store Phone number that will be sent to GLS as a contact information.'=>'Stocați numărul de telefon care va fi trimis către GLS ca informații de contact.','Success'=>'Succes','Supported Countries'=>'Țări acceptate','Time From'=>'Ora de la','Time To'=>'Ora până la','Title'=>'Titlu','Title to be display on site'=>'Titlul care va fi afișat pe site','Title to be displayed on site'=>'Titlul va fi afișat pe site','Total number of packages to be collected.'=>'Numărul total de pachete care trebuie colectate.','Type of Printer'=>'Tip de imprimantă','Updated'=>'Actualizat','Username'=>'Nume utilizator','Variables: #ParcelNr#, #COD#, #PickupDate#, #From_Name#, #ClientRef#'=>'Variabile: #ParcelNr#, #COD#, #PickupDate#, #From_Name#, #ClientRef#','View'=>'Vizualizare','Weight Based Rates: max_weight|cost'=>'Tarife bazate pe greutate: max_weight|cost','← Back to History'=>'← Înapoi la istoric','⚙️ Advanced Services'=>'⚙️ Servicii avansate']]; diff --git a/languages/gls-shipping-for-woocommerce-sk_SK.l10n.php b/languages/gls-shipping-for-woocommerce-sk_SK.l10n.php index 64242b1..b92f049 100644 --- a/languages/gls-shipping-for-woocommerce-sk_SK.l10n.php +++ b/languages/gls-shipping-for-woocommerce-sk_SK.l10n.php @@ -1,2 +1,5 @@ '','report-msgid-bugs-to'=>'https://wordpress.org/support/plugin/gls-wp','pot-creation-date'=>'2025-08-22T09:50:00+00:00','po-revision-date'=>'2025-12-18 21:11+0000','last-translator'=>'','language-team'=>'Slovak','language'=>'sk_SK','mime-version'=>'1.0','content-type'=>'text/plain; charset=UTF-8','content-transfer-encoding'=>'8bit','plural-forms'=>'nplurals=3; plural=( n == 1 ) ? 0 : ( n >= 2 && n <= 4 ) ? 1 : 2;','x-generator'=>'Loco https://localise.biz/','x-loco-version'=>'2.8.0; wp-6.8.1; php-8.2.17','messages'=>['%d items'=>'%d položiek','%s GLS label was successfully generated.'=>'Štítok %s GLS bol úspešne vygenerovaný.' . "\0" . 'Štítok %s GLS bol úspešne vygenerovaný.' . "\0" . 'Štítok %s GLS bol úspešne vygenerovaný.','%s label failed to generate.'=>'Štítok %s sa nepodarilo vygenerovať.' . "\0" . 'Štítok %s sa nepodarilo vygenerovať.' . "\0" . 'Štítok %s sa nepodarilo vygenerovať.','%s label failed to generate. '=>'Štítok %s sa nepodarilo vygenerovať.' . "\0" . 'Štítok %s sa nepodarilo vygenerovať.' . "\0" . 'Štítok %s sa nepodarilo vygenerovať.','24H Service'=>'24H služba','
Click here to download the PDF'=>'
Kliknutím tu stiahnete súbor PDF','Account'=>'Účet','Account Mode'=>'Režim účtu','Actions'=>'Akcie','Active'=>'Aktívne','Add New Account'=>'Pridať nový účet','Add New Address'=>'Pridať novú adresu','Address'=>'Adresa','Address:'=>'Adresa:','Addressee Only (AOS)'=>'Iba adresát (AOS)','Addressee Only Service (AOS)'=>'Addressee Only Service (AOS)','An error occurred while generating the GLS labels PDF.'=>'Pri generovaní PDF štítkov GLS sa vyskytla chyba.','API Settings for all of the GLS Shipping Options.'=>'API nastavenia pre všetky GLS doručovacie možnosti.','Austria'=>'Rakúsko','Availability depends on the country. Can’t be used with FDS and FSS services.'=>'Dostupnosť závisí na krajine. Nie je možné použiť s FDS a FSS službami.','Available within specific limits based on the country.'=>'Dostupné v rámci limitov založených na krajine,','Belgium'=>'Belgicko','Bulgaria'=>'Bulharsko','Bulk Generate GLS Labels'=>'Hromadné generovanie štítkov GLS','Bulk Print GLS Labels'=>'Hromadná tlač štítkov GLS','Can’t be used with T09, T10, and T12 services.'=>'Nie je možné použiť s T09, T10 a T12 službami.','Cart total amount above which shipping will be free. Set to 0 to disable.'=>'Celková suma košíka, nad ktorú bude doprava zadarmo. Pre deaktiváciu nastavte na 0.','Change Pickup Location'=>'Zmeniť miesto vyzdvihnutia','Check this box if this product cannot be shipped to parcel shops or parcel lockers. This will hide those shipping options when this product is in the cart.'=>'Zaškrtnite toto políčko, ak tento produkt nie je možné odoslať do balíkových obchodov alebo balíkových schránk. Týmto sa tieto možnosti dopravy skryjú, keď je tento produkt v košíku.','Choose between single or multiple GLS accounts.'=>'Vyberte medzi jedným alebo viacerými GLS účtami.','Choose the pickup address from configured sender addresses or store default.'=>'Vyberte adresu vyzdvihnutia z nakonfigurovaných adries odosielateľa alebo predvolenú adresu obchodu.','Client ID'=>'ID klienta','COD Reference:'=>'COD referencia:','Contact Email'=>'Kontaktný email','Contact Name'=>'Meno kontaktu','Contact Phone'=>'Kontaktný telefón','Contact Service (CS1)'=>'Contact Service (CS1)','Content'=>'Obsah','Count'=>'Počet','Country'=>'Krajina','Country:'=>'Krajina:','Created'=>'Vytvorené','Croatia'=>'Chorvátsko','Customize how GLS shipping methods are displayed to customers.'=>'Prispôsobte, ako sa GLS spôsoby dopravy zobrazujú zákazníkom.','Czech Republic'=>'Česká republika','Default'=>'Predvolené','Default Account'=>'Predvolený účet','Delete'=>'Odstrániť','Delivery to Address'=>'Doručenie na adresu','Delivery to GLC Parcel Locker'=>'Doručenie do GLC balíkomatu','Delivery to GLC Parcel Shop'=>'Doručenie do GLC Parcel Shop-u','Delivery to GLS Parcel Locker'=>'Doručenie do GLS balíkomatu','Delivery to GLS Parcel Shop'=>'Doručenie do GLS Parcel Shop-u','Denmark'=>'Dánsko','Disabled'=>'Vypnuté','Display GLS logo next to shipping methods'=>'Zobrazte logo GLS vedľa spôsobov dopravy','Display Options'=>'Možnosti zobrazenia','Download GLS Label'=>'Stiahnite si štítok GLS','Earliest date and time for pickup.'=>'Najskorší dátum a čas vyzdvihnutia.','Edit'=>'Upraviť','Enable'=>'Povoliť','Enable 24H'=>'Povoliť 24H','Enable AOS'=>'Povoliť AOS','Enable CS1'=>'Povoliť CS1','Enable FDS'=>'Povoliť FDS','Enable FSS'=>'Povoliť FSS','Enable INS'=>'Povoliť INS','Enable Logging'=>'Povoliť logovanie','Enable logging of GLS API requests and responses'=>'Povoliť logovanie pre GLS API požiadavky a odpovede.','Enable SM1'=>'Povoliť SM1','Enable SM2'=>'Povoliť SM2','Enable this shipping globally.'=>'Povoliť túto zásielku globálne.','Enable/Disable each of GLS Services for your store.'=>'Povoliť / zakázať jednotlivé GLS služby pre váš obchod.','Enter the format for order reference. Use {{order_id}} where you want the order ID to be inserted.'=>'Zadajte formát referencie objednávky. Použite {{order_id}} tam kde chcete aby bolo vložené ID objednávky.','Enter the shipping price for this method.'=>'Zadajte cenu prepravy pre tento spôsob.','Enter your GLS Client ID.'=>'Zadajte vám pridelené GLS ID zákazníka.','Enter your GLS Password.'=>'Zadajte vaše GLS heslo.','Enter your GLS Username.'=>'Zadajte vaše GLS prihlasovacie meno.','Error'=>'Chyba','Express Delivery Service (T09, T10, T12)'=>'Express Delivery Service (T09, T10, T12)','Express Delivery Service Time'=>'Express Delivery Service čas','Express Service:'=>'Express služba:','Failed order IDs: %s'=>'ID neúspešných objednávok: %s','Filter locker locations on the map for Hungary. Only applies when country is Hungary.'=>'Filtrovať umiestnenia výdajných boxov na mape pre Maďarsko. Platí len v prípade, že krajina je Maďarsko.','Finland'=>'Fínsko','Flexible Delivery (FDS)'=>'Flexibilná doprava (FDS)','Flexible Delivery Service (FDS)'=>'Flexibilná doprava (FDS)','Flexible Delivery SMS (FSS)'=>'Flexibilná doprava SMS (FSS)','Flexible Delivery SMS Service (FSS)'=>'Flexibilná doprava SMS (FSS)','France'=>'Francúzsko','Free Shipping Threshold'=>'Hranica dopravy zdarma','Generate GLS Label'=>'Vygenerujte štítok GLS','Generate Shipping Label'=>'Generovať prepravný štítok','Germany'=>'Nemecko','Get Parcel Status #%d (%s)'=>'Získať stav zásielky #%d (%s)','Get Parcel Status (%s)'=>'Získať stav objednávky (%s)','GLS Accounts'=>'GLS účty','GLS API credentials not configured.'=>'Neprihlásené GLS API údaje.','GLS API Settings'=>'Nastavenia GLS API','GLS Delivery to Address'=>'GLS doručenie na adresu','GLS label for %s order has been generated. '=>'Štítok GLS pre objednávku %s bol vygenerovaný.' . "\0" . 'Štítok GLS pre objednávku %s bol vygenerovaný.' . "\0" . 'Štítok GLS pre objednávku %s bol vygenerovaný.','GLS Parcel Locker'=>'GLS balíkomat','GLS Parcel Shop'=>'GLS Parcel Shop','GLS Pickup'=>'GLS vyzdvihnutie','GLS pickup location changed to: %s (%s)'=>'Miesto vyzdvihnutia GLS zmenené na: %s (%s)','GLS Pickup Location:'=>'GLS miesto vyzdvihnutia:','GLS Pickup Management'=>'Správa vyzdvihnutí GLS','GLS Services'=>'GLS služby','GLS Shipping for WooCommerce'=>'GLS doručovanie pre WooCommerce','GLS Shipping Info'=>'GLS info o doručovaní','GLS Shipping Restriction'=>'Omezenie GLS dopravy','GLS Tracking Number'=>'GLS sledovacie číslo','GLS Tracking Number: '=>'GLS sledovacie číslo:','GLS Tracking Numbers:'=>'Sledovacie čísla GLS:','Greece'=>'Grécko','Guaranteed 24h Service (24H)'=>'Záručná 24H služba (24H)','High Volume'=>'Vysoká prevádzka','https://inchoo.hr'=>'https://inchoo.hr','Hungary'=>'Maďarsko','Hungary Locker Saturation Filter'=>'Filter vyťaženosti výdajných boxov v Maďarsku','ID'=>'ID','ID:'=>'ID:','Inchoo'=>'Inchoo','Insurance (INS)'=>'Poistenie (INS)','Insurance Service (INS)'=>'Poistenie (INS)','Invalid sender address selected.'=>'Vybraná neplatná adresa odosielateľa.','Italy'=>'Taliansko','Latest date and time for pickup.'=>'Najneskorší dátum a čas vyzdvihnutia.','Low Volume'=>'Nízka prevádzka','Luxembourg'=>'Luxembursko','Manage multiple GLS accounts. Each account can have different credentials and country settings.'=>'Spravujte viacero účtov GLS. Každý účet môže mať iné poverenia a nastavenia krajiny.','Manage multiple sender addresses. Each address can be set as default for shipments.'=>'Spravujte viacero adries odosielateľov. Každú adresu je možné nastaviť ako predvolenú pre zásielky.','Mode'=>'Mód','Multiple accounts mode was not saved because no valid GLS accounts were found. Please add at least one account to use multiple accounts mode.'=>'Režim viacerých účtov sa nepodarilo uložiť, pretože sa nenašli žiadne platné účty GLS. Ak chcete použiť režim viacerých účtov, pridajte aspoň jeden účet.','Multiple GLS Accounts'=>'Viacero GLS účtov','Name'=>'Meno','Name:'=>'Meno:','Netherlands'=>'Holandsko','New Account'=>'Nový účet','New Address'=>'Nová adresa','No custom sender address (use default from store settings)'=>'Žiadna vlastná adresa odosielateľa (použije sa predvolená z nastavení obchodu)','No pickup requests found.'=>'Neboli nájdené žiadne požiadavky na vyzdvihnutie.','Not available in Serbia.'=>'Nie je dostupné v Srbsku.','Not available without FDS service.'=>'Nie je dostupné bez služby FDS','Number of Packages'=>'Počet balení','Number of Packages:'=>'Počet balení:','Offical GLS Shipping for WooCommerce plugin'=>'Oficiálny WooCommerce plugin pre GLS doručovanie','Only in Serbia! REQUIRED'=>'Len v Srbsku! POŽADOVANÝ','Optional: Enter weight based rates (one per line). Format: max_weight|cost. Example: 1|100 means up to 1 %s costs 100. Leave empty to use default price.'=>'Voliteľné: Zadajte sadzby založené na hmotnosti (jedna na riadok). Formát: max_weight|cost. Príklad: 1|100 znamená, že až 1 %s stojí 100. Ak chcete použiť predvolenú cenu, nechajte prázdne.','Order Reference Format'=>'Formát referencie objednávky','Out Of Order'=>'Mimo prevádzky','Package Count'=>'Počet balíkov','Package count must be at least 1.'=>'Počet balíkov musí byť aspoň 1.','Parcel info printed on label. Use placeholders: {{order_id}}, {{customer_comment}}, {{customer_name}}, {{customer_email}}, {{customer_phone}}, {{order_total}}, {{shipping_method}}.'=>'Informácie o balíku vytlačené na štítku. Použite zástupné symboly: {{order_id}}, {{customer_comment}}, {{customer_name}}, {{customer_email}}, {{customer_phone}}, {{order_total}}, {{shipping_method}}.','Parcel Shop Delivery (PSD) service that ships parcels to the GLS Locker. GLS Parcel Locker can be selected from the interactive GLS Parcel Shop and GLS Locker finder map.'=>'Služba "Parcel Shop Delivery (PSD)" ktorá doručuje zásielky do balíkomatov. Balíkomat môže byť zvolený pomocou interaktívnej mapy.','Parcel Shop Delivery (PSD) service that ships parcels to the GLS Parcel Shop. GLS Parcel Shop can be selected from the interactive GLS Parcel Shop and GLS Locker finder map.'=>'Služba "Parcel Shop Delivery (PSD)" ktorá doručuje zásielky do Parcel Shop-ov. Parcel Shop môže byť zvolený pomocou interaktívnej mapy.','Parcels are shipped to the customer’s address.'=>'Zásielky sú doručené na adresu zákazníka.','Password'=>'Heslo','Pending'=>'Čakajúce','Permission denied.'=>'Oprávnenie odmietnuté.','Pickup Address'=>'Adresa vyzdvihnutia','Pickup Date From'=>'Dátum vyzdvihnutia od','Pickup Date To'=>'Dátum vyzdvihnutia do','Pickup dates are required.'=>'Dátumy vyzdvihnutia sú povinné.','Pickup Details #%d'=>'Detaily vyzdvihnutia #%d','Pickup From'=>'Vyzdvihnutie od','Pickup History'=>'História vyzdvihnutí','Pickup ID'=>'ID vyzdvihnutia','Pickup Location'=>'Miesto vyzdvihnutia','Pickup location updated successfully'=>'Miesto vyzdvihnutia bolo úspešne aktualizované','Pickup not found.'=>'Vyzdvihnutie nebolo nájdené.','Pickup scheduled successfully!'=>'Plánovanie vyzdvihnutia úspešne!','Pickup To'=>'Vyzdvihnutie do','Please select a parcel locker/shop by clicking on Select Parcel button.'=>'Prosím vyberte balíkomat / Parcel Shop kliknutím na tlačidlo "Vyberte zásielku".','Poland'=>'Poľsko','Portugal'=>'Portugalsko','Print Label'=>'Štítok','Print Position'=>'Pozícia tlače','Print Position:'=>'Pozícia tlače:','Production'=>'Produkcia','Regenerate Shipping Label'=>'Obnoviť prepravný štítok','Request Data'=>'Údaje požiadavky','Request Information'=>'Informácie o požiadavke','Romania'=>'Rumunsko','Sandbox'=>'Pieskovisko (Sandbox)','Schedule a pickup request with GLS to collect packages from your location.'=>'Naplánujte si vyzdvihnutie balíkov s GLS z vašej lokality.','Schedule Pickup'=>'Plánovanie vyzdvihnutia','Select countries to support for this shipping method.'=>'Vyberte podporované krajiny pre tento spôsob prepravy.','Select Parcel Locker'=>'Vyberte balíkomat','Select Parcel Shop'=>'Vyberte predajňu balíkov','Select the country for the GLS service.'=>'Vyberte krajinu pre GLS služby.','Select the mode for the GLS API.'=>'Vyberte režim pre GLS API.','Select the Print Position.'=>'Vyberte pozíciu tlače.','Select the Printer Type.'=>'Vyberte typ tlačiarne.','Selected Address Details:'=>'Detaily vybranej adresy:','Sender Addresses'=>'Adresy odosielateľa','Sender Identity Card Number. Required for Serbia.'=>'Číslo preukazu totožnosti odosielateľa. Vyžaduje sa pre Srbsko.','Serbia'=>'Srbsko','Shipping Price'=>'Cena prepravy','Show GLS Logo'=>'Zobrazte logo GLS','Show the GLS logo icon next to all GLS shipping methods in cart and checkout to highlight your GLS delivery options.'=>'Zobrazte ikonu loga GLS vedľa všetkých spôsobov dopravy GLS v košíku a pokladni, aby ste zvýraznili možnosti doručenia GLS.','Single GLS Account'=>'Jeden GLS účet','Slovakia'=>'Slovenská republika','Slovenia'=>'Slovinsko','SM1 Service Text'=>'SM1 Service text','SMS Pre-advice (SM2)'=>'SMS predvoľba (SM2)','SMS Pre-advice Service (SM2)'=>'SMS predvoľba (SM2)','SMS Service (SM1)'=>'SMS Service (SM1)','SMS Service Text'=>'SMS Service text','SMS Service Text. Variables that can be used in the text of the SMS: #ParcelNr#, #COD#, #PickupDate#, #From_Name#, #ClientRef#.'=>'SMS Service text. Premenné ktoré môžu byť použité v texte SMS správy: #ParcelNr#, #COD#, #PickupDate#, #From_Name#, #ClientRef#','SMS service with a maximum text length of 130.'=>'SMS služba s maximálnou dĺžkou textu 130 znakov.','SMS Text:'=>'SMS text:','Some products in your cart (%s) cannot be shipped to parcel shops or parcel lockers. Only standard delivery options are available.'=>'Niektoré produkty vo vašom košíku (%s) nie je možné odoslať do balíkových predajní alebo balíkových schránok. K dispozícii sú iba štandardné možnosti doručenia.','Spain'=>'Španielsko','Status'=>'Stav','Store Phone Number'=>'Telefónne číslo predajne','Store Phone number that will be sent to GLS as a contact information.'=>'Store Telefónne číslo, ktoré bude zaslané GLS ako kontaktné informácie.','Success'=>'Úspech','Supported Countries'=>'Podporované krajiny','Time From'=>'Čas od','Time To'=>'Čas do','Title'=>'Oslovenie','Title to be display on site'=>'Oslovenie pre zobrazenie na stránke','Title to be displayed on site'=>'Názov, ktorý sa zobrazí na stránke','Total number of packages to be collected.'=>'Celkový počet balení na vyzdvihnutie.','Type of Printer'=>'Typ tlačiarne','Updated'=>'Aktualizované','Username'=>'Užívateľské meno','Variables: #ParcelNr#, #COD#, #PickupDate#, #From_Name#, #ClientRef#'=>'Premenné: #ParcelNr#, #COD#, #PickupDate#, #From_Name#, #ClientRef#','View'=>'Zobraziť','Weight Based Rates: max_weight|cost'=>'Sadzby podľa hmotnosti: max_weight|cost','← Back to History'=>'← Späť na históriu','⚙️ Advanced Services'=>'⚙️ Pokročilé služby']]; diff --git a/languages/gls-shipping-for-woocommerce-sl_SI.l10n.php b/languages/gls-shipping-for-woocommerce-sl_SI.l10n.php index 0d1f89d..f5af7ae 100644 --- a/languages/gls-shipping-for-woocommerce-sl_SI.l10n.php +++ b/languages/gls-shipping-for-woocommerce-sl_SI.l10n.php @@ -1,2 +1,5 @@ '','report-msgid-bugs-to'=>'https://wordpress.org/support/plugin/gls-wp','pot-creation-date'=>'2025-08-22T09:50:00+00:00','po-revision-date'=>'2025-12-18 21:12+0000','last-translator'=>'','language-team'=>'Slovenian','language'=>'sl_SI','mime-version'=>'1.0','content-type'=>'text/plain; charset=UTF-8','content-transfer-encoding'=>'8bit','plural-forms'=>'nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3||n%100==4 ? 2 : 3;','x-generator'=>'Loco https://localise.biz/','x-loco-version'=>'2.8.0; wp-6.8.1; php-8.2.17','messages'=>['%d items'=>'%d artiklov','%s GLS label was successfully generated.'=>'Oznaka GLS %s je bila uspešno ustvarjena.lo' . "\0" . 'Oznaka GLS %s je bila uspešno ustvarjena.' . "\0" . 'Oznaka GLS %s je bila uspešno ustvarjena.' . "\0" . 'Oznaka GLS %s je bila uspešno ustvarjena.','%s label failed to generate.'=>'Oznake %s ni bilo mogoče ustvariti.' . "\0" . 'Oznake %s ni bilo mogoče ustvariti.' . "\0" . 'Oznake %s ni bilo mogoče ustvariti.' . "\0" . 'Oznake %s ni bilo mogoče ustvariti.','%s label failed to generate. '=>'Oznake %s ni bilo mogoče ustvariti.' . "\0" . 'Oznake %s ni bilo mogoče ustvariti.' . "\0" . 'Oznake %s ni bilo mogoče ustvariti.' . "\0" . 'Oznake %s ni bilo mogoče ustvariti.','24H Service'=>'24H storitev','
Click here to download the PDF'=>'
Kliknite tukaj za prenos PDF','Account'=>'Račun','Account Mode'=>'Način računa','Actions'=>'Akcije','Active'=>'Aktivno','Add New Account'=>'Dodaj nov račun','Add New Address'=>'Dodaj nov naslov','Address'=>'Naslov','Address:'=>'Naslov:','Addressee Only (AOS)'=>'Samo prejemnik (AOS)','Addressee Only Service (AOS)'=>'Storitev Samo za Naslovnika (AOS)','An error occurred while generating the GLS labels PDF.'=>'Med generiranjem PDF nalepk GLS je prišlo do napake.','API Settings for all of the GLS Shipping Options.'=>'Nastavitve API-ja za vse možnosti dostave GLS.','Austria'=>'Avstrija','Availability depends on the country. Can’t be used with FDS and FSS services.'=>'Dostopnost je odvisna od države. Ne more se uporabljati s storitvami FDS in FSS.','Available within specific limits based on the country.'=>'Na voljo so znotraj določenih omejitev glede na državo.','Belgium'=>'Belgija','Bulgaria'=>'Bolgarija','Bulk Generate GLS Labels'=>'Množično ustvarjanje oznak GLS','Bulk Print GLS Labels'=>'Množično tiskanje nalepk GLS','Can’t be used with T09, T10, and T12 services.'=>'Ne more se uporabljati s storitvami T09, T10 in T12.','Cart total amount above which shipping will be free. Set to 0 to disable.'=>'Skupni znesek košarice, nad katerim bo poštnina brezplačna. Nastavite na 0, da onemogočite.','Change Pickup Location'=>'Spremeni lokacijo prevzema','Check this box if this product cannot be shipped to parcel shops or parcel lockers. This will hide those shipping options when this product is in the cart.'=>'Označite to polje, če tega izdelka ni mogoče poslati v trgovine s paketi ali omarice za pakete. S tem boste skrili te možnosti pošiljanja, ko je ta izdelek v košarici.','Choose between single or multiple GLS accounts.'=>'Izberite med enim ali več GLS računi.','Choose the pickup address from configured sender addresses or store default.'=>'Izberite naslov za prevzem med konfiguriranimi naslovi pošiljatelja ali privzetim naslovom trgovine.','Client ID'=>'ID številka stranke','COD Reference:'=>'COD referenca:','Contact Email'=>'Kontaktni email','Contact Name'=>'Ime kontakta','Contact Phone'=>'Kontaktni telefon','Contact Service (CS1)'=>'Klic Pred Dostavo (CS1)','Content'=>'Vsebina','Count'=>'Šteti','Country'=>'Država','Country:'=>'Država:','Created'=>'Ustvarjeno','Croatia'=>'Hrvaška','Customize how GLS shipping methods are displayed to customers.'=>'Prilagodite, kako se GLS načini dostave prikazujejo strankam.','Czech Republic'=>'Češka Republika','Default'=>'Privzeto','Default Account'=>'Privzeti račun','Delete'=>'Izbriši','Delivery to Address'=>'Dostava na Naslov','Delivery to GLC Parcel Locker'=>'Dostava v GLC Paketomat','Delivery to GLC Parcel Shop'=>'Dostava v GLC Paketno Trgovino','Delivery to GLS Parcel Locker'=>'Dostava v GLS Paketomat','Delivery to GLS Parcel Shop'=>'Dostava v GLS Paketno Trgovino','Denmark'=>'Danska','Disabled'=>'Onemogočeno','Display GLS logo next to shipping methods'=>'Prikaži ikono GLS ob strankah dostave','Display Options'=>'Možnosti prikaza','Download GLS Label'=>'Prenesite oznako GLS','Earliest date and time for pickup.'=>'Najzgodnejši datum in čas za prevzem.','Edit'=>'Uredi','Enable'=>'Omogoči','Enable 24H'=>'Omogoči 24H','Enable AOS'=>'Omogoči AOS','Enable CS1'=>'Omogoči CS1','Enable FDS'=>'Omogoči FDS','Enable FSS'=>'Omogoči FSS','Enable INS'=>'Omogoči INS','Enable Logging'=>'Omogoči Beleženje','Enable logging of GLS API requests and responses'=>'Omogoči beleženje zahtevkov in odgovorov GLS API','Enable SM1'=>'Omogoči SM1','Enable SM2'=>'Omogoči SM2','Enable this shipping globally.'=>'Omogoči to pošiljanje po vsem svetu.','Enable/Disable each of GLS Services for your store.'=>'Omogoči/Onemogoči vsako od GLS storitev za vašo trgovino.','Enter the format for order reference. Use {{order_id}} where you want the order ID to be inserted.'=>'Vnesite format za sklicevanje na naročilo. Uporabite {{order_id}}, kjer želite vstaviti ID naročila.','Enter the shipping price for this method.'=>'Vnesite ceno dostave za ta način.','Enter your GLS Client ID.'=>'Vnesite svojo GLS ID številko.','Enter your GLS Password.'=>'Vnesite svoje GLS geslo.','Enter your GLS Username.'=>'Vnesite svoje GLS uporabniško ime.','Error'=>'Napaka','Express Delivery Service (T09, T10, T12)'=>'Express dostava (T09, T10, T12)','Express Delivery Service Time'=>'Čas dostave Express storitve','Express Service:'=>'Express storitev:','Failed order IDs: %s'=>'ID-ji neuspešnega naročila: %s','Filter locker locations on the map for Hungary. Only applies when country is Hungary.'=>'Filtriraj lokacije paketnih omaric na zemljevidu za Madžarsko. Uporabi se samo, ko je država Madžarska.','Finland'=>'Finska','Flexible Delivery (FDS)'=>'Prilagodljiva dostava (FDS)','Flexible Delivery Service (FDS)'=>'Prilagodljiva dostava (FDS)','Flexible Delivery SMS (FSS)'=>'Prilagodljiva dostava SMS (FSS)','Flexible Delivery SMS Service (FSS)'=>'Prilagodljiva dostava SMS (FSS)','France'=>'Francija','Free Shipping Threshold'=>'Prag brezplačne dostave','Generate GLS Label'=>'Ustvari oznako GLS','Generate Shipping Label'=>'Ustvarjanje etikete za pošiljanje','Germany'=>'Nemčija','Get Parcel Status #%d (%s)'=>'Pridobi status pošiljke #%d (%s)','Get Parcel Status (%s)'=>'Dobite status naročila (%s)','GLS Accounts'=>'GLS računi','GLS API credentials not configured.'=>'Nastavitve API-ja za GLS ni mogoče konfigurirati.','GLS API Settings'=>'Nastavitve API-ja za GLS','GLS Delivery to Address'=>'GLS Dostava na Naslov','GLS label for %s order has been generated. '=>'Oznaka GLS za naročilo %s je bila ustvarjena.' . "\0" . 'Oznaka GLS za naročilo %s je bila ustvarjena.' . "\0" . 'Oznaka GLS za naročilo %s je bila ustvarjena.' . "\0" . 'Oznaka GLS za naročilo %s je bila ustvarjena.','GLS Parcel Locker'=>'GLS Paketomat','GLS Parcel Shop'=>'GLS Paketna Trgovina','GLS Pickup'=>'Prevzem paketov GLS','GLS pickup location changed to: %s (%s)'=>'Lokacija prevzema GLS spremenjena na: %s (%s)','GLS Pickup Location:'=>'Prevzemno mesto GLS:','GLS Pickup Management'=>'Upravljanje prevzemov GLS','GLS Services'=>'GLS storitve','GLS Shipping for WooCommerce'=>'GLS Dostava za WooCommerce','GLS Shipping Info'=>'Info o dostavi GLS','GLS Shipping Restriction'=>'Omejitev dostave GLS','GLS Tracking Number'=>'Sledilna številka GLS','GLS Tracking Number: '=>'Sledilna številka GLS:','GLS Tracking Numbers:'=>'Sledilne številke GLS:','Greece'=>'Grčija','Guaranteed 24h Service (24H)'=>'Zagotovljena 24h storitev (24H)','High Volume'=>'Velik promet','https://inchoo.hr'=>'https://inchoo.hr','Hungary'=>'Madžarska','Hungary Locker Saturation Filter'=>'Filter zasedenosti paketnih omaric na Madžarskem','ID'=>'ID','ID:'=>'ID:','Inchoo'=>'Inchoo','Insurance (INS)'=>'Zavarovanje (INS)','Insurance Service (INS)'=>'Storitev zavarovanja (INS)','Invalid sender address selected.'=>'Izbran neveljaven naslov pošiljatelja.','Italy'=>'Italija','Latest date and time for pickup.'=>'Najpoznejši datum in čas za prevzem.','Low Volume'=>'Majhen promet','Luxembourg'=>'Luksemburg','Manage multiple GLS accounts. Each account can have different credentials and country settings.'=>'Upravljajte več računov GLS. Vsak račun ima lahko različne poverilnice in nastavitve države.','Manage multiple sender addresses. Each address can be set as default for shipments.'=>'Upravljajte več naslovov pošiljateljev. Vsak naslov je mogoče nastaviti kot privzeti za pošiljke.','Mode'=>'Način','Multiple accounts mode was not saved because no valid GLS accounts were found. Please add at least one account to use multiple accounts mode.'=>'Način več računov ni bil shranjen, ker ni bilo mogoče najti veljavnih računov GLS. Za uporabo načina več računov dodajte vsaj en račun.','Multiple GLS Accounts'=>'Več GLS računov','Name'=>'Ime','Name:'=>'Ime:','Netherlands'=>'Nizozemska','New Account'=>'Nov račun','New Address'=>'Nov naslov','No custom sender address (use default from store settings)'=>'Ni prilagojenega naslova pošiljatelja (uporabi privzetega iz nastavitev trgovine)','No pickup requests found.'=>'Ni najdenih zahtev za prevzem.','Not available in Serbia.'=>'Ni na voljo v Srbiji.','Not available without FDS service.'=>'Ni na voljo brez storitve FDS.','Number of Packages'=>'Število paketov','Number of Packages:'=>'Število paketov:','Offical GLS Shipping for WooCommerce plugin'=>'Uradni vtičnik GLS dostave za WooCommerce','Only in Serbia! REQUIRED'=>'Samo v Srbiji! OBVEZNO','Optional: Enter weight based rates (one per line). Format: max_weight|cost. Example: 1|100 means up to 1 %s costs 100. Leave empty to use default price.'=>'Izbirno: vnesite stopnje na podlagi teže (eno na vrstico). Oblika: max_weight|strošek. Primer: 1|100 pomeni, da do 1 %s stane 100. Če želite uporabiti privzeto ceno, pustite prazno.','Order Reference Format'=>'Format sklica na naročilo','Out Of Order'=>'Izven delovanja','Package Count'=>'Število paketov','Package count must be at least 1.'=>'Število paketov mora biti vsaj 1.','Parcel info printed on label. Use placeholders: {{order_id}}, {{customer_comment}}, {{customer_name}}, {{customer_email}}, {{customer_phone}}, {{order_total}}, {{shipping_method}}.'=>'Podatki o paketu so natisnjeni na etiketi. Uporabite nadomestne znake: {{order_id}}, {{customer_comment}}, {{customer_name}}, {{customer_email}}, {{customer_phone}}, {{order_total}}, {{shipping_method}}.','Parcel Shop Delivery (PSD) service that ships parcels to the GLS Locker. GLS Parcel Locker can be selected from the interactive GLS Parcel Shop and GLS Locker finder map.'=>'Storitev Dostave v Paketno Trgovino (PSD), ki pošilja pakete v GLS Predal. GLS Paketomat je mogoče izbrati s pomočjo interaktivnega zemljevida za iskanje GLS Paketnih Trgovin in GLS Paketomatov.','Parcel Shop Delivery (PSD) service that ships parcels to the GLS Parcel Shop. GLS Parcel Shop can be selected from the interactive GLS Parcel Shop and GLS Locker finder map.'=>'Storitev Dostave v Paketno Trgovino (PSD), ki pošilja pakete v GLS Paketne Trgovine. GLS Paketne Trgovine je mogoče izbrati s pomočjo interaktivnega zemljevida za iskanje GLS Paketnih Trgovin in GLS Paketomatov.','Parcels are shipped to the customer’s address.'=>'Paketi se pošiljajo na naslov stranke.','Password'=>'Geslo','Pending'=>'V čakanju','Permission denied.'=>'Dovoljenje zavrnjeno.','Pickup Address'=>'Naslov prevzema','Pickup Date From'=>'Datum prevzema od','Pickup Date To'=>'Datum prevzema do','Pickup dates are required.'=>'Datumi prevzema so obvezni.','Pickup Details #%d'=>'Podrobnosti prevzema #%d','Pickup From'=>'Prevzem od','Pickup History'=>'Zgodovina prevzemov','Pickup ID'=>'ID prevzema','Pickup Location'=>'Lokacija prevzema','Pickup location updated successfully'=>'Lokacija prevzema uspešno posodobljena','Pickup not found.'=>'Prevzem ni bil najden.','Pickup scheduled successfully!'=>'Prevzem uspešno zabeležen!','Pickup To'=>'Prevzem do','Please select a parcel locker/shop by clicking on Select Parcel button.'=>'Prosim izberite paketomat/paketno trgovino tako, da kliknete gumb Izberi Paket.','Poland'=>'Poljska','Portugal'=>'Portugalska','Print Label'=>'Natisni etiketo','Print Position'=>'Položaj tiskanja','Print Position:'=>'Položaj tiskanja:','Production'=>'Proizvodnja','Regenerate Shipping Label'=>'Ponovno ustvarite oznako pošiljke','Request Data'=>'Podatki zahteve','Request Information'=>'Informacije o zahtevi','Romania'=>'Romunija','Sandbox'=>'Peskovnik','Schedule a pickup request with GLS to collect packages from your location.'=>'Naročite se na prevzem paketov pri GLS na vaši lokaciji.','Schedule Pickup'=>'Zabeležite prevzem','Select countries to support for this shipping method.'=>'Izberite države za podporo tega načina dostave.','Select Parcel Locker'=>'Izberite paketomat','Select Parcel Shop'=>'Izberite paketno trgovino','Select the country for the GLS service.'=>'Izberite državo za GLS storitev.','Select the mode for the GLS API.'=>'Izberite način za GLS API.','Select the Print Position.'=>'Izberite položaj tiskanja.','Select the Printer Type.'=>'Izberite vrsto tiskalnika.','Selected Address Details:'=>'Podrobnosti izbranega naslova:','Sender Addresses'=>'Naslovi pošiljatelja','Sender Identity Card Number. Required for Serbia.'=>'Številka osebne izkaznice pošiljatelja. Obvezno za Srbijo.','Serbia'=>'Srbija','Shipping Price'=>'Cena Dostave','Show GLS Logo'=>'Prikaži ikono GLS','Show the GLS logo icon next to all GLS shipping methods in cart and checkout to highlight your GLS delivery options.'=>'V košarici in blagajni prikažite ikono logotipa GLS poleg vseh načinov dostave GLS, da poudarite možnosti dostave GLS.','Single GLS Account'=>'En GLS račun','Slovakia'=>'Slovaška','Slovenia'=>'Slovenija','SM1 Service Text'=>'Besedilo Storitve SM1','SMS Pre-advice (SM2)'=>'Predhodno SMS obveščanje (SM2)','SMS Pre-advice Service (SM2)'=>'Storitev predhodnega SMS obveščanja (SM2)','SMS Service (SM1)'=>'SMS Storitev (SM1)','SMS Service Text'=>'Besedilo SMS Storitve','SMS Service Text. Variables that can be used in the text of the SMS: #ParcelNr#, #COD#, #PickupDate#, #From_Name#, #ClientRef#.'=>'Besedilo storitve SMS. Spremenljivke, ki jih je mogoče uporabiti v besedilu SMS-a: #ParcelNr#, #COD#, #PickupDate#, #From_Name#, #ClientRef#.','SMS service with a maximum text length of 130.'=>'SMS storitev z maksimalno dolžino besedila 130.','SMS Text:'=>'Besedilo SMS:','Some products in your cart (%s) cannot be shipped to parcel shops or parcel lockers. Only standard delivery options are available.'=>'Nekaterih izdelkov v vaši košarici (%s) ni mogoče poslati v trgovine s paketi ali omarice za pakete. Na voljo so samo standardne možnosti dostave.','Spain'=>'Španija','Status'=>'Status','Store Phone Number'=>'Telefonska številka','Store Phone number that will be sent to GLS as a contact information.'=>'Telefonska številka, ki bo poslana GLS kot kontaktni podatek.','Success'=>'Uspeh','Supported Countries'=>'Podprte Države','Time From'=>'Čas od','Time To'=>'Čas do','Title'=>'Naziv','Title to be display on site'=>'Naziv, ki naj se prikaže na spletnem mestu','Title to be displayed on site'=>'Naslov, ki bo prikazan na spletnem mestu','Total number of packages to be collected.'=>'Skupno število paketov za prevzem.','Type of Printer'=>'Vrsta tiskalnika','Updated'=>'Posodobljeno','Username'=>'Uporabniško ime','Variables: #ParcelNr#, #COD#, #PickupDate#, #From_Name#, #ClientRef#'=>'Spremenljivke: #ParcelNr#, #COD#, #PickupDate#, #From_Name#, #ClientRef#','View'=>'Ogled','Weight Based Rates: max_weight|cost'=>'Stopnje na podlagi teže: max_weight|cena','← Back to History'=>'← Nazaj na zgodovino','⚙️ Advanced Services'=>'⚙️ Napredne storitve']]; diff --git a/languages/gls-shipping-for-woocommerce-sr_RS.l10n.php b/languages/gls-shipping-for-woocommerce-sr_RS.l10n.php index d7374bc..514c256 100644 --- a/languages/gls-shipping-for-woocommerce-sr_RS.l10n.php +++ b/languages/gls-shipping-for-woocommerce-sr_RS.l10n.php @@ -1,2 +1,5 @@ '','report-msgid-bugs-to'=>'https://wordpress.org/support/plugin/gls-wp','pot-creation-date'=>'2025-08-22T09:50:00+00:00','po-revision-date'=>'2025-12-18 21:10+0000','last-translator'=>'','language-team'=>'Serbian','language'=>'sr_RS','mime-version'=>'1.0','content-type'=>'text/plain; charset=UTF-8','content-transfer-encoding'=>'8bit','plural-forms'=>'nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10 >= 2 && n%10<=4 &&(n%100<10||n%100 >= 20)? 1 : 2);','x-generator'=>'Loco https://localise.biz/','x-loco-version'=>'2.8.0; wp-6.8.1; php-8.2.17','messages'=>['%d items'=>'%d stavki','%s GLS label was successfully generated.'=>'%s GLS oznaka je uspješno generisana.' . "\0" . '%s GLS oznaka je uspješno generisana.' . "\0" . '%s GLS oznaka je uspješno generisana.','%s label failed to generate.'=>'Oznaka %s nije uspjela generirati.' . "\0" . 'Oznaka %s nije uspjela generirati.' . "\0" . 'Oznaka %s nije uspjela generirati.','%s label failed to generate. '=>'Oznaka %s nije uspjela generirati.' . "\0" . 'Oznaka %s nije uspjela generirati.' . "\0" . 'Oznaka %s nije uspjela generirati.','24H Service'=>'24H usluga','
Click here to download the PDF'=>'
Kliknite ovdje za preuzimanje PDF-a','Account'=>'Nalog','Account Mode'=>'Način računa','Actions'=>'Akcije','Active'=>'Aktivno','Add New Account'=>'Dodaj novi račun','Add New Address'=>'Dodaj novu adresu','Address'=>'Adresa','Address:'=>'Adresa','Addressee Only (AOS)'=>'Samo primalac (AOS)','Addressee Only Service (AOS)'=>'Samo usluga adrese','An error occurred while generating the GLS labels PDF.'=>'Došlo je do pogreške prilikom generisanja PDF-a GLS oznaka.','API Settings for all of the GLS Shipping Options.'=>'API postavke za sve GLS opcije isporuke','Austria'=>'Austrija','Availability depends on the country. Can’t be used with FDS and FSS services.'=>'Raspoloživost zavisi od zemlje. Ne može da se koristi sa FDS i FSS uslugama.','Available within specific limits based on the country.'=>'Dostupno u određenim granicama u zavisnosti od zemlje gde se koristi','Belgium'=>'Belgija','Bulgaria'=>'Bugarska','Bulk Generate GLS Labels'=>'Skupno generisanje GLS naljepnica','Bulk Print GLS Labels'=>'Skupni ispis GLS naljepnica','Can’t be used with T09, T10, and T12 services.'=>'Ne može se koristiti sa T09, T10 i T12 uslugama.','Cart total amount above which shipping will be free. Set to 0 to disable.'=>'Ukupni iznos košarice iznad kojeg će dostava biti besplatna. Postavite na 0 za onemogućavanje.','Change Pickup Location'=>'Promeni lokaciju preuzimanja','Check this box if this product cannot be shipped to parcel shops or parcel lockers. This will hide those shipping options when this product is in the cart.'=>'parcel shopove ili parcel lockere. Ovo će sakriti te opcije dostave kada je ovaj proizvod u korpi.','Choose between single or multiple GLS accounts.'=>'Izaberite između jednog ili više GLS računa.','Choose the pickup address from configured sender addresses or store default.'=>'Odaberite adresu za preuzimanje iz konfiguriranih adresa pošiljalaca ili zadane adrese radnje.','Client ID'=>'ID Klijenta','COD Reference:'=>'COD referenca:','Contact Email'=>'Kontakt email','Contact Name'=>'Ime kontakta','Contact Phone'=>'Kontakt telefon','Contact Service (CS1)'=>'Kontakt usluga (CS1)','Content'=>'Sadržaj','Count'=>'Broj','Country'=>'Zemlja','Country:'=>'Zemlja:','Created'=>'Kreirano','Croatia'=>'Hrvatska','Customize how GLS shipping methods are displayed to customers.'=>'Prilagodite kako se GLS načini dostave prikazuju kupcima.','Czech Republic'=>'Republika Češka','Default'=>'Podrazumevano','Default Account'=>'Podrazumevani račun','Delete'=>'Obriši','Delivery to Address'=>'Isporuka na adresu','Delivery to GLC Parcel Locker'=>'Dostava u GLC paketomat','Delivery to GLC Parcel Shop'=>'Dostava u GLC Paket Shop','Delivery to GLS Parcel Locker'=>'Dostava u GLS paketomat','Delivery to GLS Parcel Shop'=>'Dostava u GLS Paket Shop','Denmark'=>'Danska','Disabled'=>'Onemogućeno','Display GLS logo next to shipping methods'=>'Prikaži GLS logo pored načina dostave','Display Options'=>'Opcije prikaza','Download GLS Label'=>'Skini GLS adresnicu','Earliest date and time for pickup.'=>'Najraniji datum i vrijeme preuzimanja.','Edit'=>'Uredi','Enable'=>'Omogući','Enable 24H'=>'Omogući 24H','Enable AOS'=>'Omogući AOS','Enable CS1'=>'Omogući CS1','Enable FDS'=>'Omogući FDS','Enable FSS'=>'Omogući FSS','Enable INS'=>'Omogući INS','Enable Logging'=>'Omogući vođenje evidencije','Enable logging of GLS API requests and responses'=>'Omogući evidentiranje GLS API zahteva i odgovora','Enable SM1'=>'Omogući SM1','Enable SM2'=>'Omogući SM2','Enable this shipping globally.'=>'Omogući ovu metodu globalno.','Enable/Disable each of GLS Services for your store.'=>'Omogućite/onemogućite svaku od GLS usluga za vaše skladište.','Enter the format for order reference. Use {{order_id}} where you want the order ID to be inserted.'=>'Unesite format reference porudžbine. Koristite {{order_id}} gde želite da se umetne ID porudžbine.','Enter the shipping price for this method.'=>'Unesite cenu isporuke za ovaj metod.','Enter your GLS Client ID.'=>'Unesite ID GLS klijenta.','Enter your GLS Password.'=>'Unesite vašu GLS lozinku.','Enter your GLS Username.'=>'Unesite vaše GLS korisničko ime','Error'=>'Greška','Express Delivery Service (T09, T10, T12)'=>'Usluga ekspres dostave (T09, T10, T12)','Express Delivery Service Time'=>'Vreme usluge ekspres dostave','Express Service:'=>'Express usluga:','Failed order IDs: %s'=>'Neuspjeli orderi: %s','Filter locker locations on the map for Hungary. Only applies when country is Hungary.'=>'Filtriraj lokacije paketnih ormarića na mapi za Mađarsku. Primjenjuje se samo kada je država Mađarska.','Finland'=>'Finska','Flexible Delivery (FDS)'=>'Fleksibilna dostava (FDS)','Flexible Delivery Service (FDS)'=>'Usluga fleksibilne dostave (FDS)','Flexible Delivery SMS (FSS)'=>'Fleksibilna dostava SMS (FSS)','Flexible Delivery SMS Service (FSS)'=>'Usluga fleksibilne dostave putem SMS-a (FSS)','France'=>'Francuska','Free Shipping Threshold'=>'Prag besplatne dostave','Generate GLS Label'=>'Generišite adresnicu za slanje','Generate Shipping Label'=>'Generišite adresnicu za slanje','Germany'=>'Nemačka','Get Parcel Status #%d (%s)'=>'Dohvati status pošiljke #%d (%s)','Get Parcel Status (%s)'=>'Dobij status narudžbe (%s)','GLS Accounts'=>'GLS računi','GLS API credentials not configured.'=>'GLS API podaci nisu konfigurisani.','GLS API Settings'=>'GLS API postavke','GLS Delivery to Address'=>'GLS isporuka na adresu','GLS label for %s order has been generated. '=>'GLS oznaka za %s narudžbu je generisana.' . "\0" . 'GLS oznaka za %s narudžbu je generisana.' . "\0" . 'GLS oznaka za %s narudžbu je generisana.','GLS Parcel Locker'=>'GLS Paketomat','GLS Parcel Shop'=>'GLS Paket Shop','GLS Pickup'=>'GLS preuzimanje','GLS pickup location changed to: %s (%s)'=>'GLS lokacija preuzimanja promenjena na: %s (%s)','GLS Pickup Location:'=>'GLS Lokacija Prikupa','GLS Pickup Management'=>'GLS upravljanje preuzimanjem','GLS Services'=>'GLS Usluge','GLS Shipping for WooCommerce'=>'GLS pošiljke za WooCommerce','GLS Shipping Info'=>'GLS informacije o isporuci','GLS Shipping Restriction'=>'GLS ograničenje dostave','GLS Tracking Number'=>'GLS broj za praćenje','GLS Tracking Number: '=>'GLS broj za praćenje','GLS Tracking Numbers:'=>'GLS brojevi za praćenje','Greece'=>'Grčka','Guaranteed 24h Service (24H)'=>'Garantovana usluga od 24h (24H)','High Volume'=>'Veliki promet','https://inchoo.hr'=>'https://inchoo.hr','Hungary'=>'Mađarska','Hungary Locker Saturation Filter'=>'Filter zasićenosti ormarića u Mađarskoj','ID'=>'ID','ID:'=>'ID:','Inchoo'=>'Inchoo','Insurance (INS)'=>'Osiguranje (INS)','Insurance Service (INS)'=>'Usluga osiguranja (INS)','Invalid sender address selected.'=>'Izabrana je nevažeća adresa pošiljaoca.','Italy'=>'Italija','Latest date and time for pickup.'=>'Najkasniji datum i vreme za preuzimanje.','Low Volume'=>'Mali promet','Luxembourg'=>'Luksemburg','Manage multiple GLS accounts. Each account can have different credentials and country settings.'=>'Upravljajte više GLS računa. Svaki račun može imati različite vjerodajnice i postavke zemlje.','Manage multiple sender addresses. Each address can be set as default for shipments.'=>'Upravljajte više adresa pošiljalaca. Svaka adresa može biti postavljena kao zadana za pošiljke.','Mode'=>'Režim','Multiple accounts mode was not saved because no valid GLS accounts were found. Please add at least one account to use multiple accounts mode.'=>'Način rada s više računa nije sačuvan jer nisu pronađeni važeći GLS računi. Molimo dodajte barem jedan račun da biste koristili način rada s više računa.','Multiple GLS Accounts'=>'Više GLS računa','Name'=>'Ime','Name:'=>'Ime:','Netherlands'=>'Holandija','New Account'=>'Novi račun','New Address'=>'Nova adresa','No custom sender address (use default from store settings)'=>'Nema prilagođene adrese pošiljaoca (koristi podrazumevanu iz podešavanja prodavnice)','No pickup requests found.'=>'Nije pronađen nijedan zahtev za preuzimanje.','Not available in Serbia.'=>'Nije dostupno u Srbiji.','Not available without FDS service.'=>'Nije dostupno bez FDS usluge.','Number of Packages'=>'Broj paketa','Number of Packages:'=>'Broj paketa:','Offical GLS Shipping for WooCommerce plugin'=>'Oficijalna GLS pošiljka za WooCommerce plugin','Only in Serbia! REQUIRED'=>'Samo za Srbiju. NEOPHODAN.','Optional: Enter weight based rates (one per line). Format: max_weight|cost. Example: 1|100 means up to 1 %s costs 100. Leave empty to use default price.'=>'Neobavezno: Unesite stope temeljene na težini (jednu po redu). Format: max_težina|trošak. Primer: 1|100 znači do 1 %s košta 100. Ostavite prazno za korišćenje zadane cene.','Order Reference Format'=>'Format reference porudžbine','Out Of Order'=>'Van funkcije','Package Count'=>'Broj paketa','Package count must be at least 1.'=>'Broj paketa mora biti najmanje 1.','Parcel info printed on label. Use placeholders: {{order_id}}, {{customer_comment}}, {{customer_name}}, {{customer_email}}, {{customer_phone}}, {{order_total}}, {{shipping_method}}.'=>'{{customer_comment}}, {{customer_name}}, {{customer_email}}, {{customer_phone}}, {{order_total}}, {{shipping_method}}.','Parcel Shop Delivery (PSD) service that ships parcels to the GLS Locker. GLS Parcel Locker can be selected from the interactive GLS Parcel Shop and GLS Locker finder map.'=>'Parcel Shop Delivery (PSD) servis koji isporučuje pakete u GLS Paketomat. GLS Paketomat možete izabrati sa interaktivne GLS Paket Shop i GLS Paketomat mape.','Parcel Shop Delivery (PSD) service that ships parcels to the GLS Parcel Shop. GLS Parcel Shop can be selected from the interactive GLS Parcel Shop and GLS Locker finder map.'=>'Parcel Shop Delivery (PSD) servis koji isporučuje pakete u GLS Paket Shop. GLS Paket Shop možete izabrati sa interaktivne GLS Paket Shop i GLS Paketomat mape.','Parcels are shipped to the customer’s address.'=>'Paket se isporučuje na adresu kupca.','Password'=>'Lozinka','Pending'=>'Na čekanju','Permission denied.'=>'Dozvola odbijena.','Pickup Address'=>'Adresa preuzimanja','Pickup Date From'=>'Datum preuzimanja od','Pickup Date To'=>'Datum preuzimanja do','Pickup dates are required.'=>'Datumi preuzimanja su obavezni.','Pickup Details #%d'=>'Detalji preuzimanja #%d','Pickup From'=>'Preuzimanje od','Pickup History'=>'Istorija preuzimanja','Pickup ID'=>'ID preuzimanja','Pickup Location'=>'Prikupna lokacija','Pickup location updated successfully'=>'Lokacija preuzimanja uspešno ažurirana','Pickup not found.'=>'Preuzimanje nije pronađeno.','Pickup scheduled successfully!'=>'Preuzimanje uspešno zakazano!','Pickup To'=>'Preuzimanje do','Please select a parcel locker/shop by clicking on Select Parcel button.'=>'Molimo izaberite parcel locker/shop klikom na dugme Izaberi Paket.','Poland'=>'Poljska','Portugal'=>'Portugal','Print Label'=>'Štampaj adresnicu','Print Position'=>'Pozicija ispisa','Print Position:'=>'Pozicija ispisa:','Production'=>'Produkcija','Regenerate Shipping Label'=>'Izgeneriši adresnicu za slanje','Request Data'=>'Podaci zahteva','Request Information'=>'Informacije o zahtevu','Romania'=>'Rumunija','Sandbox'=>'Sandbox','Schedule a pickup request with GLS to collect packages from your location.'=>'Zakažite zahtev za preuzimanje sa GLS-om za prikupljanje paketa sa vaše lokacije.','Schedule Pickup'=>'Zakazuj preuzimanje','Select countries to support for this shipping method.'=>'Izaberite zemlje koje će podržati ovaj način isporuke.','Select Parcel Locker'=>'Odaberite paketomat','Select Parcel Shop'=>'Odaberite prodavnicu za pakete','Select the country for the GLS service.'=>'Izaberite zemlju za GLS uslugu.','Select the mode for the GLS API.'=>'Izaberite mod za GLS API.','Select the Print Position.'=>'Odaberite položaj ispisa.','Select the Printer Type.'=>'Odaberite vrstu pisača.','Selected Address Details:'=>'Detalji odabrane adrese:','Sender Addresses'=>'Adresa pošiljaoca','Sender Identity Card Number. Required for Serbia.'=>'Broj lične karte pošiljaoca. Obavezno za Srbiju.','Serbia'=>'Srbija','Shipping Price'=>'Cena pošiljke','Show GLS Logo'=>'Prikaži GLS logo','Show the GLS logo icon next to all GLS shipping methods in cart and checkout to highlight your GLS delivery options.'=>'Prikažite GLS logo ikonu pored svih GLS načina dostave u korpi i pri plaćanju kako biste istaknuli svoje GLS opcije dostave.','Single GLS Account'=>'Jedan GLS račun','Slovakia'=>'Slovačka','Slovenia'=>'Slovenija','SM1 Service Text'=>'SM1 Servisni tekst','SMS Pre-advice (SM2)'=>'SMS prethodna obaveštenja (SM2)','SMS Pre-advice Service (SM2)'=>'Usluga Pre-advice za SMS (SM2)','SMS Service (SM1)'=>'SMS Servis (SM1)','SMS Service Text'=>'SMS Servisni tekst','SMS Service Text. Variables that can be used in the text of the SMS: #ParcelNr#, #COD#, #PickupDate#, #From_Name#, #ClientRef#.'=>'Tekst SMS usluge. Promenljive koje se mogu koristiti u tekstu SMS-a: #ParcelNr#, #COD#, #PickupDate#, #From_Name#, #ClientRef#.','SMS service with a maximum text length of 130.'=>'SMS servis sa maksimalnom dužinom teksta od 130.','SMS Text:'=>'SMS tekst:','Some products in your cart (%s) cannot be shipped to parcel shops or parcel lockers. Only standard delivery options are available.'=>'Neki proizvodi u vašoj korpi (%s) ne mogu se slati u parcel shopove ili parcel lockere. Dostupne su samo standardne opcije dostave.','Spain'=>'Španija','Status'=>'Status','Store Phone Number'=>'Broj Telefona','Store Phone number that will be sent to GLS as a contact information.'=>'Broj telefona koji će se poslati GLS-u kao kontakt informacija.','Success'=>'Uspješno','Supported Countries'=>'Pdržane zemlje','Time From'=>'Vreme od','Time To'=>'Vreme do','Title'=>'Naslov','Title to be display on site'=>'Naslov prikazan na stranici','Title to be displayed on site'=>'Naslov prikazan na stranici','Total number of packages to be collected.'=>'Ukupan broj paketa za preuzimanje.','Type of Printer'=>'Tip Štampača','Updated'=>'Ažurirano','Username'=>'Korisničko ime','Variables: #ParcelNr#, #COD#, #PickupDate#, #From_Name#, #ClientRef#'=>'Varijable: #ParcelNr#, #COD#, #PickupDate#, #From_Name#, #ClientRef#','View'=>'Pregled','Weight Based Rates: max_weight|cost'=>'Stope zasnovane na težini: maksimalna_težina|trošak','← Back to History'=>'← Nazad na istoriju','⚙️ Advanced Services'=>'⚙️ Napredne usluge']]; From 810f8804e4a25bad4be5403c3a3d1255677d48e1 Mon Sep 17 00:00:00 2001 From: Goran Jakovljevic Date: Mon, 9 Feb 2026 14:01:21 +0100 Subject: [PATCH 3/4] fix: allow input fields --- includes/admin/class-gls-shipping-order.php | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/includes/admin/class-gls-shipping-order.php b/includes/admin/class-gls-shipping-order.php index fbbad6e..53db6a7 100644 --- a/includes/admin/class-gls-shipping-order.php +++ b/includes/admin/class-gls-shipping-order.php @@ -182,7 +182,10 @@ public function gls_shipping_info_meta_box_content($order_or_post_id)