Version Description
Download this release
Release Info
Developer | Ladela |
Plugin | WordPress Online Booking and Scheduling Plugin – Bookly |
Version | 19.2 |
Comparing to | |
See all releases |
Code changes from version 19.1 to 19.2
- backend/Backend.php +1 -0
- backend/components/dialogs/appointment/edit/Ajax.php +143 -93
- backend/components/dialogs/appointment/edit/resources/js/ng-appointment.js +1 -1
- backend/components/dialogs/payment/Ajax.php +1 -0
- backend/components/dialogs/payment/templates/details.php +42 -0
- backend/components/dialogs/payment/templates/dialog.php +1 -1
- backend/components/dialogs/service/edit/forms/Service.php +1 -0
- backend/components/dialogs/service/edit/proxy/Discounts.php +16 -0
- backend/components/dialogs/service/edit/resources/js/service-edit-dialog.js +3 -1
- backend/components/dialogs/table_settings/Ajax.php +1 -0
- backend/modules/appearance/resources/css/appearance.css +1 -3
- backend/modules/calendar/Ajax.php +19 -14
- backend/modules/calendar/Page.php +60 -45
- backend/modules/cloud_products/Page.php +6 -0
- backend/modules/cloud_products/templates/_price.php +3 -0
- backend/modules/customers/Page.php +1 -8
- backend/modules/debug/Ajax.php +12 -0
- backend/modules/debug/lib/QueryBuilder.php +14 -0
- backend/modules/notifications/Ajax.php +1 -1
- backend/modules/payments/Ajax.php +1 -1
- backend/modules/settings/Ajax.php +1 -1
- backend/resources/bootstrap/js/bootstrap.min.js +1 -1
- frontend/components/booking/InfoText.php +4 -2
- frontend/modules/booking/proxy/Discounts.php +15 -0
- frontend/resources/css/bookly-main.css +10 -0
- languages/bookly-de_DE.mo +0 -0
- languages/bookly-de_DE.po +61 -11
- languages/bookly-es_ES.mo +0 -0
- languages/bookly-es_ES.po +60 -10
- languages/bookly-fr_FR.mo +0 -0
- languages/bookly-fr_FR.po +60 -10
- languages/bookly-it_IT.mo +0 -0
- languages/bookly-it_IT.po +4053 -3868
- languages/bookly-nl_NL.mo +0 -0
- languages/bookly-nl_NL.po +61 -10
- languages/bookly-pt_PT.mo +0 -0
- languages/bookly-pt_PT.po +61 -10
- languages/bookly-ru_RU.mo +0 -0
- languages/bookly-ru_RU.po +60 -10
- languages/bookly-zh_TW.mo +0 -0
- languages/bookly-zh_TW.po +58 -10
- languages/bookly.pot +55 -7
- lib/CartInfo.php +30 -2
- lib/CartItem.php +3 -1
- lib/Config.php +1 -0
- lib/Scheduler.php +1 -1
- lib/data_holders/booking/Simple.php +3 -1
- lib/entities/Payment.php +19 -15
- lib/proxy/Discounts.php +17 -0
- lib/proxy/Shared.php +2 -0
- lib/utils/Common.php +22 -0
- lib/utils/Tables.php +107 -66
- main.php +1 -1
- readme.txt +2 -2
backend/Backend.php
CHANGED
@@ -122,6 +122,7 @@ abstract class Backend
|
|
122 |
}
|
123 |
Lib\Proxy\CustomerInformation::addBooklyMenuItem();
|
124 |
Lib\Proxy\CustomerGroups::addBooklyMenuItem();
|
|
|
125 |
add_submenu_page( 'bookly-menu', $notifications, $notifications, $required_capability,
|
126 |
Modules\Notifications\Page::pageSlug(), function () { Modules\Notifications\Page::render(); } );
|
127 |
Modules\CloudSms\Page::addBooklyMenuItem();
|
122 |
}
|
123 |
Lib\Proxy\CustomerInformation::addBooklyMenuItem();
|
124 |
Lib\Proxy\CustomerGroups::addBooklyMenuItem();
|
125 |
+
Lib\Proxy\Discounts::addBooklyMenuItem();
|
126 |
add_submenu_page( 'bookly-menu', $notifications, $notifications, $required_capability,
|
127 |
Modules\Notifications\Page::pageSlug(), function () { Modules\Notifications\Page::render(); } );
|
128 |
Modules\CloudSms\Page::addBooklyMenuItem();
|
backend/components/dialogs/appointment/edit/Ajax.php
CHANGED
@@ -4,7 +4,14 @@ namespace Bookly\Backend\Components\Dialogs\Appointment\Edit;
|
|
4 |
use Bookly\Backend\Modules\Calendar;
|
5 |
use Bookly\Lib;
|
6 |
use Bookly\Lib\DataHolders\Booking as DataHolders;
|
|
|
|
|
|
|
|
|
|
|
|
|
7 |
use Bookly\Lib\Utils\Common;
|
|
|
8 |
|
9 |
/**
|
10 |
* Class Ajax
|
@@ -25,64 +32,67 @@ class Ajax extends Lib\Base\Ajax
|
|
25 |
*/
|
26 |
public static function getDataForAppointmentForm()
|
27 |
{
|
28 |
-
$type = self::parameter( 'type', false ) == 'package'
|
29 |
-
? Lib\Entities\Service::TYPE_PACKAGE
|
30 |
-
: Lib\Entities\Service::TYPE_SIMPLE;
|
31 |
|
32 |
$statuses = Lib\Proxy\CustomStatuses::prepareAllStatuses( array(
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
) );
|
40 |
$status_items = array();
|
41 |
foreach ( $statuses as $status ) {
|
42 |
-
$status_items[ $status ] =
|
43 |
}
|
44 |
|
45 |
$result = array(
|
46 |
-
'staff'
|
47 |
-
'customers'
|
48 |
-
'start_time'
|
49 |
-
'end_time'
|
50 |
-
'app_start_time'
|
51 |
-
'app_end_time'
|
52 |
-
'week_days'
|
53 |
-
'time_interval'
|
54 |
-
'status'
|
55 |
'items' => $status_items,
|
56 |
),
|
57 |
'extras_consider_duration' => (int) Lib\Proxy\ServiceExtras::considerDuration( true ),
|
58 |
-
'extras_multiply_nop'
|
59 |
'customer_gr_def_app_status' => Lib\Proxy\CustomerGroups::prepareDefaultAppointmentStatuses( array( 0 => get_option( 'bookly_gen_default_appointment_status' ) ) ),
|
60 |
);
|
61 |
|
62 |
-
// Staff list
|
63 |
-
$
|
64 |
-
|
65 |
-
|
66 |
-
|
|
|
|
|
|
|
|
|
67 |
|
|
|
68 |
$max_duration = 0;
|
69 |
-
$has_categories = (bool)
|
70 |
|
71 |
foreach ( $staff_members as $staff_member ) {
|
72 |
$services = array();
|
73 |
-
if ( $type ==
|
74 |
$services = Proxy\Pro::addCustomService( $services );
|
75 |
}
|
76 |
foreach ($staff_member->getServicesData( $type ) as $row ) {
|
77 |
/** @var Lib\Entities\StaffService $staff_service */
|
78 |
$staff_service = $row['staff_service'];
|
79 |
-
/** @var
|
80 |
$service = $row['service'];
|
81 |
-
/** @var
|
82 |
$category = $row['category'];
|
83 |
|
84 |
$sub_services = $service->getSubServices();
|
85 |
-
if ( $type ==
|
86 |
if ( $staff_service->getLocationId() === null || Lib\Proxy\Locations::prepareStaffLocationId( $staff_service->getLocationId(), $staff_service->getStaffId() ) == $staff_service->getLocationId() ) {
|
87 |
if ( ! in_array( $service->getId(), array_map( function ( $service ) { return $service['id']; }, $services ) ) ) {
|
88 |
$services[] = array(
|
@@ -90,7 +100,7 @@ class Ajax extends Lib\Base\Ajax
|
|
90 |
'title' => sprintf(
|
91 |
'%s (%s)',
|
92 |
$service->getTitle(),
|
93 |
-
|
94 |
),
|
95 |
'category' => $category->getId() ? $category->getName() : ( $has_categories ? __( 'Uncategorized', 'bookly' ) : '' ),
|
96 |
'duration' => $service->getDuration(),
|
@@ -135,11 +145,11 @@ class Ajax extends Lib\Base\Ajax
|
|
135 |
);
|
136 |
}
|
137 |
|
138 |
-
/** @var
|
139 |
// Customers list.
|
140 |
-
$customers_count =
|
141 |
-
if ( $customers_count <
|
142 |
-
foreach (
|
143 |
$name = $customer->getFullName();
|
144 |
if ( $customer->getEmail() != '' || $customer->getPhone() != '' ) {
|
145 |
$name .= ' (' . trim( $customer->getEmail() . ', ' . $customer->getPhone(), ', ' ) . ')';
|
@@ -166,8 +176,8 @@ class Ajax extends Lib\Base\Ajax
|
|
166 |
// Run the loop.
|
167 |
while ( $time_start <= $time_end ) {
|
168 |
$slot = array(
|
169 |
-
'value' =>
|
170 |
-
'title' =>
|
171 |
);
|
172 |
if ( $time_start < DAY_IN_SECONDS ) {
|
173 |
$result['start_time'][] = $slot;
|
@@ -182,7 +192,7 @@ class Ajax extends Lib\Base\Ajax
|
|
182 |
$result['week_days'][] = $weekdays[ $index ];
|
183 |
}
|
184 |
|
185 |
-
if ( $type ==
|
186 |
$result = Proxy\Shared::prepareDataForPackage( $result );
|
187 |
}
|
188 |
|
@@ -196,11 +206,11 @@ class Ajax extends Lib\Base\Ajax
|
|
196 |
{
|
197 |
$response = array( 'success' => false, 'data' => array( 'customers' => array() ) );
|
198 |
|
199 |
-
$appointment = new
|
200 |
if ( $appointment->load( self::parameter( 'id' ) ) ) {
|
201 |
$response['success'] = true;
|
202 |
|
203 |
-
$query =
|
204 |
->select( 'SUM(ca.number_of_persons) AS total_number_of_persons,
|
205 |
a.staff_id,
|
206 |
a.staff_any,
|
@@ -222,7 +232,18 @@ class Ajax extends Lib\Base\Ajax
|
|
222 |
$query->addSelect( '1 AS min_capacity, 1 AS max_capacity' );
|
223 |
}
|
224 |
|
|
|
|
|
|
|
|
|
|
|
|
|
225 |
$info = $query->fetchRow();
|
|
|
|
|
|
|
|
|
|
|
226 |
$response['data']['total_number_of_persons'] = $info['total_number_of_persons'];
|
227 |
$response['data']['min_capacity'] = $info['min_capacity'];
|
228 |
$response['data']['max_capacity'] = $info['max_capacity'];
|
@@ -231,12 +252,12 @@ class Ajax extends Lib\Base\Ajax
|
|
231 |
$response['data']['start_time'] = $info['start_date'] ?
|
232 |
array(
|
233 |
'value' => date( 'H:i', strtotime( $info['start_date'] ) ),
|
234 |
-
'title' =>
|
235 |
) : null;
|
236 |
$response['data']['end_time'] = $info['end_date'] ?
|
237 |
array(
|
238 |
'value' => date( 'H:i', strtotime( $info['end_date'] ) ),
|
239 |
-
'title' =>
|
240 |
) : null;
|
241 |
$response['data']['staff_id'] = $info['staff_id'];
|
242 |
$response['data']['staff_any'] = (int) $info['staff_any'];
|
@@ -248,7 +269,7 @@ class Ajax extends Lib\Base\Ajax
|
|
248 |
$response['data']['online_meeting_provider'] = $info['online_meeting_provider'];
|
249 |
$response['data']['online_meeting_id'] = $info['online_meeting_id'];
|
250 |
|
251 |
-
$customers =
|
252 |
->select( 'ca.id,
|
253 |
ca.series_id,
|
254 |
ca.customer_id,
|
@@ -296,14 +317,14 @@ class Ajax extends Lib\Base\Ajax
|
|
296 |
}
|
297 |
$collaborative_service = '';
|
298 |
if ( $customer['collaborative_service_id'] !== null ) {
|
299 |
-
$service = new
|
300 |
if ( $service->load( $customer['collaborative_service_id'] ) ) {
|
301 |
$collaborative_service = $service->getTranslatedTitle();
|
302 |
}
|
303 |
}
|
304 |
$compound_service = '';
|
305 |
if ( $customer['compound_service_id'] !== null ) {
|
306 |
-
$service = new
|
307 |
if ( $service->load( $customer['compound_service_id'] ) ) {
|
308 |
$compound_service = $service->getTranslatedTitle();
|
309 |
}
|
@@ -409,8 +430,8 @@ class Ajax extends Lib\Base\Ajax
|
|
409 |
$max_extras_duration = 0;
|
410 |
foreach ( $customers as $i => $customer ) {
|
411 |
if ( in_array( $customer['status'], Lib\Proxy\CustomStatuses::prepareBusyStatuses( array(
|
412 |
-
|
413 |
-
|
414 |
) ) ) ) {
|
415 |
$total_number_of_persons += $customer['number_of_persons'];
|
416 |
if ( $customer['extras_consider_duration'] ) {
|
@@ -446,6 +467,15 @@ class Ajax extends Lib\Base\Ajax
|
|
446 |
|
447 |
// If no errors then try to save the appointment.
|
448 |
if ( ! isset ( $response['errors'] ) ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
449 |
$duration = Lib\Slots\DatePoint::fromStr( $end_date )->diff( Lib\Slots\DatePoint::fromStr( $start_date ) );
|
450 |
if ( ! $skip_date && $repeat['enabled'] ) {
|
451 |
$queue = array();
|
@@ -455,9 +485,9 @@ class Ajax extends Lib\Base\Ajax
|
|
455 |
$orders = array();
|
456 |
|
457 |
if ( $service_id ) {
|
458 |
-
$service =
|
459 |
} else {
|
460 |
-
$service = new
|
461 |
$service
|
462 |
->setTitle( $custom_service_name )
|
463 |
->setDuration( $duration )
|
@@ -474,7 +504,7 @@ class Ajax extends Lib\Base\Ajax
|
|
474 |
|
475 |
// Create order
|
476 |
if ( $notification ) {
|
477 |
-
$orders[ $customer['id'] ] = DataHolders\Order::create(
|
478 |
->addItem( 0, DataHolders\Series::create( $series ) );
|
479 |
}
|
480 |
|
@@ -483,13 +513,14 @@ class Ajax extends Lib\Base\Ajax
|
|
483 |
$start_date = $slot[0][2];
|
484 |
$end_date = Lib\Slots\DatePoint::fromStr( $start_date )->modify( $duration )->format( 'Y-m-d H:i:s' );
|
485 |
// Try to find existing appointment
|
486 |
-
|
|
|
487 |
->leftJoin( 'CustomerAppointment', 'ca', 'ca.appointment_id = a.id' )
|
488 |
->where( 'a.staff_id', $staff_id )
|
489 |
->where( 'a.service_id', $service_id )
|
490 |
->whereNotIn( 'ca.status', Lib\Proxy\CustomStatuses::prepareFreeStatuses( array(
|
491 |
-
|
492 |
-
|
493 |
) ) )
|
494 |
->where( 'start_date', $start_date )
|
495 |
->findOne();
|
@@ -505,7 +536,7 @@ class Ajax extends Lib\Base\Ajax
|
|
505 |
}
|
506 |
} else {
|
507 |
// Create appointment.
|
508 |
-
$appointment = new
|
509 |
$appointment
|
510 |
->setLocationId( $location_id )
|
511 |
->setStaffId( $staff_id )
|
@@ -557,7 +588,7 @@ class Ajax extends Lib\Base\Ajax
|
|
557 |
$response['data'] = array( 'resourceId' => $staff_id ); // make EventCalendar refetch events
|
558 |
} else {
|
559 |
// Single appointment.
|
560 |
-
$appointment = new
|
561 |
if ( $appointment_id ) {
|
562 |
// Edit.
|
563 |
$appointment->load( $appointment_id );
|
@@ -604,7 +635,7 @@ class Ajax extends Lib\Base\Ajax
|
|
604 |
// Reschedule all recurring appointments for $days_offset days and set it's time to $reschedule_start_time
|
605 |
$rescheduled_appointments = array( $appointment_id );
|
606 |
if ( $appointment_id && $reschedule_type != 'current' && $customer['series_id'] ) {
|
607 |
-
$query =
|
608 |
->leftJoin( 'CustomerAppointment', 'ca', 'ca.appointment_id = a.id' )
|
609 |
->where( 'ca.series_id', $customer['series_id'] )
|
610 |
->whereNotIn( 'a.id', $rescheduled_appointments );
|
@@ -612,7 +643,7 @@ class Ajax extends Lib\Base\Ajax
|
|
612 |
$query->whereGt( 'a.start_date', $current_start_date );
|
613 |
}
|
614 |
$reschedule_appointments = $query->find();
|
615 |
-
/** @var
|
616 |
foreach ( $reschedule_appointments as $reschedule_appointment ) {
|
617 |
$start_timestamp = strtotime( $reschedule_appointment->getStartDate() );
|
618 |
$duration = strtotime( $reschedule_appointment->getEndDate() ) - $start_timestamp;
|
@@ -640,7 +671,7 @@ class Ajax extends Lib\Base\Ajax
|
|
640 |
|
641 |
// Online meeting.
|
642 |
if ( $service_id ) {
|
643 |
-
$service =
|
644 |
$response['alert_errors'] = Lib\Proxy\Shared::syncOnlineMeeting( array(), $appointment, $service );
|
645 |
}
|
646 |
// Google Calendar.
|
@@ -667,7 +698,7 @@ class Ajax extends Lib\Base\Ajax
|
|
667 |
}
|
668 |
|
669 |
$response['success'] = true;
|
670 |
-
$response['data'] = self::_getAppointmentForCalendar( $
|
671 |
$response['queue'] = array( 'all' => $queue, 'changed_status' => $queue_changed_status );
|
672 |
|
673 |
self::_deleteSentReminders( $appointment, $modified );
|
@@ -694,7 +725,7 @@ class Ajax extends Lib\Base\Ajax
|
|
694 |
$appointment_id = (int) self::parameter( 'appointment_id' );
|
695 |
$appointment_duration = strtotime( $end_date ) - strtotime( $start_date );
|
696 |
$customers = json_decode( self::parameter( 'customers', '[]' ), true );
|
697 |
-
$service =
|
698 |
$service_duration = $service ? $service->getDuration() : 0;
|
699 |
|
700 |
$result = array(
|
@@ -709,8 +740,8 @@ class Ajax extends Lib\Base\Ajax
|
|
709 |
$max_extras_duration = 0;
|
710 |
foreach ( $customers as $customer ) {
|
711 |
if ( in_array( $customer['status'], Lib\Proxy\CustomStatuses::prepareBusyStatuses( array(
|
712 |
-
|
713 |
-
|
714 |
) ) ) ) {
|
715 |
if ( $customer['extras_consider_duration'] ) {
|
716 |
$extras_duration = Lib\Proxy\ServiceExtras::getTotalDuration( $customer['extras'] );
|
@@ -722,6 +753,18 @@ class Ajax extends Lib\Base\Ajax
|
|
722 |
}
|
723 |
|
724 |
if ( $start_date && $end_date ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
725 |
$total_end_date = $end_date;
|
726 |
if ( $max_extras_duration > 0 ) {
|
727 |
$total_end_date = date_create( $end_date )->modify( '+' . $max_extras_duration . ' sec' )->format( 'Y-m-d H:i:s' );
|
@@ -730,23 +773,29 @@ class Ajax extends Lib\Base\Ajax
|
|
730 |
$result['date_interval_not_available'] = true;
|
731 |
}
|
732 |
|
733 |
-
// Check if selected interval
|
734 |
if ( $staff_id ) {
|
735 |
$interval_valid = true;
|
736 |
-
$staff =
|
737 |
|
738 |
-
//
|
739 |
-
$result['staff_reaches_working_time_limit'] = Lib\Proxy\Pro::getWorkingTimeLimitError( $staff, $start_date, $end_date, $appointment_duration + $max_extras_duration, $appointment_id ) ?: false;
|
740 |
-
|
741 |
-
// Apply staff time zone if needed
|
742 |
$staff_tz = $staff->getTimeZone();
|
743 |
if ( $staff_tz ) {
|
744 |
-
$
|
745 |
-
$
|
746 |
}
|
747 |
|
748 |
-
|
749 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
750 |
$schedule_items = $staff->getScheduleItems( $location_id );
|
751 |
$special_days = array();
|
752 |
foreach ( (array) Lib\Proxy\SpecialDays::getSchedule( array( $staff_id ), $start, $end ) as $day ) {
|
@@ -780,21 +829,21 @@ class Ajax extends Lib\Base\Ajax
|
|
780 |
if ( isset ( $special_days[ $Ymd ] ) ) {
|
781 |
// Special day
|
782 |
$day_start = $Ymd . ' ' . $special_days[ $Ymd ][0]['start_time'];
|
783 |
-
$day_end = date( 'Y-m-d H:i:s', $Ymd_secs +
|
784 |
-
if ( $day_start <= $
|
785 |
// Check if interval does not intersect with breaks
|
786 |
$intersects = false;
|
787 |
foreach ( $special_days[ $Ymd ] as $break ) {
|
788 |
if ( $break['break_start'] ) {
|
789 |
$break_start = date(
|
790 |
'Y-m-d H:i:s',
|
791 |
-
$Ymd_secs +
|
792 |
);
|
793 |
$break_end = date(
|
794 |
'Y-m-d H:i:s',
|
795 |
-
$Ymd_secs +
|
796 |
);
|
797 |
-
if ( $break_start < $
|
798 |
$intersects = true;
|
799 |
break;
|
800 |
}
|
@@ -810,20 +859,20 @@ class Ajax extends Lib\Base\Ajax
|
|
810 |
$item = $schedule_items[ $date->format( 'w' ) + 1 ];
|
811 |
if ( $item->getStartTime() ) {
|
812 |
$day_start = $Ymd . ' ' . $item->getStartTime();
|
813 |
-
$day_end = date( 'Y-m-d H:i:s', $Ymd_secs +
|
814 |
-
if ( $day_start <= $
|
815 |
// Check if interval does not intersect with breaks
|
816 |
$intersects = false;
|
817 |
foreach ( $item->getBreaksList() as $break ) {
|
818 |
$break_start = date(
|
819 |
'Y-m-d H:i:s',
|
820 |
-
$Ymd_secs +
|
821 |
);
|
822 |
$break_end = date(
|
823 |
'Y-m-d H:i:s',
|
824 |
-
$Ymd_secs +
|
825 |
);
|
826 |
-
if ( $break_start < $
|
827 |
$intersects = true;
|
828 |
break;
|
829 |
}
|
@@ -845,7 +894,7 @@ class Ajax extends Lib\Base\Ajax
|
|
845 |
}
|
846 |
|
847 |
if ( $service ) {
|
848 |
-
$result = Proxy\ServiceSchedule::checkAppointmentErrors( $result, $
|
849 |
|
850 |
// Service duration interval is not equal to.
|
851 |
$result['date_interval_warning'] = ! ( $appointment_duration >= $service->getMinDuration() && $appointment_duration <= $service->getMaxDuration() && ( $service_duration == 0 || $appointment_duration % $service_duration == 0 ) );
|
@@ -853,7 +902,7 @@ class Ajax extends Lib\Base\Ajax
|
|
853 |
// Check customers for appointments limit
|
854 |
foreach ( $customers as $index => $customer ) {
|
855 |
if ( $service->appointmentsLimitReached( $customer['id'], array( $start_date ) ) ) {
|
856 |
-
$customer_error =
|
857 |
$result['customers_appointments_limit'][] = sprintf( __( '%s has reached the limit of bookings for this service', 'bookly' ), $customer_error->getFullName() );
|
858 |
}
|
859 |
}
|
@@ -868,16 +917,17 @@ class Ajax extends Lib\Base\Ajax
|
|
868 |
/**
|
869 |
* Get appointment for Event Calendar
|
870 |
*
|
871 |
-
* @param integer $staff_id
|
872 |
* @param int $appointment_id
|
|
|
|
|
873 |
* @return array
|
874 |
*/
|
875 |
-
private static function _getAppointmentForCalendar( $staff_id, $
|
876 |
{
|
877 |
-
$query =
|
878 |
->where( 'a.id', $appointment_id );
|
879 |
|
880 |
-
$appointments = Calendar\Page::buildAppointmentsForCalendar( $staff_id, $
|
881 |
|
882 |
return $appointments[0];
|
883 |
}
|
@@ -893,7 +943,7 @@ class Ajax extends Lib\Base\Ajax
|
|
893 |
*/
|
894 |
private static function _dateIntervalIsAvailableForAppointment( $start_date, $end_date, $staff_id, $appointment_id )
|
895 |
{
|
896 |
-
return
|
897 |
->whereNot( 'a.id', $appointment_id )
|
898 |
->where( 'a.staff_id', $staff_id )
|
899 |
->whereLt( 'a.start_date', $end_date )
|
@@ -904,14 +954,14 @@ class Ajax extends Lib\Base\Ajax
|
|
904 |
/**
|
905 |
* Delete marks for sent reminders
|
906 |
*
|
907 |
-
* @param
|
908 |
-
* @param array
|
909 |
*/
|
910 |
-
private static function _deleteSentReminders(
|
911 |
{
|
912 |
// When changed start_date need resend the reminders
|
913 |
if ( array_key_exists( 'start_date', $modified ) ) {
|
914 |
-
$ca_ids =
|
915 |
->select( 'id')
|
916 |
->where( 'appointment_id', $appointment->getId() )
|
917 |
->fetchCol( 'id' );
|
4 |
use Bookly\Backend\Modules\Calendar;
|
5 |
use Bookly\Lib;
|
6 |
use Bookly\Lib\DataHolders\Booking as DataHolders;
|
7 |
+
use Bookly\Lib\Entities\Appointment;
|
8 |
+
use Bookly\Lib\Entities\Category;
|
9 |
+
use Bookly\Lib\Entities\Customer;
|
10 |
+
use Bookly\Lib\Entities\CustomerAppointment;
|
11 |
+
use Bookly\Lib\Entities\Service;
|
12 |
+
use Bookly\Lib\Entities\Staff;
|
13 |
use Bookly\Lib\Utils\Common;
|
14 |
+
use Bookly\Lib\Utils\DateTime;
|
15 |
|
16 |
/**
|
17 |
* Class Ajax
|
32 |
*/
|
33 |
public static function getDataForAppointmentForm()
|
34 |
{
|
35 |
+
$type = self::parameter( 'type', false ) == 'package' ? Service::TYPE_PACKAGE : Service::TYPE_SIMPLE;
|
|
|
|
|
36 |
|
37 |
$statuses = Lib\Proxy\CustomStatuses::prepareAllStatuses( array(
|
38 |
+
CustomerAppointment::STATUS_PENDING,
|
39 |
+
CustomerAppointment::STATUS_APPROVED,
|
40 |
+
CustomerAppointment::STATUS_CANCELLED,
|
41 |
+
CustomerAppointment::STATUS_REJECTED,
|
42 |
+
CustomerAppointment::STATUS_WAITLISTED,
|
43 |
+
CustomerAppointment::STATUS_DONE,
|
44 |
) );
|
45 |
$status_items = array();
|
46 |
foreach ( $statuses as $status ) {
|
47 |
+
$status_items[ $status ] = CustomerAppointment::statusToString( $status );
|
48 |
}
|
49 |
|
50 |
$result = array(
|
51 |
+
'staff' => array(),
|
52 |
+
'customers' => array(),
|
53 |
+
'start_time' => array(),
|
54 |
+
'end_time' => array(),
|
55 |
+
'app_start_time' => null, // Appointment start time which may not be in the list of start times.
|
56 |
+
'app_end_time' => null, // Appointment end time which may not be in the list of end times.
|
57 |
+
'week_days' => array(),
|
58 |
+
'time_interval' => Lib\Config::getTimeSlotLength(),
|
59 |
+
'status' => array(
|
60 |
'items' => $status_items,
|
61 |
),
|
62 |
'extras_consider_duration' => (int) Lib\Proxy\ServiceExtras::considerDuration( true ),
|
63 |
+
'extras_multiply_nop' => (int) get_option( 'bookly_service_extras_multiply_nop', 1 ),
|
64 |
'customer_gr_def_app_status' => Lib\Proxy\CustomerGroups::prepareDefaultAppointmentStatuses( array( 0 => get_option( 'bookly_gen_default_appointment_status' ) ) ),
|
65 |
);
|
66 |
|
67 |
+
// Staff list
|
68 |
+
/** @var Staff[] $staff_members */
|
69 |
+
if ( Lib\Config::proActive() ) {
|
70 |
+
$staff_members = Common::isCurrentUserSupervisor()
|
71 |
+
? Staff::query()->sortBy( 'position' )->find()
|
72 |
+
: Staff::query()->where( 'wp_user_id', get_current_user_id() )->find();
|
73 |
+
} else {
|
74 |
+
$staff_members = Staff::query()->limit( 1 )->find();
|
75 |
+
}
|
76 |
|
77 |
+
$postfix_archived = sprintf( ' (%s)', __( 'Archived', 'bookly' ) );
|
78 |
$max_duration = 0;
|
79 |
+
$has_categories = (bool) Category::query()->findOne();
|
80 |
|
81 |
foreach ( $staff_members as $staff_member ) {
|
82 |
$services = array();
|
83 |
+
if ( $type == Service::TYPE_SIMPLE ) {
|
84 |
$services = Proxy\Pro::addCustomService( $services );
|
85 |
}
|
86 |
foreach ($staff_member->getServicesData( $type ) as $row ) {
|
87 |
/** @var Lib\Entities\StaffService $staff_service */
|
88 |
$staff_service = $row['staff_service'];
|
89 |
+
/** @var Service $service */
|
90 |
$service = $row['service'];
|
91 |
+
/** @var Category $category */
|
92 |
$category = $row['category'];
|
93 |
|
94 |
$sub_services = $service->getSubServices();
|
95 |
+
if ( $type == Service::TYPE_SIMPLE || ! empty( $sub_services ) ) {
|
96 |
if ( $staff_service->getLocationId() === null || Lib\Proxy\Locations::prepareStaffLocationId( $staff_service->getLocationId(), $staff_service->getStaffId() ) == $staff_service->getLocationId() ) {
|
97 |
if ( ! in_array( $service->getId(), array_map( function ( $service ) { return $service['id']; }, $services ) ) ) {
|
98 |
$services[] = array(
|
100 |
'title' => sprintf(
|
101 |
'%s (%s)',
|
102 |
$service->getTitle(),
|
103 |
+
DateTime::secondsToInterval( $service->getDuration() )
|
104 |
),
|
105 |
'category' => $category->getId() ? $category->getName() : ( $has_categories ? __( 'Uncategorized', 'bookly' ) : '' ),
|
106 |
'duration' => $service->getDuration(),
|
145 |
);
|
146 |
}
|
147 |
|
148 |
+
/** @var Customer $customer */
|
149 |
// Customers list.
|
150 |
+
$customers_count = Customer::query( 'c' )->count();
|
151 |
+
if ( $customers_count < Customer::REMOTE_LIMIT ) {
|
152 |
+
foreach ( Customer::query()->sortBy( 'full_name' )->find() as $customer ) {
|
153 |
$name = $customer->getFullName();
|
154 |
if ( $customer->getEmail() != '' || $customer->getPhone() != '' ) {
|
155 |
$name .= ' (' . trim( $customer->getEmail() . ', ' . $customer->getPhone(), ', ' ) . ')';
|
176 |
// Run the loop.
|
177 |
while ( $time_start <= $time_end ) {
|
178 |
$slot = array(
|
179 |
+
'value' => DateTime::buildTimeString( $time_start, false ),
|
180 |
+
'title' => DateTime::formatTime( $time_start ),
|
181 |
);
|
182 |
if ( $time_start < DAY_IN_SECONDS ) {
|
183 |
$result['start_time'][] = $slot;
|
192 |
$result['week_days'][] = $weekdays[ $index ];
|
193 |
}
|
194 |
|
195 |
+
if ( $type == Service::TYPE_PACKAGE ) {
|
196 |
$result = Proxy\Shared::prepareDataForPackage( $result );
|
197 |
}
|
198 |
|
206 |
{
|
207 |
$response = array( 'success' => false, 'data' => array( 'customers' => array() ) );
|
208 |
|
209 |
+
$appointment = new Appointment();
|
210 |
if ( $appointment->load( self::parameter( 'id' ) ) ) {
|
211 |
$response['success'] = true;
|
212 |
|
213 |
+
$query = Appointment::query( 'a' )
|
214 |
->select( 'SUM(ca.number_of_persons) AS total_number_of_persons,
|
215 |
a.staff_id,
|
216 |
a.staff_any,
|
232 |
$query->addSelect( '1 AS min_capacity, 1 AS max_capacity' );
|
233 |
}
|
234 |
|
235 |
+
// Determine display time zone
|
236 |
+
$display_tz = Common::getCurrentUserTimeZone();
|
237 |
+
$wp_tz = Lib\Config::getWPTimeZone();
|
238 |
+
|
239 |
+
// Fetch appointment,
|
240 |
+
// and shift the dates to appropriate time zone if needed
|
241 |
$info = $query->fetchRow();
|
242 |
+
if ( $display_tz !== $wp_tz ) {
|
243 |
+
$info['start_date'] = DateTime::convertTimeZone( $info['start_date'], $wp_tz, $display_tz );
|
244 |
+
$info['end_date'] = DateTime::convertTimeZone( $info['end_date'], $wp_tz, $display_tz );
|
245 |
+
}
|
246 |
+
|
247 |
$response['data']['total_number_of_persons'] = $info['total_number_of_persons'];
|
248 |
$response['data']['min_capacity'] = $info['min_capacity'];
|
249 |
$response['data']['max_capacity'] = $info['max_capacity'];
|
252 |
$response['data']['start_time'] = $info['start_date'] ?
|
253 |
array(
|
254 |
'value' => date( 'H:i', strtotime( $info['start_date'] ) ),
|
255 |
+
'title' => DateTime::formatTime( $info['start_date'] ),
|
256 |
) : null;
|
257 |
$response['data']['end_time'] = $info['end_date'] ?
|
258 |
array(
|
259 |
'value' => date( 'H:i', strtotime( $info['end_date'] ) ),
|
260 |
+
'title' => DateTime::formatTime( $info['end_date'] ),
|
261 |
) : null;
|
262 |
$response['data']['staff_id'] = $info['staff_id'];
|
263 |
$response['data']['staff_any'] = (int) $info['staff_any'];
|
269 |
$response['data']['online_meeting_provider'] = $info['online_meeting_provider'];
|
270 |
$response['data']['online_meeting_id'] = $info['online_meeting_id'];
|
271 |
|
272 |
+
$customers = CustomerAppointment::query( 'ca' )
|
273 |
->select( 'ca.id,
|
274 |
ca.series_id,
|
275 |
ca.customer_id,
|
317 |
}
|
318 |
$collaborative_service = '';
|
319 |
if ( $customer['collaborative_service_id'] !== null ) {
|
320 |
+
$service = new Service();
|
321 |
if ( $service->load( $customer['collaborative_service_id'] ) ) {
|
322 |
$collaborative_service = $service->getTranslatedTitle();
|
323 |
}
|
324 |
}
|
325 |
$compound_service = '';
|
326 |
if ( $customer['compound_service_id'] !== null ) {
|
327 |
+
$service = new Service();
|
328 |
if ( $service->load( $customer['compound_service_id'] ) ) {
|
329 |
$compound_service = $service->getTranslatedTitle();
|
330 |
}
|
430 |
$max_extras_duration = 0;
|
431 |
foreach ( $customers as $i => $customer ) {
|
432 |
if ( in_array( $customer['status'], Lib\Proxy\CustomStatuses::prepareBusyStatuses( array(
|
433 |
+
CustomerAppointment::STATUS_PENDING,
|
434 |
+
CustomerAppointment::STATUS_APPROVED
|
435 |
) ) ) ) {
|
436 |
$total_number_of_persons += $customer['number_of_persons'];
|
437 |
if ( $customer['extras_consider_duration'] ) {
|
467 |
|
468 |
// If no errors then try to save the appointment.
|
469 |
if ( ! isset ( $response['errors'] ) ) {
|
470 |
+
// Determine display time zone,
|
471 |
+
// and shift the dates to WP time zone if needed
|
472 |
+
$display_tz = Common::getCurrentUserTimeZone();
|
473 |
+
$wp_tz = Lib\Config::getWPTimeZone();
|
474 |
+
if ( $display_tz !== $wp_tz ) {
|
475 |
+
$start_date = DateTime::convertTimeZone( $start_date, $display_tz, $wp_tz );
|
476 |
+
$end_date = DateTime::convertTimeZone( $end_date, $display_tz, $wp_tz );
|
477 |
+
}
|
478 |
+
|
479 |
$duration = Lib\Slots\DatePoint::fromStr( $end_date )->diff( Lib\Slots\DatePoint::fromStr( $start_date ) );
|
480 |
if ( ! $skip_date && $repeat['enabled'] ) {
|
481 |
$queue = array();
|
485 |
$orders = array();
|
486 |
|
487 |
if ( $service_id ) {
|
488 |
+
$service = Service::find( $service_id );
|
489 |
} else {
|
490 |
+
$service = new Service();
|
491 |
$service
|
492 |
->setTitle( $custom_service_name )
|
493 |
->setDuration( $duration )
|
504 |
|
505 |
// Create order
|
506 |
if ( $notification ) {
|
507 |
+
$orders[ $customer['id'] ] = DataHolders\Order::create( Customer::find( $customer['id'] ) )
|
508 |
->addItem( 0, DataHolders\Series::create( $series ) );
|
509 |
}
|
510 |
|
513 |
$start_date = $slot[0][2];
|
514 |
$end_date = Lib\Slots\DatePoint::fromStr( $start_date )->modify( $duration )->format( 'Y-m-d H:i:s' );
|
515 |
// Try to find existing appointment
|
516 |
+
/** @var Appointment $appointment */
|
517 |
+
$appointment = Appointment::query( 'a' )
|
518 |
->leftJoin( 'CustomerAppointment', 'ca', 'ca.appointment_id = a.id' )
|
519 |
->where( 'a.staff_id', $staff_id )
|
520 |
->where( 'a.service_id', $service_id )
|
521 |
->whereNotIn( 'ca.status', Lib\Proxy\CustomStatuses::prepareFreeStatuses( array(
|
522 |
+
CustomerAppointment::STATUS_CANCELLED,
|
523 |
+
CustomerAppointment::STATUS_REJECTED
|
524 |
) ) )
|
525 |
->where( 'start_date', $start_date )
|
526 |
->findOne();
|
536 |
}
|
537 |
} else {
|
538 |
// Create appointment.
|
539 |
+
$appointment = new Appointment();
|
540 |
$appointment
|
541 |
->setLocationId( $location_id )
|
542 |
->setStaffId( $staff_id )
|
588 |
$response['data'] = array( 'resourceId' => $staff_id ); // make EventCalendar refetch events
|
589 |
} else {
|
590 |
// Single appointment.
|
591 |
+
$appointment = new Appointment();
|
592 |
if ( $appointment_id ) {
|
593 |
// Edit.
|
594 |
$appointment->load( $appointment_id );
|
635 |
// Reschedule all recurring appointments for $days_offset days and set it's time to $reschedule_start_time
|
636 |
$rescheduled_appointments = array( $appointment_id );
|
637 |
if ( $appointment_id && $reschedule_type != 'current' && $customer['series_id'] ) {
|
638 |
+
$query = Appointment::query( 'a' )
|
639 |
->leftJoin( 'CustomerAppointment', 'ca', 'ca.appointment_id = a.id' )
|
640 |
->where( 'ca.series_id', $customer['series_id'] )
|
641 |
->whereNotIn( 'a.id', $rescheduled_appointments );
|
643 |
$query->whereGt( 'a.start_date', $current_start_date );
|
644 |
}
|
645 |
$reschedule_appointments = $query->find();
|
646 |
+
/** @var Appointment $reschedule_appointment */
|
647 |
foreach ( $reschedule_appointments as $reschedule_appointment ) {
|
648 |
$start_timestamp = strtotime( $reschedule_appointment->getStartDate() );
|
649 |
$duration = strtotime( $reschedule_appointment->getEndDate() ) - $start_timestamp;
|
671 |
|
672 |
// Online meeting.
|
673 |
if ( $service_id ) {
|
674 |
+
$service = Service::find( $service_id );
|
675 |
$response['alert_errors'] = Lib\Proxy\Shared::syncOnlineMeeting( array(), $appointment, $service );
|
676 |
}
|
677 |
// Google Calendar.
|
698 |
}
|
699 |
|
700 |
$response['success'] = true;
|
701 |
+
$response['data'] = self::_getAppointmentForCalendar( $appointment->getId(), $staff_id, $display_tz );
|
702 |
$response['queue'] = array( 'all' => $queue, 'changed_status' => $queue_changed_status );
|
703 |
|
704 |
self::_deleteSentReminders( $appointment, $modified );
|
725 |
$appointment_id = (int) self::parameter( 'appointment_id' );
|
726 |
$appointment_duration = strtotime( $end_date ) - strtotime( $start_date );
|
727 |
$customers = json_decode( self::parameter( 'customers', '[]' ), true );
|
728 |
+
$service = Service::find( $service_id );
|
729 |
$service_duration = $service ? $service->getDuration() : 0;
|
730 |
|
731 |
$result = array(
|
740 |
$max_extras_duration = 0;
|
741 |
foreach ( $customers as $customer ) {
|
742 |
if ( in_array( $customer['status'], Lib\Proxy\CustomStatuses::prepareBusyStatuses( array(
|
743 |
+
CustomerAppointment::STATUS_PENDING,
|
744 |
+
CustomerAppointment::STATUS_APPROVED
|
745 |
) ) ) ) {
|
746 |
if ( $customer['extras_consider_duration'] ) {
|
747 |
$extras_duration = Lib\Proxy\ServiceExtras::getTotalDuration( $customer['extras'] );
|
753 |
}
|
754 |
|
755 |
if ( $start_date && $end_date ) {
|
756 |
+
// Determine display time zone,
|
757 |
+
// and shift the dates to WP time zone if needed
|
758 |
+
$display_tz = Common::getCurrentUserTimeZone();
|
759 |
+
$wp_tz = Lib\Config::getWPTimeZone();
|
760 |
+
if ( $display_tz !== $wp_tz ) {
|
761 |
+
$start_date = DateTime::convertTimeZone( $start_date, $display_tz, $wp_tz );
|
762 |
+
$end_date = DateTime::convertTimeZone( $end_date, $display_tz, $wp_tz );
|
763 |
+
}
|
764 |
+
// Dates in staff time zone
|
765 |
+
$staff_start_date = $start_date;
|
766 |
+
$staff_end_date = $end_date;
|
767 |
+
|
768 |
$total_end_date = $end_date;
|
769 |
if ( $max_extras_duration > 0 ) {
|
770 |
$total_end_date = date_create( $end_date )->modify( '+' . $max_extras_duration . ' sec' )->format( 'Y-m-d H:i:s' );
|
773 |
$result['date_interval_not_available'] = true;
|
774 |
}
|
775 |
|
776 |
+
// Check if selected interval fits into staff schedule
|
777 |
if ( $staff_id ) {
|
778 |
$interval_valid = true;
|
779 |
+
$staff = Staff::find( $staff_id );
|
780 |
|
781 |
+
// Shift dates to staff time zone if needed
|
|
|
|
|
|
|
782 |
$staff_tz = $staff->getTimeZone();
|
783 |
if ( $staff_tz ) {
|
784 |
+
$staff_start_date = DateTime::convertTimeZone( $start_date, $wp_tz, $staff_tz );
|
785 |
+
$staff_end_date = DateTime::convertTimeZone( $end_date, $wp_tz, $staff_tz );
|
786 |
}
|
787 |
|
788 |
+
// Check if interval is suitable for staff's hours limit
|
789 |
+
$result['staff_reaches_working_time_limit'] = Lib\Proxy\Pro::getWorkingTimeLimitError(
|
790 |
+
$staff,
|
791 |
+
$staff_start_date,
|
792 |
+
$staff_end_date,
|
793 |
+
$appointment_duration + $max_extras_duration,
|
794 |
+
$appointment_id
|
795 |
+
) ?: false;
|
796 |
+
|
797 |
+
$start = date_create( $staff_start_date );
|
798 |
+
$end = date_create( $staff_end_date );
|
799 |
$schedule_items = $staff->getScheduleItems( $location_id );
|
800 |
$special_days = array();
|
801 |
foreach ( (array) Lib\Proxy\SpecialDays::getSchedule( array( $staff_id ), $start, $end ) as $day ) {
|
829 |
if ( isset ( $special_days[ $Ymd ] ) ) {
|
830 |
// Special day
|
831 |
$day_start = $Ymd . ' ' . $special_days[ $Ymd ][0]['start_time'];
|
832 |
+
$day_end = date( 'Y-m-d H:i:s', $Ymd_secs + DateTime::timeToSeconds( $special_days[ $Ymd ][0]['end_time'] ) );
|
833 |
+
if ( $day_start <= $staff_start_date && $day_end >= $staff_end_date ) {
|
834 |
// Check if interval does not intersect with breaks
|
835 |
$intersects = false;
|
836 |
foreach ( $special_days[ $Ymd ] as $break ) {
|
837 |
if ( $break['break_start'] ) {
|
838 |
$break_start = date(
|
839 |
'Y-m-d H:i:s',
|
840 |
+
$Ymd_secs + DateTime::timeToSeconds( $break['break_start'] )
|
841 |
);
|
842 |
$break_end = date(
|
843 |
'Y-m-d H:i:s',
|
844 |
+
$Ymd_secs + DateTime::timeToSeconds( $break['break_end'] )
|
845 |
);
|
846 |
+
if ( $break_start < $staff_end_date && $break_end > $staff_start_date ) {
|
847 |
$intersects = true;
|
848 |
break;
|
849 |
}
|
859 |
$item = $schedule_items[ $date->format( 'w' ) + 1 ];
|
860 |
if ( $item->getStartTime() ) {
|
861 |
$day_start = $Ymd . ' ' . $item->getStartTime();
|
862 |
+
$day_end = date( 'Y-m-d H:i:s', $Ymd_secs + DateTime::timeToSeconds( $item->getEndTime() ) );
|
863 |
+
if ( $day_start <= $staff_start_date && $day_end >= $staff_end_date ) {
|
864 |
// Check if interval does not intersect with breaks
|
865 |
$intersects = false;
|
866 |
foreach ( $item->getBreaksList() as $break ) {
|
867 |
$break_start = date(
|
868 |
'Y-m-d H:i:s',
|
869 |
+
$Ymd_secs + DateTime::timeToSeconds( $break['start_time'] )
|
870 |
);
|
871 |
$break_end = date(
|
872 |
'Y-m-d H:i:s',
|
873 |
+
$Ymd_secs + DateTime::timeToSeconds( $break['end_time'] )
|
874 |
);
|
875 |
+
if ( $break_start < $staff_end_date && $break_end > $staff_start_date ) {
|
876 |
$intersects = true;
|
877 |
break;
|
878 |
}
|
894 |
}
|
895 |
|
896 |
if ( $service ) {
|
897 |
+
$result = Proxy\ServiceSchedule::checkAppointmentErrors( $result, $staff_start_date, $staff_end_date, $service_id, $service_duration );
|
898 |
|
899 |
// Service duration interval is not equal to.
|
900 |
$result['date_interval_warning'] = ! ( $appointment_duration >= $service->getMinDuration() && $appointment_duration <= $service->getMaxDuration() && ( $service_duration == 0 || $appointment_duration % $service_duration == 0 ) );
|
902 |
// Check customers for appointments limit
|
903 |
foreach ( $customers as $index => $customer ) {
|
904 |
if ( $service->appointmentsLimitReached( $customer['id'], array( $start_date ) ) ) {
|
905 |
+
$customer_error = Customer::find( $customer['id'] );
|
906 |
$result['customers_appointments_limit'][] = sprintf( __( '%s has reached the limit of bookings for this service', 'bookly' ), $customer_error->getFullName() );
|
907 |
}
|
908 |
}
|
917 |
/**
|
918 |
* Get appointment for Event Calendar
|
919 |
*
|
|
|
920 |
* @param int $appointment_id
|
921 |
+
* @param int $staff_id
|
922 |
+
* @param string $display_tz
|
923 |
* @return array
|
924 |
*/
|
925 |
+
private static function _getAppointmentForCalendar( $appointment_id, $staff_id, $display_tz )
|
926 |
{
|
927 |
+
$query = Appointment::query( 'a' )
|
928 |
->where( 'a.id', $appointment_id );
|
929 |
|
930 |
+
$appointments = Calendar\Page::buildAppointmentsForCalendar( $query, $staff_id, $display_tz );
|
931 |
|
932 |
return $appointments[0];
|
933 |
}
|
943 |
*/
|
944 |
private static function _dateIntervalIsAvailableForAppointment( $start_date, $end_date, $staff_id, $appointment_id )
|
945 |
{
|
946 |
+
return Appointment::query( 'a' )
|
947 |
->whereNot( 'a.id', $appointment_id )
|
948 |
->where( 'a.staff_id', $staff_id )
|
949 |
->whereLt( 'a.start_date', $end_date )
|
954 |
/**
|
955 |
* Delete marks for sent reminders
|
956 |
*
|
957 |
+
* @param Appointment $appointment
|
958 |
+
* @param array $modified
|
959 |
*/
|
960 |
+
private static function _deleteSentReminders( Appointment $appointment, $modified )
|
961 |
{
|
962 |
// When changed start_date need resend the reminders
|
963 |
if ( array_key_exists( 'start_date', $modified ) ) {
|
964 |
+
$ca_ids = CustomerAppointment::query()
|
965 |
->select( 'id')
|
966 |
->where( 'appointment_id', $appointment->getId() )
|
967 |
->fetchCol( 'id' );
|
backend/components/dialogs/appointment/edit/resources/js/ng-appointment.js
CHANGED
@@ -559,7 +559,7 @@
|
|
559 |
$scope.dataSource.setEndTimeBasedOnService();
|
560 |
$scope.form.end_time = start_date.format('YYYY-MM-DD') == end_date.format('YYYY-MM-DD')
|
561 |
? $scope.dataSource.findTime('end', end_date.format('HH:mm'))
|
562 |
-
: $scope.dataSource.findTime('end', (
|
563 |
} else {
|
564 |
$scope.form.date = moment().local();
|
565 |
$scope.form.start_time = $scope.dataSource.findTime('start', moment().format('HH:mm'));
|
559 |
$scope.dataSource.setEndTimeBasedOnService();
|
560 |
$scope.form.end_time = start_date.format('YYYY-MM-DD') == end_date.format('YYYY-MM-DD')
|
561 |
? $scope.dataSource.findTime('end', end_date.format('HH:mm'))
|
562 |
+
: $scope.dataSource.findTime('end', (24 * (1 + end_date.diff(start_date, 'days')) + end_date.hour()) + end_date.format(':mm'));
|
563 |
} else {
|
564 |
$scope.form.date = moment().local();
|
565 |
$scope.form.start_time = $scope.dataSource.findTime('start', moment().format('HH:mm'));
|
backend/components/dialogs/payment/Ajax.php
CHANGED
@@ -52,6 +52,7 @@ class Ajax extends Lib\Base\Ajax
|
|
52 |
|
53 |
$data['show'] = array(
|
54 |
'coupons' => Lib\Config::couponsActive(),
|
|
|
55 |
'customer_groups' => Lib\Config::customerGroupsActive(),
|
56 |
'deposit' => (int) $show_deposit,
|
57 |
'gateway' => \Bookly\Backend\Modules\Payments\Proxy\Shared::paymentSpecificPriceExists( $data['payment']['type'] ) === true,
|
52 |
|
53 |
$data['show'] = array(
|
54 |
'coupons' => Lib\Config::couponsActive(),
|
55 |
+
'discounts' => Lib\Config::discountsActive(),
|
56 |
'customer_groups' => Lib\Config::customerGroupsActive(),
|
57 |
'deposit' => (int) $show_deposit,
|
58 |
'gateway' => \Bookly\Backend\Modules\Payments\Proxy\Shared::paymentSpecificPriceExists( $data['payment']['type'] ) === true,
|
backend/components/dialogs/payment/templates/details.php
CHANGED
@@ -59,6 +59,16 @@ $can_edit = Common::isCurrentUserSupervisor() || Common::isCurrentUserStaff();
|
|
59 |
<?php endforeach ?>
|
60 |
</ul>
|
61 |
<?php endif ?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
62 |
</td>
|
63 |
<td><?php echo $item['appointment_date'] === null ? esc_html__( 'N/A', 'bookly' ) : DateTime::formatDateTime( $item['appointment_date'] ) ?></td>
|
64 |
<td><?php echo esc_html( $item['staff_name'] ) ?></td>
|
@@ -82,6 +92,16 @@ $can_edit = Common::isCurrentUserSupervisor() || Common::isCurrentUserStaff();
|
|
82 |
) ?>
|
83 |
</li>
|
84 |
<?php endforeach ?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
85 |
</ul>
|
86 |
<?php endif ?>
|
87 |
</td>
|
@@ -149,6 +169,28 @@ $can_edit = Common::isCurrentUserSupervisor() || Common::isCurrentUserStaff();
|
|
149 |
<?php if ( $show['taxes'] ) : ?><th></th><?php endif ?>
|
150 |
</tr>
|
151 |
<?php endif ?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
152 |
<?php foreach ( $adjustments as $adjustment ) : ?>
|
153 |
<tr>
|
154 |
<th style="border-left-color:#fff;border-bottom-color:#fff;"></th>
|
59 |
<?php endforeach ?>
|
60 |
</ul>
|
61 |
<?php endif ?>
|
62 |
+
<?php if ( isset ( $item['discounts'] ) && count( $item['discounts'] ) ) : ?>
|
63 |
+
<ul class="pl-3 m-0">
|
64 |
+
<li>
|
65 |
+
<?php esc_html_e( 'Discount', 'bookly' ) ?><br/>
|
66 |
+
<?php foreach ( $item['discounts'] as $discount ) : ?>
|
67 |
+
<?php echo $discount['title'] ?><br/>
|
68 |
+
<?php endforeach ?>
|
69 |
+
</li>
|
70 |
+
</ul>
|
71 |
+
<?php endif ?>
|
72 |
</td>
|
73 |
<td><?php echo $item['appointment_date'] === null ? esc_html__( 'N/A', 'bookly' ) : DateTime::formatDateTime( $item['appointment_date'] ) ?></td>
|
74 |
<td><?php echo esc_html( $item['staff_name'] ) ?></td>
|
92 |
) ?>
|
93 |
</li>
|
94 |
<?php endforeach ?>
|
95 |
+
<?php if ( isset ( $item['discounts'] ) && count( $item['discounts'] ) ) : ?>
|
96 |
+
<?php foreach ( $item['discounts'] as $discount ) : ?>
|
97 |
+
<?php if ( $discount['discount'] > 0 ) : ?>
|
98 |
+
<li><?php echo $discount['discount'] ?>%</li>
|
99 |
+
<?php endif ?>
|
100 |
+
<?php if ( $discount['deduction'] > 0 ) : ?>
|
101 |
+
<li><?php echo Price::format( $discount['deduction'] ) ?></li>
|
102 |
+
<?php endif ?>
|
103 |
+
<?php endforeach ?>
|
104 |
+
<?php endif ?>
|
105 |
</ul>
|
106 |
<?php endif ?>
|
107 |
</td>
|
169 |
<?php if ( $show['taxes'] ) : ?><th></th><?php endif ?>
|
170 |
</tr>
|
171 |
<?php endif ?>
|
172 |
+
<?php if ( isset ( $payment['discounts'] ) && count( $payment['discounts'] ) ) : ?>
|
173 |
+
<tr>
|
174 |
+
<th style="border-left-color:#fff;border-bottom-color:#fff;"></th>
|
175 |
+
<th colspan="<?php echo 2 + $show['deposit'] ?>">
|
176 |
+
<?php esc_html_e( 'Discount', 'bookly' ) ?><br/>
|
177 |
+
<?php foreach ( $payment['discounts'] as $discount ) : ?>
|
178 |
+
<small>(<?php echo $discount['title'] ?>)</small><br/>
|
179 |
+
<?php endforeach ?>
|
180 |
+
</th>
|
181 |
+
<th class="text-right">
|
182 |
+
<?php foreach ( $payment['discounts'] as $discount ) : ?>
|
183 |
+
<?php if ( $discount['discount'] > 0 ) : ?>
|
184 |
+
<?php echo $discount['discount'] ?>%<br/>
|
185 |
+
<?php endif ?>
|
186 |
+
<?php if ( $discount['deduction'] > 0 ) : ?>
|
187 |
+
<?php echo Price::format( $discount['deduction'] ) ?><br/>
|
188 |
+
<?php endif ?>
|
189 |
+
<?php endforeach ?>
|
190 |
+
</th>
|
191 |
+
<?php if ( $show['taxes'] ) : ?><th></th><?php endif ?>
|
192 |
+
</tr>
|
193 |
+
<?php endif ?>
|
194 |
<?php foreach ( $adjustments as $adjustment ) : ?>
|
195 |
<tr>
|
196 |
<th style="border-left-color:#fff;border-bottom-color:#fff;"></th>
|
backend/components/dialogs/payment/templates/dialog.php
CHANGED
@@ -3,7 +3,7 @@ use Bookly\Backend\Components\Controls\Buttons;
|
|
3 |
?>
|
4 |
<script type="text/ng-template" id="bookly-payment-details-dialog.tpl">
|
5 |
<div class="bookly-modal bookly-fade" id="bookly-payment-details-modal" tabindex="-1" role="dialog">
|
6 |
-
<div class="modal-dialog modal-
|
7 |
<div class="modal-content">
|
8 |
<div class="modal-header">
|
9 |
<h5 class="modal-title"><?php esc_html_e( 'Payment', 'bookly' ) ?></h5>
|
3 |
?>
|
4 |
<script type="text/ng-template" id="bookly-payment-details-dialog.tpl">
|
5 |
<div class="bookly-modal bookly-fade" id="bookly-payment-details-modal" tabindex="-1" role="dialog">
|
6 |
+
<div class="modal-dialog modal-xl" role="document">
|
7 |
<div class="modal-content">
|
8 |
<div class="modal-header">
|
9 |
<h5 class="modal-title"><?php esc_html_e( 'Payment', 'bookly' ) ?></h5>
|
backend/components/dialogs/service/edit/forms/Service.php
CHANGED
@@ -49,6 +49,7 @@ class Service extends Lib\Base\Form
|
|
49 |
'visibility',
|
50 |
'positions',
|
51 |
'taxes',
|
|
|
52 |
'same_staff_for_subservices',
|
53 |
'unit_duration',
|
54 |
'units_min',
|
49 |
'visibility',
|
50 |
'positions',
|
51 |
'taxes',
|
52 |
+
'discounts',
|
53 |
'same_staff_for_subservices',
|
54 |
'unit_duration',
|
55 |
'units_min',
|
backend/components/dialogs/service/edit/proxy/Discounts.php
ADDED
@@ -0,0 +1,16 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Bookly\Backend\Components\Dialogs\Service\Edit\Proxy;
|
3 |
+
|
4 |
+
use Bookly\Lib;
|
5 |
+
|
6 |
+
/**
|
7 |
+
* Class Discounts
|
8 |
+
* @package Bookly\Backend\Components\Dialogs\Service\Edit\Proxy
|
9 |
+
*
|
10 |
+
* @method static array getDiscounts( int $service_id ) Get discounts list.
|
11 |
+
* @method static void renderSubForm( array $service ) Render discounts sub-form.
|
12 |
+
*/
|
13 |
+
abstract class Discounts extends Lib\Base\Proxy
|
14 |
+
{
|
15 |
+
|
16 |
+
}
|
backend/components/dialogs/service/edit/resources/js/service-edit-dialog.js
CHANGED
@@ -10,6 +10,7 @@ jQuery(function ($) {
|
|
10 |
$advancedContainer = $('#bookly-services-advanced-container', $serviceDialog),
|
11 |
$timeContainer = $('#bookly-services-time-container', $serviceDialog),
|
12 |
$extrasContainer = $('#bookly-services-extras-container', $serviceDialog),
|
|
|
13 |
$specialDaysContainer = $('#bookly-services-special-days-container', $serviceDialog),
|
14 |
$scheduleContainer = $('#bookly-services-schedule-container', $serviceDialog),
|
15 |
$additionalContainer = $('#bookly-service-additional-html', $serviceDialog),
|
@@ -47,6 +48,7 @@ jQuery(function ($) {
|
|
47 |
$advancedContainer.html(response.data.advanced_html);
|
48 |
$timeContainer.html(response.data.time_html);
|
49 |
$extrasContainer.html(response.data.extras_html);
|
|
|
50 |
$specialDaysContainer.html(response.data.special_days_html);
|
51 |
$scheduleContainer.html(response.data.schedule_html);
|
52 |
$additionalContainer.html(response.data.additional_html);
|
@@ -180,7 +182,7 @@ jQuery(function ($) {
|
|
180 |
$('#bookly-services-general-tab').click();
|
181 |
}
|
182 |
|
183 |
-
$(document.body).trigger('service.initForm', [$wrapContainer, data.id]);
|
184 |
|
185 |
$serviceTabs.show();
|
186 |
$serviceLoading.hide();
|
10 |
$advancedContainer = $('#bookly-services-advanced-container', $serviceDialog),
|
11 |
$timeContainer = $('#bookly-services-time-container', $serviceDialog),
|
12 |
$extrasContainer = $('#bookly-services-extras-container', $serviceDialog),
|
13 |
+
$discountsContainer = $('#bookly-discounts-container', $serviceDialog),
|
14 |
$specialDaysContainer = $('#bookly-services-special-days-container', $serviceDialog),
|
15 |
$scheduleContainer = $('#bookly-services-schedule-container', $serviceDialog),
|
16 |
$additionalContainer = $('#bookly-service-additional-html', $serviceDialog),
|
48 |
$advancedContainer.html(response.data.advanced_html);
|
49 |
$timeContainer.html(response.data.time_html);
|
50 |
$extrasContainer.html(response.data.extras_html);
|
51 |
+
$discountsContainer.html(response.data.discounts_html);
|
52 |
$specialDaysContainer.html(response.data.special_days_html);
|
53 |
$scheduleContainer.html(response.data.schedule_html);
|
54 |
$additionalContainer.html(response.data.additional_html);
|
182 |
$('#bookly-services-general-tab').click();
|
183 |
}
|
184 |
|
185 |
+
$(document.body).trigger('service.initForm', [$wrapContainer, data.id, response.data]);
|
186 |
|
187 |
$serviceTabs.show();
|
188 |
$serviceLoading.hide();
|
backend/components/dialogs/table_settings/Ajax.php
CHANGED
@@ -17,6 +17,7 @@ class Ajax extends Lib\Base\Ajax
|
|
17 |
'custom_statuses',
|
18 |
'customer_groups',
|
19 |
'customers',
|
|
|
20 |
'email_notifications',
|
21 |
'locations',
|
22 |
'packages',
|
17 |
'custom_statuses',
|
18 |
'customer_groups',
|
19 |
'customers',
|
20 |
+
'discounts',
|
21 |
'email_notifications',
|
22 |
'locations',
|
23 |
'packages',
|
backend/modules/appearance/resources/css/appearance.css
CHANGED
@@ -4,9 +4,7 @@
|
|
4 |
#bookly-step-settings > div > .col-md-3:nth-child(4n+1) {
|
5 |
clear: both;
|
6 |
}
|
7 |
-
|
8 |
-
padding-left: 25px;
|
9 |
-
}
|
10 |
#bookly-tbs .bookly-animate {
|
11 |
-webkit-transition: background-color 500ms ease-in;
|
12 |
-ms-transition: background-color 500ms ease-in;
|
4 |
#bookly-step-settings > div > .col-md-3:nth-child(4n+1) {
|
5 |
clear: both;
|
6 |
}
|
7 |
+
|
|
|
|
|
8 |
#bookly-tbs .bookly-animate {
|
9 |
-webkit-transition: background-color 500ms ease-in;
|
10 |
-ms-transition: background-color 500ms ease-in;
|
backend/modules/calendar/Ajax.php
CHANGED
@@ -2,8 +2,10 @@
|
|
2 |
namespace Bookly\Backend\Modules\Calendar;
|
3 |
|
4 |
use Bookly\Lib;
|
|
|
5 |
use Bookly\Lib\Entities\Staff;
|
6 |
use Bookly\Lib\Utils\DateTime;
|
|
|
7 |
|
8 |
/**
|
9 |
* Class Ajax
|
@@ -29,6 +31,9 @@ class Ajax extends Page
|
|
29 |
$start_date = new \DateTime( self::parameter( 'start' ) );
|
30 |
$end_date = new \DateTime( self::parameter( 'end' ) );
|
31 |
|
|
|
|
|
|
|
32 |
// Due to possibly different time zones of staff members expand start and end dates
|
33 |
// to provide 100% coverage of the requested date range
|
34 |
$start_date->sub( $one_day );
|
@@ -36,8 +41,8 @@ class Ajax extends Page
|
|
36 |
|
37 |
// Load staff members
|
38 |
$query = Staff::query()->whereNot( 'visibility', 'archive' );
|
39 |
-
if (
|
40 |
-
if (
|
41 |
$query->whereIn( 'id', explode( ',', self::parameter( 'staff_ids' ) ) );
|
42 |
} else {
|
43 |
$query->where( 'wp_user_id', get_current_user_id() );
|
@@ -57,7 +62,7 @@ class Ajax extends Page
|
|
57 |
}
|
58 |
|
59 |
foreach ( $staff_members as $staff ) {
|
60 |
-
$result = array_merge( $result, self::_getAppointmentsForCalendar( $staff->getId(), $start_date, $end_date ) );
|
61 |
|
62 |
// Schedule
|
63 |
$schedule = array();
|
@@ -91,11 +96,11 @@ class Ajax extends Page
|
|
91 |
if ( $sp_day['break_start'] ) {
|
92 |
$break_start = date(
|
93 |
'Y-m-d H:i:s',
|
94 |
-
strtotime( $sp_day['date'] ) +
|
95 |
);
|
96 |
$break_end = date(
|
97 |
'Y-m-d H:i:s',
|
98 |
-
strtotime( $sp_day['date'] ) +
|
99 |
);
|
100 |
$schedule[] = array(
|
101 |
'start' => $break_start,
|
@@ -124,11 +129,11 @@ class Ajax extends Page
|
|
124 |
foreach ( $item->getBreaksList() as $break ) {
|
125 |
$break_start = date(
|
126 |
'Y-m-d H:i:s',
|
127 |
-
$day->getTimestamp() +
|
128 |
);
|
129 |
$break_end = date(
|
130 |
'Y-m-d H:i:s',
|
131 |
-
$day->getTimestamp() +
|
132 |
);
|
133 |
$schedule[] = array(
|
134 |
'start' => $break_start,
|
@@ -151,12 +156,11 @@ class Ajax extends Page
|
|
151 |
// Add schedule to result,
|
152 |
// with appropriate time zone shift if needed
|
153 |
$staff_tz = $staff->getTimeZone();
|
154 |
-
$
|
155 |
-
$convert_tz = $staff_tz && $staff_tz !== $wp_tz;
|
156 |
foreach ( $schedule as $item ) {
|
157 |
if ( $convert_tz ) {
|
158 |
-
$item['start'] = DateTime::convertTimeZone( $item['start'], $staff_tz, $
|
159 |
-
$item['end'] = DateTime::convertTimeZone( $item['end'], $staff_tz, $
|
160 |
}
|
161 |
$result[] = array(
|
162 |
'start' => $item['start'],
|
@@ -185,12 +189,13 @@ class Ajax extends Page
|
|
185 |
/**
|
186 |
* Get appointments for Event Calendar
|
187 |
*
|
188 |
-
* @param
|
189 |
* @param \DateTime $start_date
|
190 |
* @param \DateTime $end_date
|
|
|
191 |
* @return array
|
192 |
*/
|
193 |
-
private static function _getAppointmentsForCalendar( $staff_id, \DateTime $start_date, \DateTime $end_date )
|
194 |
{
|
195 |
$query = Lib\Entities\Appointment::query( 'a' )
|
196 |
->where( 'st.id', $staff_id )
|
@@ -217,6 +222,6 @@ class Ajax extends Page
|
|
217 |
|
218 |
Proxy\Shared::prepareAppointmentsQueryForCalendar( $query, $staff_id, $start_date, $end_date );
|
219 |
|
220 |
-
return self::buildAppointmentsForCalendar( $staff_id, $
|
221 |
}
|
222 |
}
|
2 |
namespace Bookly\Backend\Modules\Calendar;
|
3 |
|
4 |
use Bookly\Lib;
|
5 |
+
use Bookly\Lib\Config;
|
6 |
use Bookly\Lib\Entities\Staff;
|
7 |
use Bookly\Lib\Utils\DateTime;
|
8 |
+
use Bookly\Lib\Utils\Common;
|
9 |
|
10 |
/**
|
11 |
* Class Ajax
|
31 |
$start_date = new \DateTime( self::parameter( 'start' ) );
|
32 |
$end_date = new \DateTime( self::parameter( 'end' ) );
|
33 |
|
34 |
+
// Determine display time zone
|
35 |
+
$display_tz = Common::getCurrentUserTimeZone();
|
36 |
+
|
37 |
// Due to possibly different time zones of staff members expand start and end dates
|
38 |
// to provide 100% coverage of the requested date range
|
39 |
$start_date->sub( $one_day );
|
41 |
|
42 |
// Load staff members
|
43 |
$query = Staff::query()->whereNot( 'visibility', 'archive' );
|
44 |
+
if ( Config::proActive() ) {
|
45 |
+
if ( Common::isCurrentUserSupervisor() ) {
|
46 |
$query->whereIn( 'id', explode( ',', self::parameter( 'staff_ids' ) ) );
|
47 |
} else {
|
48 |
$query->where( 'wp_user_id', get_current_user_id() );
|
62 |
}
|
63 |
|
64 |
foreach ( $staff_members as $staff ) {
|
65 |
+
$result = array_merge( $result, self::_getAppointmentsForCalendar( $staff->getId(), $start_date, $end_date, $display_tz ) );
|
66 |
|
67 |
// Schedule
|
68 |
$schedule = array();
|
96 |
if ( $sp_day['break_start'] ) {
|
97 |
$break_start = date(
|
98 |
'Y-m-d H:i:s',
|
99 |
+
strtotime( $sp_day['date'] ) + DateTime::timeToSeconds( $sp_day['break_start'] )
|
100 |
);
|
101 |
$break_end = date(
|
102 |
'Y-m-d H:i:s',
|
103 |
+
strtotime( $sp_day['date'] ) + DateTime::timeToSeconds( $sp_day['break_end'] )
|
104 |
);
|
105 |
$schedule[] = array(
|
106 |
'start' => $break_start,
|
129 |
foreach ( $item->getBreaksList() as $break ) {
|
130 |
$break_start = date(
|
131 |
'Y-m-d H:i:s',
|
132 |
+
$day->getTimestamp() + DateTime::timeToSeconds( $break['start_time'] )
|
133 |
);
|
134 |
$break_end = date(
|
135 |
'Y-m-d H:i:s',
|
136 |
+
$day->getTimestamp() + DateTime::timeToSeconds( $break['end_time'] )
|
137 |
);
|
138 |
$schedule[] = array(
|
139 |
'start' => $break_start,
|
156 |
// Add schedule to result,
|
157 |
// with appropriate time zone shift if needed
|
158 |
$staff_tz = $staff->getTimeZone();
|
159 |
+
$convert_tz = $staff_tz && $staff_tz !== $display_tz;
|
|
|
160 |
foreach ( $schedule as $item ) {
|
161 |
if ( $convert_tz ) {
|
162 |
+
$item['start'] = DateTime::convertTimeZone( $item['start'], $staff_tz, $display_tz );
|
163 |
+
$item['end'] = DateTime::convertTimeZone( $item['end'], $staff_tz, $display_tz );
|
164 |
}
|
165 |
$result[] = array(
|
166 |
'start' => $item['start'],
|
189 |
/**
|
190 |
* Get appointments for Event Calendar
|
191 |
*
|
192 |
+
* @param int $staff_id
|
193 |
* @param \DateTime $start_date
|
194 |
* @param \DateTime $end_date
|
195 |
+
* @param string $display_tz
|
196 |
* @return array
|
197 |
*/
|
198 |
+
private static function _getAppointmentsForCalendar( $staff_id, \DateTime $start_date, \DateTime $end_date, $display_tz )
|
199 |
{
|
200 |
$query = Lib\Entities\Appointment::query( 'a' )
|
201 |
->where( 'st.id', $staff_id )
|
222 |
|
223 |
Proxy\Shared::prepareAppointmentsQueryForCalendar( $query, $staff_id, $start_date, $end_date );
|
224 |
|
225 |
+
return self::buildAppointmentsForCalendar( $query, $staff_id, $display_tz );
|
226 |
}
|
227 |
}
|
backend/modules/calendar/Page.php
CHANGED
@@ -2,6 +2,12 @@
|
|
2 |
namespace Bookly\Backend\Modules\Calendar;
|
3 |
|
4 |
use Bookly\Lib;
|
|
|
|
|
|
|
|
|
|
|
|
|
5 |
|
6 |
/**
|
7 |
* Class Page
|
@@ -19,16 +25,16 @@ class Page extends Lib\Base\Ajax
|
|
19 |
'backend' => array( 'bootstrap/css/bootstrap.min.css' ),
|
20 |
) );
|
21 |
|
22 |
-
if (
|
23 |
-
if (
|
24 |
-
$staff_members =
|
25 |
->whereNot( 'visibility', 'archive' )
|
26 |
->sortBy( 'position' )
|
27 |
->find()
|
28 |
;
|
29 |
$staff_dropdown_data = Lib\Proxy\Pro::getStaffDataForDropDown();
|
30 |
} else {
|
31 |
-
$staff_members =
|
32 |
->where( 'wp_user_id', get_current_user_id() )
|
33 |
->whereNot( 'visibility', 'archive' )
|
34 |
->find()
|
@@ -41,7 +47,7 @@ class Page extends Lib\Base\Ajax
|
|
41 |
);
|
42 |
}
|
43 |
} else {
|
44 |
-
$staff =
|
45 |
$staff_members = $staff ? array( $staff ) : array();
|
46 |
$staff_dropdown_data = array(
|
47 |
0 => array(
|
@@ -75,9 +81,9 @@ class Page extends Lib\Base\Ajax
|
|
75 |
$scroll_time = '08:00:00';
|
76 |
// Find min and max business hours
|
77 |
$min = $max = null;
|
78 |
-
foreach (
|
79 |
if ( $bh['start'] === null ) {
|
80 |
-
if (
|
81 |
$hidden_days[] = $day;
|
82 |
}
|
83 |
continue;
|
@@ -91,26 +97,26 @@ class Page extends Lib\Base\Ajax
|
|
91 |
}
|
92 |
if ( $min !== null ) {
|
93 |
$scroll_time = $min;
|
94 |
-
if (
|
95 |
$min_time = $min;
|
96 |
$max_time = $max;
|
97 |
} else if ( $max > '24:00:00' ) {
|
98 |
-
$min_time =
|
99 |
$max_time = $max;
|
100 |
}
|
101 |
}
|
102 |
|
103 |
wp_localize_script( 'bookly-calendar.js', 'BooklyL10n', array(
|
104 |
-
'csrf_token' =>
|
105 |
'hiddenDays' => $hidden_days,
|
106 |
'slotDuration' => $slot->format( '%H:%I:%S' ),
|
107 |
'slotMinTime' => $min_time,
|
108 |
'slotMaxTime' => $max_time,
|
109 |
'scrollTime' => $scroll_time,
|
110 |
-
'locale' =>
|
111 |
-
'mjsTimeFormat' =>
|
112 |
-
'datePicker' =>
|
113 |
-
'dateRange' =>
|
114 |
'today' => __( 'Today', 'bookly' ),
|
115 |
'week' => __( 'Week', 'bookly' ),
|
116 |
'day' => __( 'Day', 'bookly' ),
|
@@ -119,23 +125,23 @@ class Page extends Lib\Base\Ajax
|
|
119 |
'noEvents' => __( 'No appointments for selected period.', 'bookly' ),
|
120 |
'delete' => __( 'Delete', 'bookly' ),
|
121 |
'are_you_sure' => __( 'Are you sure?', 'bookly' ),
|
122 |
-
'filterStaffWithEvents' =>
|
123 |
'recurring_appointments' => array(
|
124 |
-
'active' => (int)
|
125 |
'title' => __( 'Recurring appointments', 'bookly' ),
|
126 |
),
|
127 |
'waiting_list' => array(
|
128 |
-
'active' => (int)
|
129 |
'title' => __( 'On waiting list', 'bookly' ),
|
130 |
),
|
131 |
'packages' => array(
|
132 |
-
'active' => (int)
|
133 |
'title' => __( 'Package', 'bookly' ),
|
134 |
),
|
135 |
) );
|
136 |
|
137 |
$refresh_rate = get_user_meta( get_current_user_id(), 'bookly_calendar_refresh_rate', true );
|
138 |
-
$services_dropdown_data =
|
139 |
|
140 |
self::renderTemplate( 'calendar', compact( 'staff_members', 'staff_dropdown_data', 'services_dropdown_data', 'refresh_rate' ) );
|
141 |
}
|
@@ -143,11 +149,12 @@ class Page extends Lib\Base\Ajax
|
|
143 |
/**
|
144 |
* Build appointments for Event Calendar.
|
145 |
*
|
146 |
-
* @param integer $staff_id
|
147 |
* @param Lib\Query $query
|
|
|
|
|
148 |
* @return mixed
|
149 |
*/
|
150 |
-
public static function buildAppointmentsForCalendar(
|
151 |
{
|
152 |
$one_participant = '<div>' . str_replace( "\n", '</div><div>', get_option( 'bookly_cal_one_participant' ) ) . '</div>';
|
153 |
$many_participants = '<div>' . str_replace( "\n", '</div><div>', get_option( 'bookly_cal_many_participants' ) ) . '</div>';
|
@@ -198,7 +205,7 @@ class Page extends Lib\Base\Ajax
|
|
198 |
COALESCE(s.title,a.custom_service_name) AS service_name, COALESCE(s.color,"silver") AS service_color, s.info AS service_info,
|
199 |
COALESCE(ss.price,a.custom_service_price) AS service_price,
|
200 |
st.full_name AS staff_name, st.email AS staff_email, st.info AS staff_info, st.phone AS staff_phone,
|
201 |
-
(SELECT SUM(ca.number_of_persons) FROM ' .
|
202 |
s.duration,
|
203 |
s.start_time_info,
|
204 |
s.end_time_info,
|
@@ -212,7 +219,7 @@ class Page extends Lib\Base\Ajax
|
|
212 |
ct.name AS category_name,
|
213 |
c.full_name AS client_name, c.first_name AS client_first_name, c.last_name AS client_last_name, c.phone AS client_phone, c.email AS client_email, c.id AS customer_id,
|
214 |
p.total, p.type AS payment_gateway, p.status AS payment_status, p.paid,
|
215 |
-
(SELECT SUM(ca.number_of_persons) FROM ' .
|
216 |
->leftJoin( 'CustomerAppointment', 'ca', 'ca.appointment_id = a.id' )
|
217 |
->leftJoin( 'Customer', 'c', 'c.id = ca.customer_id' )
|
218 |
->leftJoin( 'Payment', 'p', 'p.id = ca.payment_id' )
|
@@ -221,20 +228,28 @@ class Page extends Lib\Base\Ajax
|
|
221 |
->leftJoin( 'Staff', 'st', 'st.id = a.staff_id' )
|
222 |
->leftJoin( 'StaffService', 'ss', 'ss.staff_id = a.staff_id AND ss.service_id = a.service_id' );
|
223 |
|
224 |
-
if (
|
225 |
$query->addSelect( 'COALESCE(ss.capacity_max,9999) AS service_capacity' );
|
226 |
} else {
|
227 |
$query->addSelect( '1 AS service_capacity' );
|
228 |
}
|
229 |
|
230 |
-
if (
|
231 |
$query->addSelect( 'c.country, c.state, c.postcode, c.city, c.street, c.street_number, c.additional_address' );
|
232 |
}
|
233 |
|
|
|
|
|
234 |
$appointments = array();
|
|
|
|
|
235 |
|
236 |
foreach ( $query->fetchArray() as $appointment ) {
|
237 |
-
if ( ! isset( $appointments[ $appointment['id'] ] ) ) {
|
|
|
|
|
|
|
|
|
238 |
$appointments[ $appointment['id'] ] = $appointment;
|
239 |
}
|
240 |
$appointments[ $appointment['id'] ]['customers'][] = array(
|
@@ -245,30 +260,30 @@ class Page extends Lib\Base\Ajax
|
|
245 |
}
|
246 |
|
247 |
$status_codes = array(
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
);
|
252 |
$cancelled_statuses = array(
|
253 |
-
|
254 |
-
|
255 |
);
|
256 |
$pending_statuses = array(
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
);
|
261 |
|
262 |
foreach ( $appointments as $key => $appointment ) {
|
263 |
$codes = $default_codes;
|
264 |
-
$codes['{appointment_date}'] =
|
265 |
$codes['{appointment_time}'] = $appointment['duration'] >= DAY_IN_SECONDS && $appointment['start_time_info'] ? $appointment['start_time_info'] : Lib\Utils\DateTime::formatTime( $appointment['start_date'] );
|
266 |
$codes['{booking_number}'] = $appointment['id'];
|
267 |
$codes['{internal_note}'] = esc_html( $appointment['internal_note'] );
|
268 |
$codes['{on_waiting_list}'] = $appointment['on_waiting_list'];
|
269 |
$codes['{service_name}'] = $appointment['service_name'] ? esc_html( $appointment['service_name'] ) : __( 'Untitled', 'bookly' );
|
270 |
-
$codes['{service_price}'] =
|
271 |
-
$codes['{service_duration}'] =
|
272 |
$codes['{signed_up}'] = $appointment['total_number_of_persons'];
|
273 |
foreach ( array( 'staff_name', 'staff_phone', 'staff_info', 'staff_email', 'service_info', 'service_capacity', 'category_name' ) as $field ) {
|
274 |
$codes[ '{' . $field . '}' ] = esc_html( $appointment[ $field ] );
|
@@ -288,7 +303,7 @@ class Page extends Lib\Base\Ajax
|
|
288 |
}
|
289 |
if ( $customer['appointment_status'] != $overall_status && ( ! in_array( $customer['appointment_status'], $cancelled_statuses ) || ! in_array( $overall_status, $cancelled_statuses ) ) ) {
|
290 |
if ( in_array( $customer['appointment_status'], $pending_statuses ) && in_array( $overall_status, $pending_statuses ) ) {
|
291 |
-
$overall_status =
|
292 |
} else {
|
293 |
$overall_status = '';
|
294 |
}
|
@@ -298,7 +313,7 @@ class Page extends Lib\Base\Ajax
|
|
298 |
} else {
|
299 |
$number_of_persons = '';
|
300 |
}
|
301 |
-
$popover_customers .= '<div class="d-flex"><div class="text-muted flex-fill">' . $customer['client_name'] . '</div><div class="text-nowrap">' . $number_of_persons . '<span class="badge badge-' . $status_color . '">' .
|
302 |
}
|
303 |
|
304 |
// Display customer information only if there is 1 customer. Don't confuse with number_of_persons.
|
@@ -313,15 +328,15 @@ class Page extends Lib\Base\Ajax
|
|
313 |
|
314 |
// Payment.
|
315 |
if ( $appointment['total'] ) {
|
316 |
-
$codes['{total_price}'] =
|
317 |
-
$codes['{amount_paid}'] =
|
318 |
-
$codes['{amount_due}'] =
|
319 |
-
$codes['{total_price}'] =
|
320 |
$codes['{payment_type}'] = Lib\Entities\Payment::typeToString( $appointment['payment_gateway'] );
|
321 |
$codes['{payment_status}'] = Lib\Entities\Payment::statusToString( $appointment['payment_status'] );
|
322 |
}
|
323 |
// Status.
|
324 |
-
$codes['{status}'] =
|
325 |
|
326 |
$tooltip = '<i class="fas fa-fw fa-circle mr-1" style="color:%s"></i><span>{service_name}</span>' . $popover_customers . '<span class="d-block text-muted">{appointment_time} - %s</span>';
|
327 |
|
@@ -333,7 +348,7 @@ class Page extends Lib\Base\Ajax
|
|
333 |
|
334 |
$tooltip = sprintf( $tooltip,
|
335 |
$appointment['service_color'],
|
336 |
-
( $appointment['duration'] * $appointment['units'] >= DAY_IN_SECONDS && $appointment['start_time_info'] ? $appointment['end_time_info'] :
|
337 |
);
|
338 |
|
339 |
$codes = Proxy\Shared::prepareAppointmentCodesData( $codes, $appointment, $participants );
|
2 |
namespace Bookly\Backend\Modules\Calendar;
|
3 |
|
4 |
use Bookly\Lib;
|
5 |
+
use Bookly\Lib\Config;
|
6 |
+
use Bookly\Lib\Entities\CustomerAppointment;
|
7 |
+
use Bookly\Lib\Entities\Staff;
|
8 |
+
use Bookly\Lib\Utils\Common;
|
9 |
+
use Bookly\Lib\Utils\DateTime;
|
10 |
+
use Bookly\Lib\Utils\Price;
|
11 |
|
12 |
/**
|
13 |
* Class Page
|
25 |
'backend' => array( 'bootstrap/css/bootstrap.min.css' ),
|
26 |
) );
|
27 |
|
28 |
+
if ( Config::proActive() ) {
|
29 |
+
if ( Common::isCurrentUserSupervisor() ) {
|
30 |
+
$staff_members = Staff::query()
|
31 |
->whereNot( 'visibility', 'archive' )
|
32 |
->sortBy( 'position' )
|
33 |
->find()
|
34 |
;
|
35 |
$staff_dropdown_data = Lib\Proxy\Pro::getStaffDataForDropDown();
|
36 |
} else {
|
37 |
+
$staff_members = Staff::query()
|
38 |
->where( 'wp_user_id', get_current_user_id() )
|
39 |
->whereNot( 'visibility', 'archive' )
|
40 |
->find()
|
47 |
);
|
48 |
}
|
49 |
} else {
|
50 |
+
$staff = Staff::query()->findOne();
|
51 |
$staff_members = $staff ? array( $staff ) : array();
|
52 |
$staff_dropdown_data = array(
|
53 |
0 => array(
|
81 |
$scroll_time = '08:00:00';
|
82 |
// Find min and max business hours
|
83 |
$min = $max = null;
|
84 |
+
foreach ( Config::getBusinessHours() as $day => $bh ) {
|
85 |
if ( $bh['start'] === null ) {
|
86 |
+
if ( Config::showOnlyBusinessDaysInCalendar() ) {
|
87 |
$hidden_days[] = $day;
|
88 |
}
|
89 |
continue;
|
97 |
}
|
98 |
if ( $min !== null ) {
|
99 |
$scroll_time = $min;
|
100 |
+
if ( Config::showOnlyBusinessHoursInCalendar() ) {
|
101 |
$min_time = $min;
|
102 |
$max_time = $max;
|
103 |
} else if ( $max > '24:00:00' ) {
|
104 |
+
$min_time = DateTime::buildTimeString( DateTime::timeToSeconds( $max ) - DAY_IN_SECONDS );
|
105 |
$max_time = $max;
|
106 |
}
|
107 |
}
|
108 |
|
109 |
wp_localize_script( 'bookly-calendar.js', 'BooklyL10n', array(
|
110 |
+
'csrf_token' => Common::getCsrfToken(),
|
111 |
'hiddenDays' => $hidden_days,
|
112 |
'slotDuration' => $slot->format( '%H:%I:%S' ),
|
113 |
'slotMinTime' => $min_time,
|
114 |
'slotMaxTime' => $max_time,
|
115 |
'scrollTime' => $scroll_time,
|
116 |
+
'locale' => Config::getShortLocale(),
|
117 |
+
'mjsTimeFormat' => DateTime::convertFormat( 'time', DateTime::FORMAT_MOMENT_JS ),
|
118 |
+
'datePicker' => DateTime::datePickerOptions(),
|
119 |
+
'dateRange' => DateTime::dateRangeOptions(),
|
120 |
'today' => __( 'Today', 'bookly' ),
|
121 |
'week' => __( 'Week', 'bookly' ),
|
122 |
'day' => __( 'Day', 'bookly' ),
|
125 |
'noEvents' => __( 'No appointments for selected period.', 'bookly' ),
|
126 |
'delete' => __( 'Delete', 'bookly' ),
|
127 |
'are_you_sure' => __( 'Are you sure?', 'bookly' ),
|
128 |
+
'filterStaffWithEvents' => Config::showOnlyStaffWithAppointmentsInCalendarDayView(),
|
129 |
'recurring_appointments' => array(
|
130 |
+
'active' => (int) Config::recurringAppointmentsActive(),
|
131 |
'title' => __( 'Recurring appointments', 'bookly' ),
|
132 |
),
|
133 |
'waiting_list' => array(
|
134 |
+
'active' => (int) Config::waitingListActive(),
|
135 |
'title' => __( 'On waiting list', 'bookly' ),
|
136 |
),
|
137 |
'packages' => array(
|
138 |
+
'active' => (int) Config::packagesActive(),
|
139 |
'title' => __( 'Package', 'bookly' ),
|
140 |
),
|
141 |
) );
|
142 |
|
143 |
$refresh_rate = get_user_meta( get_current_user_id(), 'bookly_calendar_refresh_rate', true );
|
144 |
+
$services_dropdown_data = Common::getServiceDataForDropDown();
|
145 |
|
146 |
self::renderTemplate( 'calendar', compact( 'staff_members', 'staff_dropdown_data', 'services_dropdown_data', 'refresh_rate' ) );
|
147 |
}
|
149 |
/**
|
150 |
* Build appointments for Event Calendar.
|
151 |
*
|
|
|
152 |
* @param Lib\Query $query
|
153 |
+
* @param int $staff_id
|
154 |
+
* @param string $display_tz
|
155 |
* @return mixed
|
156 |
*/
|
157 |
+
public static function buildAppointmentsForCalendar( Lib\Query $query, $staff_id, $display_tz )
|
158 |
{
|
159 |
$one_participant = '<div>' . str_replace( "\n", '</div><div>', get_option( 'bookly_cal_one_participant' ) ) . '</div>';
|
160 |
$many_participants = '<div>' . str_replace( "\n", '</div><div>', get_option( 'bookly_cal_many_participants' ) ) . '</div>';
|
205 |
COALESCE(s.title,a.custom_service_name) AS service_name, COALESCE(s.color,"silver") AS service_color, s.info AS service_info,
|
206 |
COALESCE(ss.price,a.custom_service_price) AS service_price,
|
207 |
st.full_name AS staff_name, st.email AS staff_email, st.info AS staff_info, st.phone AS staff_phone,
|
208 |
+
(SELECT SUM(ca.number_of_persons) FROM ' . CustomerAppointment::getTableName() . ' ca WHERE ca.appointment_id = a.id) AS total_number_of_persons,
|
209 |
s.duration,
|
210 |
s.start_time_info,
|
211 |
s.end_time_info,
|
219 |
ct.name AS category_name,
|
220 |
c.full_name AS client_name, c.first_name AS client_first_name, c.last_name AS client_last_name, c.phone AS client_phone, c.email AS client_email, c.id AS customer_id,
|
221 |
p.total, p.type AS payment_gateway, p.status AS payment_status, p.paid,
|
222 |
+
(SELECT SUM(ca.number_of_persons) FROM ' . CustomerAppointment::getTableName() . ' ca WHERE ca.appointment_id = a.id AND ca.status = "waitlisted") AS on_waiting_list' )
|
223 |
->leftJoin( 'CustomerAppointment', 'ca', 'ca.appointment_id = a.id' )
|
224 |
->leftJoin( 'Customer', 'c', 'c.id = ca.customer_id' )
|
225 |
->leftJoin( 'Payment', 'p', 'p.id = ca.payment_id' )
|
228 |
->leftJoin( 'Staff', 'st', 'st.id = a.staff_id' )
|
229 |
->leftJoin( 'StaffService', 'ss', 'ss.staff_id = a.staff_id AND ss.service_id = a.service_id' );
|
230 |
|
231 |
+
if ( Config::groupBookingActive() ) {
|
232 |
$query->addSelect( 'COALESCE(ss.capacity_max,9999) AS service_capacity' );
|
233 |
} else {
|
234 |
$query->addSelect( '1 AS service_capacity' );
|
235 |
}
|
236 |
|
237 |
+
if ( Config::proActive() ) {
|
238 |
$query->addSelect( 'c.country, c.state, c.postcode, c.city, c.street, c.street_number, c.additional_address' );
|
239 |
}
|
240 |
|
241 |
+
// Fetch appointments,
|
242 |
+
// and shift the dates to appropriate time zone if needed
|
243 |
$appointments = array();
|
244 |
+
$wp_tz = Config::getWPTimeZone();
|
245 |
+
$convert_tz = $display_tz !== $wp_tz;
|
246 |
|
247 |
foreach ( $query->fetchArray() as $appointment ) {
|
248 |
+
if ( ! isset ( $appointments[ $appointment['id'] ] ) ) {
|
249 |
+
if ( $convert_tz ) {
|
250 |
+
$appointment['start_date'] = DateTime::convertTimeZone( $appointment['start_date'], $wp_tz, $display_tz );
|
251 |
+
$appointment['end_date'] = DateTime::convertTimeZone( $appointment['end_date'], $wp_tz, $display_tz );
|
252 |
+
}
|
253 |
$appointments[ $appointment['id'] ] = $appointment;
|
254 |
}
|
255 |
$appointments[ $appointment['id'] ]['customers'][] = array(
|
260 |
}
|
261 |
|
262 |
$status_codes = array(
|
263 |
+
CustomerAppointment::STATUS_APPROVED => 'success',
|
264 |
+
CustomerAppointment::STATUS_CANCELLED => 'danger',
|
265 |
+
CustomerAppointment::STATUS_REJECTED => 'danger',
|
266 |
);
|
267 |
$cancelled_statuses = array(
|
268 |
+
CustomerAppointment::STATUS_CANCELLED,
|
269 |
+
CustomerAppointment::STATUS_REJECTED,
|
270 |
);
|
271 |
$pending_statuses = array(
|
272 |
+
CustomerAppointment::STATUS_CANCELLED,
|
273 |
+
CustomerAppointment::STATUS_REJECTED,
|
274 |
+
CustomerAppointment::STATUS_PENDING,
|
275 |
);
|
276 |
|
277 |
foreach ( $appointments as $key => $appointment ) {
|
278 |
$codes = $default_codes;
|
279 |
+
$codes['{appointment_date}'] = DateTime::formatDate( $appointment['start_date'] );
|
280 |
$codes['{appointment_time}'] = $appointment['duration'] >= DAY_IN_SECONDS && $appointment['start_time_info'] ? $appointment['start_time_info'] : Lib\Utils\DateTime::formatTime( $appointment['start_date'] );
|
281 |
$codes['{booking_number}'] = $appointment['id'];
|
282 |
$codes['{internal_note}'] = esc_html( $appointment['internal_note'] );
|
283 |
$codes['{on_waiting_list}'] = $appointment['on_waiting_list'];
|
284 |
$codes['{service_name}'] = $appointment['service_name'] ? esc_html( $appointment['service_name'] ) : __( 'Untitled', 'bookly' );
|
285 |
+
$codes['{service_price}'] = Price::format( $appointment['service_price'] * $appointment['units'] );
|
286 |
+
$codes['{service_duration}'] = DateTime::secondsToInterval( $appointment['duration'] * $appointment['units'] );
|
287 |
$codes['{signed_up}'] = $appointment['total_number_of_persons'];
|
288 |
foreach ( array( 'staff_name', 'staff_phone', 'staff_info', 'staff_email', 'service_info', 'service_capacity', 'category_name' ) as $field ) {
|
289 |
$codes[ '{' . $field . '}' ] = esc_html( $appointment[ $field ] );
|
303 |
}
|
304 |
if ( $customer['appointment_status'] != $overall_status && ( ! in_array( $customer['appointment_status'], $cancelled_statuses ) || ! in_array( $overall_status, $cancelled_statuses ) ) ) {
|
305 |
if ( in_array( $customer['appointment_status'], $pending_statuses ) && in_array( $overall_status, $pending_statuses ) ) {
|
306 |
+
$overall_status = CustomerAppointment::STATUS_PENDING;
|
307 |
} else {
|
308 |
$overall_status = '';
|
309 |
}
|
313 |
} else {
|
314 |
$number_of_persons = '';
|
315 |
}
|
316 |
+
$popover_customers .= '<div class="d-flex"><div class="text-muted flex-fill">' . $customer['client_name'] . '</div><div class="text-nowrap">' . $number_of_persons . '<span class="badge badge-' . $status_color . '">' . CustomerAppointment::statusToString( $customer['appointment_status'] ) . '</span></div></div>';
|
317 |
}
|
318 |
|
319 |
// Display customer information only if there is 1 customer. Don't confuse with number_of_persons.
|
328 |
|
329 |
// Payment.
|
330 |
if ( $appointment['total'] ) {
|
331 |
+
$codes['{total_price}'] = Price::format( $appointment['total'] );
|
332 |
+
$codes['{amount_paid}'] = Price::format( $appointment['paid'] );
|
333 |
+
$codes['{amount_due}'] = Price::format( $appointment['total'] - $appointment['paid'] );
|
334 |
+
$codes['{total_price}'] = Price::format( $appointment['total'] );
|
335 |
$codes['{payment_type}'] = Lib\Entities\Payment::typeToString( $appointment['payment_gateway'] );
|
336 |
$codes['{payment_status}'] = Lib\Entities\Payment::statusToString( $appointment['payment_status'] );
|
337 |
}
|
338 |
// Status.
|
339 |
+
$codes['{status}'] = CustomerAppointment::statusToString( $appointment['appointment_status'] );
|
340 |
|
341 |
$tooltip = '<i class="fas fa-fw fa-circle mr-1" style="color:%s"></i><span>{service_name}</span>' . $popover_customers . '<span class="d-block text-muted">{appointment_time} - %s</span>';
|
342 |
|
348 |
|
349 |
$tooltip = sprintf( $tooltip,
|
350 |
$appointment['service_color'],
|
351 |
+
( $appointment['duration'] * $appointment['units'] >= DAY_IN_SECONDS && $appointment['start_time_info'] ? $appointment['end_time_info'] : DateTime::formatTime( $appointment['end_date'] ) )
|
352 |
);
|
353 |
|
354 |
$codes = Proxy\Shared::prepareAppointmentCodesData( $codes, $appointment, $participants );
|
backend/modules/cloud_products/Page.php
CHANGED
@@ -53,6 +53,12 @@ class Page extends Lib\Base\Component
|
|
53 |
if ( $subscription['product_price_id'] === $price['id'] ) {
|
54 |
$product['next_billing_date'] = Lib\Utils\DateTime::formatDate( $subscription['next_billing_date'] );
|
55 |
$product['cancel_on_renewal'] = isset( $subscription['cancel_on_renewal'] ) ? $subscription['cancel_on_renewal'] : false;
|
|
|
|
|
|
|
|
|
|
|
|
|
56 |
}
|
57 |
}
|
58 |
}
|
53 |
if ( $subscription['product_price_id'] === $price['id'] ) {
|
54 |
$product['next_billing_date'] = Lib\Utils\DateTime::formatDate( $subscription['next_billing_date'] );
|
55 |
$product['cancel_on_renewal'] = isset( $subscription['cancel_on_renewal'] ) ? $subscription['cancel_on_renewal'] : false;
|
56 |
+
if ( isset( $subscription['usage'] ) ) {
|
57 |
+
$product['usage'] = $subscription['usage']['limit'] === null
|
58 |
+
? __( 'unlimited in trial', 'bookly' )
|
59 |
+
: sprintf( '%d / %d', $subscription['usage']['used'], $subscription['usage']['limit'] );
|
60 |
+
}
|
61 |
+
break 2;
|
62 |
}
|
63 |
}
|
64 |
}
|
backend/modules/cloud_products/templates/_price.php
CHANGED
@@ -28,4 +28,7 @@
|
|
28 |
<?php if ( isset ( $product['next_billing_date'] ) ) : ?>
|
29 |
<div class="mt-2"><?php echo isset ( $product['cancel_on_renewal'] ) && ! $product['cancel_on_renewal'] ? esc_html__( 'Next billing date', 'bookly' ) : esc_html__( 'Deactivation date', 'bookly' ) ?>: <?php echo $product['next_billing_date'] ?></div>
|
30 |
<?php endif ?>
|
|
|
|
|
|
|
31 |
</div>
|
28 |
<?php if ( isset ( $product['next_billing_date'] ) ) : ?>
|
29 |
<div class="mt-2"><?php echo isset ( $product['cancel_on_renewal'] ) && ! $product['cancel_on_renewal'] ? esc_html__( 'Next billing date', 'bookly' ) : esc_html__( 'Deactivation date', 'bookly' ) ?>: <?php echo $product['next_billing_date'] ?></div>
|
30 |
<?php endif ?>
|
31 |
+
<?php if ( isset ( $product['usage'] ) ) : ?>
|
32 |
+
<div class="small"><?php esc_html_e( 'Tasks', 'bookly' ) ?>: <?php echo esc_html( $product['usage'] ) ?></div>
|
33 |
+
<?php endif ?>
|
34 |
</div>
|
backend/modules/customers/Page.php
CHANGED
@@ -38,17 +38,10 @@ class Page extends Lib\Base\Component
|
|
38 |
) );
|
39 |
|
40 |
$datatables = Lib\Utils\Tables::getSettings( 'customers' );
|
41 |
-
if ( ! $datatables['customers']['exist'] ) {
|
42 |
-
$datatables['customers']['settings']['columns']['full_name'] = ! Lib\Config::showFirstLastName();
|
43 |
-
$datatables['customers']['settings']['columns']['first_name'] = Lib\Config::showFirstLastName();
|
44 |
-
$datatables['customers']['settings']['columns']['last_name'] = Lib\Config::showFirstLastName();
|
45 |
-
}
|
46 |
-
|
47 |
-
$info_fields = (array) Lib\Proxy\CustomerInformation::getFieldsWhichMayHaveData();
|
48 |
|
49 |
wp_localize_script( 'bookly-customers.js', 'BooklyL10n', array(
|
50 |
'csrfToken' => Lib\Utils\Common::getCsrfToken(),
|
51 |
-
'infoFields' =>
|
52 |
'edit' => __( 'Edit', 'bookly' ),
|
53 |
'are_you_sure' => __( 'Are you sure?', 'bookly' ),
|
54 |
'wp_users' => get_users( array( 'fields' => array( 'ID', 'display_name' ), 'orderby' => 'display_name' ) ),
|
38 |
) );
|
39 |
|
40 |
$datatables = Lib\Utils\Tables::getSettings( 'customers' );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
41 |
|
42 |
wp_localize_script( 'bookly-customers.js', 'BooklyL10n', array(
|
43 |
'csrfToken' => Lib\Utils\Common::getCsrfToken(),
|
44 |
+
'infoFields' => (array) Lib\Proxy\CustomerInformation::getFieldsWhichMayHaveData(),
|
45 |
'edit' => __( 'Edit', 'bookly' ),
|
46 |
'are_you_sure' => __( 'Are you sure?', 'bookly' ),
|
47 |
'wp_users' => get_users( array( 'fields' => array( 'ID', 'display_name' ), 'orderby' => 'display_name' ) ),
|
backend/modules/debug/Ajax.php
CHANGED
@@ -293,6 +293,15 @@ class Ajax extends Lib\Base\Ajax
|
|
293 |
'bookly_customers.info_fields' => "text null default null",
|
294 |
'bookly_customers.stripe_account' => "varchar(255) null default null",
|
295 |
'bookly_customers.created_at' => "datetime not null",
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
296 |
'bookly_files.id' => "int unsigned not null auto_increment primary key",
|
297 |
'bookly_files.name' => "text not null",
|
298 |
'bookly_files.slug' => "varchar(32) not null",
|
@@ -367,6 +376,9 @@ class Ajax extends Lib\Base\Ajax
|
|
367 |
'bookly_series.id' => "int unsigned not null auto_increment primary key",
|
368 |
'bookly_series.repeat' => "varchar(255) null default null",
|
369 |
'bookly_series.token' => "varchar(255) not null",
|
|
|
|
|
|
|
370 |
'bookly_service_extras.id' => "int unsigned not null auto_increment primary key",
|
371 |
'bookly_service_extras.service_id' => "int unsigned not null",
|
372 |
'bookly_service_extras.attachment_id' => "int unsigned null default null",
|
293 |
'bookly_customers.info_fields' => "text null default null",
|
294 |
'bookly_customers.stripe_account' => "varchar(255) null default null",
|
295 |
'bookly_customers.created_at' => "datetime not null",
|
296 |
+
'bookly_discounts.id' => "int unsigned not null auto_increment primary key",
|
297 |
+
'bookly_discounts.title' => "varchar(255) null default ''",
|
298 |
+
'bookly_discounts.type' => "enum('nop','appointments') not null default 'nop'",
|
299 |
+
'bookly_discounts.threshold' => "int unsigned null default null",
|
300 |
+
'bookly_discounts.discount' => "decimal(3,0) not null default '0'",
|
301 |
+
'bookly_discounts.deduction' => "decimal(10,2) not null default '0.00'",
|
302 |
+
'bookly_discounts.date_start' => "date null default null",
|
303 |
+
'bookly_discounts.date_end' => "date null default null",
|
304 |
+
'bookly_discounts.enabled' => "tinyint(1) not null default '0'",
|
305 |
'bookly_files.id' => "int unsigned not null auto_increment primary key",
|
306 |
'bookly_files.name' => "text not null",
|
307 |
'bookly_files.slug' => "varchar(32) not null",
|
376 |
'bookly_series.id' => "int unsigned not null auto_increment primary key",
|
377 |
'bookly_series.repeat' => "varchar(255) null default null",
|
378 |
'bookly_series.token' => "varchar(255) not null",
|
379 |
+
'bookly_service_discounts.id' => "int unsigned not null auto_increment primary key",
|
380 |
+
'bookly_service_discounts.service_id' => "int unsigned not null",
|
381 |
+
'bookly_service_discounts.discount_id' => "int unsigned not null",
|
382 |
'bookly_service_extras.id' => "int unsigned not null auto_increment primary key",
|
383 |
'bookly_service_extras.service_id' => "int unsigned not null",
|
384 |
'bookly_service_extras.attachment_id' => "int unsigned null default null",
|
backend/modules/debug/lib/QueryBuilder.php
CHANGED
@@ -253,6 +253,15 @@ class QueryBuilder
|
|
253 |
'bookly_customers.info_fields' => array( 'type' => "text", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
254 |
'bookly_customers.stripe_account' => array( 'type' => "varchar(255)", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
255 |
'bookly_customers.created_at' => array( 'type' => "datetime", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
256 |
'bookly_files.id' => array( 'type' => "int unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
|
257 |
'bookly_files.name' => array( 'type' => "text", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
|
258 |
'bookly_files.slug' => array( 'type' => "varchar(32)", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
|
@@ -327,6 +336,9 @@ class QueryBuilder
|
|
327 |
'bookly_series.id' => array( 'type' => "int unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
|
328 |
'bookly_series.repeat' => array( 'type' => "varchar(255)", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
329 |
'bookly_series.token' => array( 'type' => "varchar(255)", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
|
|
|
|
|
|
|
330 |
'bookly_service_extras.id' => array( 'type' => "int unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
|
331 |
'bookly_service_extras.service_id' => array( 'type' => "int unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
|
332 |
'bookly_service_extras.attachment_id' => array( 'type' => "int unsigned", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
@@ -540,6 +552,8 @@ class QueryBuilder
|
|
540 |
'bookly_payments.coupon_id' => array( 'bookly_coupons.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'SET NULL', ), ),
|
541 |
'bookly_schedule_item_breaks.staff_schedule_item_id' => array( 'bookly_staff_schedule_items.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
|
542 |
'bookly_sent_notifications.notification_id' => array( 'bookly_notifications.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
|
|
|
|
|
543 |
'bookly_service_extras.service_id' => array( 'bookly_services.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
|
544 |
'bookly_service_schedule_breaks.service_schedule_day_id' => array( 'bookly_service_schedule_days.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
|
545 |
'bookly_service_schedule_days.service_id' => array( 'bookly_services.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
|
253 |
'bookly_customers.info_fields' => array( 'type' => "text", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
254 |
'bookly_customers.stripe_account' => array( 'type' => "varchar(255)", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
255 |
'bookly_customers.created_at' => array( 'type' => "datetime", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
|
256 |
+
'bookly_discounts.id' => array( 'type' => "int unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
|
257 |
+
'bookly_discounts.title' => array( 'type' => "varchar(255)", 'is_nullabe' => 1, 'extra' => "", 'default' => "", 'key' => "" ),
|
258 |
+
'bookly_discounts.type' => array( 'type' => "enum('nop','appointments')", 'is_nullabe' => 0, 'extra' => "", 'default' => "nop", 'key' => "" ),
|
259 |
+
'bookly_discounts.threshold' => array( 'type' => "int unsigned", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
260 |
+
'bookly_discounts.discount' => array( 'type' => "decimal(3,0)", 'is_nullabe' => 0, 'extra' => "", 'default' => "0", 'key' => "" ),
|
261 |
+
'bookly_discounts.deduction' => array( 'type' => "decimal(10,2)", 'is_nullabe' => 0, 'extra' => "", 'default' => "0.00", 'key' => "" ),
|
262 |
+
'bookly_discounts.date_start' => array( 'type' => "date", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
263 |
+
'bookly_discounts.date_end' => array( 'type' => "date", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
264 |
+
'bookly_discounts.enabled' => array( 'type' => "tinyint(1)", 'is_nullabe' => 0, 'extra' => "", 'default' => "0", 'key' => "" ),
|
265 |
'bookly_files.id' => array( 'type' => "int unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
|
266 |
'bookly_files.name' => array( 'type' => "text", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
|
267 |
'bookly_files.slug' => array( 'type' => "varchar(32)", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
|
336 |
'bookly_series.id' => array( 'type' => "int unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
|
337 |
'bookly_series.repeat' => array( 'type' => "varchar(255)", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
338 |
'bookly_series.token' => array( 'type' => "varchar(255)", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "" ),
|
339 |
+
'bookly_service_discounts.id' => array( 'type' => "int unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
|
340 |
+
'bookly_service_discounts.service_id' => array( 'type' => "int unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
|
341 |
+
'bookly_service_discounts.discount_id' => array( 'type' => "int unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
|
342 |
'bookly_service_extras.id' => array( 'type' => "int unsigned", 'is_nullabe' => 0, 'extra' => "auto_increment", 'default' => null, 'key' => "PRI" ),
|
343 |
'bookly_service_extras.service_id' => array( 'type' => "int unsigned", 'is_nullabe' => 0, 'extra' => "", 'default' => null, 'key' => "MUL" ),
|
344 |
'bookly_service_extras.attachment_id' => array( 'type' => "int unsigned", 'is_nullabe' => 1, 'extra' => "", 'default' => null, 'key' => "" ),
|
552 |
'bookly_payments.coupon_id' => array( 'bookly_coupons.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'SET NULL', ), ),
|
553 |
'bookly_schedule_item_breaks.staff_schedule_item_id' => array( 'bookly_staff_schedule_items.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
|
554 |
'bookly_sent_notifications.notification_id' => array( 'bookly_notifications.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
|
555 |
+
'bookly_service_discounts.discount_id' => array( 'bookly_discounts.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
|
556 |
+
'bookly_service_discounts.service_id' => array( 'bookly_services.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
|
557 |
'bookly_service_extras.service_id' => array( 'bookly_services.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
|
558 |
'bookly_service_schedule_breaks.service_schedule_day_id' => array( 'bookly_service_schedule_days.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
|
559 |
'bookly_service_schedule_days.service_id' => array( 'bookly_services.id' => array( 'UPDATE_RULE' => 'CASCADE', 'DELETE_RULE' => 'CASCADE', ), ),
|
backend/modules/notifications/Ajax.php
CHANGED
@@ -18,7 +18,7 @@ class Ajax extends Lib\Base\Ajax
|
|
18 |
$sender_name = self::parameter( 'bookly_email_sender_name' );
|
19 |
$sender_email = self::parameter( 'bookly_email_sender' );
|
20 |
$send_as = self::parameter( 'bookly_email_send_as' );
|
21 |
-
$notification_ids = self::parameter( 'notification_ids' );
|
22 |
$reply_to_customers = self::parameter( 'bookly_email_reply_to_customers' );
|
23 |
|
24 |
Lib\Notifications\Test\Sender::send( $to_email, $sender_name, $sender_email, $send_as, $reply_to_customers, $notification_ids );
|
18 |
$sender_name = self::parameter( 'bookly_email_sender_name' );
|
19 |
$sender_email = self::parameter( 'bookly_email_sender' );
|
20 |
$send_as = self::parameter( 'bookly_email_send_as' );
|
21 |
+
$notification_ids = (array) self::parameter( 'notification_ids' );
|
22 |
$reply_to_customers = self::parameter( 'bookly_email_reply_to_customers' );
|
23 |
|
24 |
Lib\Notifications\Test\Sender::send( $to_email, $sender_name, $sender_email, $send_as, $reply_to_customers, $notification_ids );
|
backend/modules/payments/Ajax.php
CHANGED
@@ -84,7 +84,7 @@ class Ajax extends Lib\Base\Ajax
|
|
84 |
'created_at' => $payment['created_at'],
|
85 |
'created_format' => Lib\Utils\DateTime::formatDateTime( $payment['created_at'] ),
|
86 |
'type' => Lib\Entities\Payment::typeToString( $payment['type'] ),
|
87 |
-
'multiple' => count( $details['items'] ) > 1,
|
88 |
'customer' => $payment['customer'] ?: $details['customer'],
|
89 |
'provider' => ( $payment['provider'] ?: $details['items'][0]['staff_name'] ),
|
90 |
'service' => ( $payment['service'] ?: $details['items'][0]['service_name'] ),
|
84 |
'created_at' => $payment['created_at'],
|
85 |
'created_format' => Lib\Utils\DateTime::formatDateTime( $payment['created_at'] ),
|
86 |
'type' => Lib\Entities\Payment::typeToString( $payment['type'] ),
|
87 |
+
'multiple' => isset( $details['items'] ) && is_array( $details['items'] ) ? count( $details['items'] ) > 1 : false,
|
88 |
'customer' => $payment['customer'] ?: $details['customer'],
|
89 |
'provider' => ( $payment['provider'] ?: $details['items'][0]['staff_name'] ),
|
90 |
'service' => ( $payment['service'] ?: $details['items'][0]['service_name'] ),
|
backend/modules/settings/Ajax.php
CHANGED
@@ -98,7 +98,7 @@ class Ajax extends Page
|
|
98 |
|
99 |
foreach ( $order as $sort_by ) {
|
100 |
$query->sortBy( str_replace( '.', '_', $columns[ $sort_by['column'] ]['data'] ) )
|
101 |
-
->order( $sort_by['dir'] == 'desc' ? Lib\Query::ORDER_DESCENDING : Lib\Query::ORDER_ASCENDING );
|
102 |
}
|
103 |
|
104 |
$logs = $query->fetchArray();
|
98 |
|
99 |
foreach ( $order as $sort_by ) {
|
100 |
$query->sortBy( str_replace( '.', '_', $columns[ $sort_by['column'] ]['data'] ) )
|
101 |
+
->order( isset( $sort_by['dir'] ) && $sort_by['dir'] == 'desc' ? Lib\Query::ORDER_DESCENDING : Lib\Query::ORDER_ASCENDING );
|
102 |
}
|
103 |
|
104 |
$logs = $query->fetchArray();
|
backend/resources/bootstrap/js/bootstrap.min.js
CHANGED
@@ -3,4 +3,4 @@
|
|
3 |
* Copyright 2011-2020 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
4 |
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
5 |
*/
|
6 |
-
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("jquery")):"function"==typeof define&&define.amd?define(["exports","jquery"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).bootstrap={},t.jQuery)}(this,function(t,e){"use strict";function n(t){return t&&"object"==typeof t&&"default"in t?t:{default:t}}var p=n(e);function i(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function a(t,e,n){return e&&i(t.prototype,e),n&&i(t,n),t}function s(e,t){var n,i=Object.keys(e);return Object.getOwnPropertySymbols&&(n=Object.getOwnPropertySymbols(e),t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),i.push.apply(i,n)),i}function l(o){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?s(Object(r),!0).forEach(function(t){var e,n,i;e=o,i=r[n=t],n in e?Object.defineProperty(e,n,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[n]=i}):Object.getOwnPropertyDescriptors?Object.defineProperties(o,Object.getOwnPropertyDescriptors(r)):s(Object(r)).forEach(function(t){Object.defineProperty(o,t,Object.getOwnPropertyDescriptor(r,t))})}return o}var o="transitionend";function r(t){var e=this,n=!1;return p.default(this).one(m.TRANSITION_END,function(){n=!0}),setTimeout(function(){n||m.triggerTransitionEnd(e)},t),this}var m={TRANSITION_END:"bsTransitionEnd",getUID:function(t){for(;t+=~~(1e6*Math.random()),document.getElementById(t););return t},getSelectorFromElement:function(t){var e,n=t.getAttribute("data-target");n&&"#"!==n||(n=(e=t.getAttribute("href"))&&"#"!==e?e.trim():"");try{return document.querySelector(n)?n:null}catch(t){return null}},getTransitionDurationFromElement:function(t){if(!t)return 0;var e=p.default(t).css("transition-duration"),n=p.default(t).css("transition-delay"),i=parseFloat(e),o=parseFloat(n);return i||o?(e=e.split(",")[0],n=n.split(",")[0],1e3*(parseFloat(e)+parseFloat(n))):0},reflow:function(t){return t.offsetHeight},triggerTransitionEnd:function(t){p.default(t).trigger(o)},supportsTransitionEnd:function(){return Boolean(o)},isElement:function(t){return(t[0]||t).nodeType},typeCheckConfig:function(t,e,n){for(var i in n)if(Object.prototype.hasOwnProperty.call(n,i)){var o=n[i],r=e[i],a=r&&m.isElement(r)?"element":(s=r,{}.toString.call(s).match(/\s([a-z]+)/i)[1].toLowerCase());if(!new RegExp(o).test(a))throw new Error(t.toUpperCase()+': Option "'+i+'" provided type "'+a+'" but expected type "'+o+'".')}var s},findShadowRoot:function(t){if(!document.documentElement.attachShadow)return null;if("function"!=typeof t.getRootNode)return t instanceof ShadowRoot?t:t.parentNode?m.findShadowRoot(t.parentNode):null;var e=t.getRootNode();return e instanceof ShadowRoot?e:null},jQueryDetection:function(){if("undefined"==typeof p.default)throw new TypeError("Bootstrap's JavaScript requires jQuery. jQuery must be included before Bootstrap's JavaScript.");var t=p.default.fn.jquery.split(" ")[0].split(".");if(t[0]<2&&t[1]<9||1===t[0]&&9===t[1]&&t[2]<1||4<=t[0])throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0")}};m.jQueryDetection(),p.default.fn.emulateTransitionEnd=r,p.default.event.special[m.TRANSITION_END]={bindType:o,delegateType:o,handle:function(t){if(p.default(t.target).is(this))return t.handleObj.handler.apply(this,arguments)}};var u="alert",f="bs.alert",d="."+f,c=p.default.fn[u],h={CLOSE:"close"+d,CLOSED:"closed"+d,CLICK_DATA_API:"click"+d+".data-api"},g="alert",_="fade",v="show",y=function(){function i(t){this._element=t}var t=i.prototype;return t.close=function(t){var e=this._element;t&&(e=this._getRootElement(t)),this._triggerCloseEvent(e).isDefaultPrevented()||this._removeElement(e)},t.dispose=function(){p.default.removeData(this._element,f),this._element=null},t._getRootElement=function(t){var e=m.getSelectorFromElement(t),n=!1;return e&&(n=document.querySelector(e)),n=n||p.default(t).closest("."+g)[0]},t._triggerCloseEvent=function(t){var e=p.default.Event(h.CLOSE);return p.default(t).trigger(e),e},t._removeElement=function(e){var t,n=this;p.default(e).removeClass(v),p.default(e).hasClass(_)?(t=m.getTransitionDurationFromElement(e),p.default(e).one(m.TRANSITION_END,function(t){return n._destroyElement(e,t)}).emulateTransitionEnd(t)):this._destroyElement(e)},t._destroyElement=function(t){p.default(t).detach().trigger(h.CLOSED).remove()},i._jQueryInterface=function(n){return this.each(function(){var t=p.default(this),e=t.data(f);e||(e=new i(this),t.data(f,e)),"close"===n&&e[n](this)})},i._handleDismiss=function(e){return function(t){t&&t.preventDefault(),e.close(this)}},a(i,null,[{key:"VERSION",get:function(){return"4.4.1"}}]),i}();p.default(document).on(h.CLICK_DATA_API,'[data-dismiss="alert"]',y._handleDismiss(new y)),p.default.fn[u]=y._jQueryInterface,p.default.fn[u].Constructor=y,p.default.fn[u].noConflict=function(){return p.default.fn[u]=c,y._jQueryInterface};var E="button",b="bs.button",w="."+b,T=".data-api",C=p.default.fn[E],S="active",D="btn",I="focus",A='[data-toggle^="button"]',O='[data-toggle="buttons"]',N='[data-toggle="button"]',k='[data-toggle="buttons"] .btn',L='input:not([type="hidden"])',P=".active",x=".btn",j={CLICK_DATA_API:"click"+w+T,FOCUS_BLUR_DATA_API:"focus"+w+T+" blur"+w+T,LOAD_DATA_API:"load"+w+T},H=function(){function n(t){this._element=t}var t=n.prototype;return t.toggle=function(){var t,e,n=!0,i=!0,o=p.default(this._element).closest(O)[0];!o||(t=this._element.querySelector(L))&&("radio"===t.type?t.checked&&this._element.classList.contains(S)?n=!1:(e=o.querySelector(P))&&p.default(e).removeClass(S):("checkbox"!==t.type||"LABEL"===this._element.tagName&&t.checked===this._element.classList.contains(S))&&(n=!1),n&&(t.checked=!this._element.classList.contains(S),p.default(t).trigger("change")),t.focus(),i=!1),this._element.hasAttribute("disabled")||this._element.classList.contains("disabled")||(i&&this._element.setAttribute("aria-pressed",!this._element.classList.contains(S)),n&&p.default(this._element).toggleClass(S))},t.dispose=function(){p.default.removeData(this._element,b),this._element=null},n._jQueryInterface=function(e){return this.each(function(){var t=p.default(this).data(b);t||(t=new n(this),p.default(this).data(b,t)),"toggle"===e&&t[e]()})},a(n,null,[{key:"VERSION",get:function(){return"4.4.1"}}]),n}();p.default(document).on(j.CLICK_DATA_API,A,function(t){var e=t.target;if(p.default(e).hasClass(D)||(e=p.default(e).closest(x)[0]),!e||e.hasAttribute("disabled")||e.classList.contains("disabled"))t.preventDefault();else{var n=e.querySelector(L);if(n&&(n.hasAttribute("disabled")||n.classList.contains("disabled")))return void t.preventDefault();H._jQueryInterface.call(p.default(e),"toggle")}}).on(j.FOCUS_BLUR_DATA_API,A,function(t){var e=p.default(t.target).closest(x)[0];p.default(e).toggleClass(I,/^focus(in)?$/.test(t.type))}),p.default(window).on(j.LOAD_DATA_API,function(){for(var t=[].slice.call(document.querySelectorAll(k)),e=0,n=t.length;e<n;e++){var i=t[e],o=i.querySelector(L);o.checked||o.hasAttribute("checked")?i.classList.add(S):i.classList.remove(S)}for(var r=0,a=(t=[].slice.call(document.querySelectorAll(N))).length;r<a;r++){var s=t[r];"true"===s.getAttribute("aria-pressed")?s.classList.add(S):s.classList.remove(S)}}),p.default.fn[E]=H._jQueryInterface,p.default.fn[E].Constructor=H,p.default.fn[E].noConflict=function(){return p.default.fn[E]=C,H._jQueryInterface};var R="carousel",F="bs.carousel",M="."+F,W=".data-api",U=p.default.fn[R],q={interval:5e3,keyboard:!0,slide:!1,pause:"hover",wrap:!0,touch:!0},B={interval:"(number|boolean)",keyboard:"boolean",slide:"(boolean|string)",pause:"(string|boolean)",wrap:"boolean",touch:"boolean"},K="next",Q="prev",V="left",Y="right",z={SLIDE:"slide"+M,SLID:"slid"+M,KEYDOWN:"keydown"+M,MOUSEENTER:"mouseenter"+M,MOUSELEAVE:"mouseleave"+M,TOUCHSTART:"touchstart"+M,TOUCHMOVE:"touchmove"+M,TOUCHEND:"touchend"+M,POINTERDOWN:"pointerdown"+M,POINTERUP:"pointerup"+M,DRAG_START:"dragstart"+M,LOAD_DATA_API:"load"+M+W,CLICK_DATA_API:"click"+M+W},X="carousel",G="active",$="slide",J="carousel-item-right",Z="carousel-item-left",tt="carousel-item-next",et="carousel-item-prev",nt="pointer-event",it=".active",ot=".active.carousel-item",rt=".carousel-item",at=".carousel-item img",st=".carousel-item-next, .carousel-item-prev",lt=".carousel-indicators",ut="[data-slide], [data-slide-to]",ft='[data-ride="carousel"]',dt={TOUCH:"touch",PEN:"pen"},ct=function(){function r(t,e){this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this.touchTimeout=null,this.touchStartX=0,this.touchDeltaX=0,this._config=this._getConfig(e),this._element=t,this._indicatorsElement=this._element.querySelector(lt),this._touchSupported="ontouchstart"in document.documentElement||0<navigator.maxTouchPoints,this._pointerEvent=Boolean(window.PointerEvent||window.MSPointerEvent),this._addEventListeners()}var t=r.prototype;return t.next=function(){this._isSliding||this._slide(K)},t.nextWhenVisible=function(){!document.hidden&&p.default(this._element).is(":visible")&&"hidden"!==p.default(this._element).css("visibility")&&this.next()},t.prev=function(){this._isSliding||this._slide(Q)},t.pause=function(t){t||(this._isPaused=!0),this._element.querySelector(st)&&(m.triggerTransitionEnd(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null},t.cycle=function(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config.interval&&!this._isPaused&&(this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))},t.to=function(t){var e=this;this._activeElement=this._element.querySelector(ot);var n=this._getItemIndex(this._activeElement);if(!(t>this._items.length-1||t<0))if(this._isSliding)p.default(this._element).one(z.SLID,function(){return e.to(t)});else{if(n===t)return this.pause(),void this.cycle();var i=n<t?K:Q;this._slide(i,this._items[t])}},t.dispose=function(){p.default(this._element).off(M),p.default.removeData(this._element,F),this._items=null,this._config=null,this._element=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null},t._getConfig=function(t){return t=l(l({},q),t),m.typeCheckConfig(R,t,B),t},t._handleSwipe=function(){var t,e=Math.abs(this.touchDeltaX);e<=40||(t=e/this.touchDeltaX,(this.touchDeltaX=0)<t&&this.prev(),t<0&&this.next())},t._addEventListeners=function(){var e=this;this._config.keyboard&&p.default(this._element).on(z.KEYDOWN,function(t){return e._keydown(t)}),"hover"===this._config.pause&&p.default(this._element).on(z.MOUSEENTER,function(t){return e.pause(t)}).on(z.MOUSELEAVE,function(t){return e.cycle(t)}),this._config.touch&&this._addTouchEventListeners()},t._addTouchEventListeners=function(){var t,e,n=this;this._touchSupported&&(t=function(t){n._pointerEvent&&dt[t.originalEvent.pointerType.toUpperCase()]?n.touchStartX=t.originalEvent.clientX:n._pointerEvent||(n.touchStartX=t.originalEvent.touches[0].clientX)},e=function(t){n._pointerEvent&&dt[t.originalEvent.pointerType.toUpperCase()]&&(n.touchDeltaX=t.originalEvent.clientX-n.touchStartX),n._handleSwipe(),"hover"===n._config.pause&&(n.pause(),n.touchTimeout&&clearTimeout(n.touchTimeout),n.touchTimeout=setTimeout(function(t){return n.cycle(t)},500+n._config.interval))},p.default(this._element.querySelectorAll(at)).on(z.DRAG_START,function(t){return t.preventDefault()}),this._pointerEvent?(p.default(this._element).on(z.POINTERDOWN,t),p.default(this._element).on(z.POINTERUP,e),this._element.classList.add(nt)):(p.default(this._element).on(z.TOUCHSTART,t),p.default(this._element).on(z.TOUCHMOVE,function(t){var e;(e=t).originalEvent.touches&&1<e.originalEvent.touches.length?n.touchDeltaX=0:n.touchDeltaX=e.originalEvent.touches[0].clientX-n.touchStartX}),p.default(this._element).on(z.TOUCHEND,e)))},t._keydown=function(t){if(!/input|textarea/i.test(t.target.tagName))switch(t.which){case 37:t.preventDefault(),this.prev();break;case 39:t.preventDefault(),this.next()}},t._getItemIndex=function(t){return this._items=t&&t.parentNode?[].slice.call(t.parentNode.querySelectorAll(rt)):[],this._items.indexOf(t)},t._getItemByDirection=function(t,e){var n=t===K,i=t===Q,o=this._getItemIndex(e),r=this._items.length-1;if((i&&0===o||n&&o===r)&&!this._config.wrap)return e;var a=(o+(t===Q?-1:1))%this._items.length;return-1==a?this._items[this._items.length-1]:this._items[a]},t._triggerSlideEvent=function(t,e){var n=this._getItemIndex(t),i=this._getItemIndex(this._element.querySelector(ot)),o=p.default.Event(z.SLIDE,{relatedTarget:t,direction:e,from:i,to:n});return p.default(this._element).trigger(o),o},t._setActiveIndicatorElement=function(t){var e,n;this._indicatorsElement&&(e=[].slice.call(this._indicatorsElement.querySelectorAll(it)),p.default(e).removeClass(G),(n=this._indicatorsElement.children[this._getItemIndex(t)])&&p.default(n).addClass(G))},t._slide=function(t,e){var n,i,o,r,a,s=this,l=this._element.querySelector(ot),u=this._getItemIndex(l),f=e||l&&this._getItemByDirection(t,l),d=this._getItemIndex(f),c=Boolean(this._interval),h=t===K?(n=Z,i=tt,V):(n=J,i=et,Y);f&&p.default(f).hasClass(G)?this._isSliding=!1:this._triggerSlideEvent(f,h).isDefaultPrevented()||l&&f&&(this._isSliding=!0,c&&this.pause(),this._setActiveIndicatorElement(f),o=p.default.Event(z.SLID,{relatedTarget:f,direction:h,from:u,to:d}),p.default(this._element).hasClass($)?(p.default(f).addClass(i),m.reflow(f),p.default(l).addClass(n),p.default(f).addClass(n),(r=parseInt(f.getAttribute("data-interval"),10))?(this._config.defaultInterval=this._config.defaultInterval||this._config.interval,this._config.interval=r):this._config.interval=this._config.defaultInterval||this._config.interval,a=m.getTransitionDurationFromElement(l),p.default(l).one(m.TRANSITION_END,function(){p.default(f).removeClass(n+" "+i).addClass(G),p.default(l).removeClass(G+" "+i+" "+n),s._isSliding=!1,setTimeout(function(){return p.default(s._element).trigger(o)},0)}).emulateTransitionEnd(a)):(p.default(l).removeClass(G),p.default(f).addClass(G),this._isSliding=!1,p.default(this._element).trigger(o)),c&&this.cycle())},r._jQueryInterface=function(i){return this.each(function(){var t=p.default(this).data(F),e=l(l({},q),p.default(this).data());"object"==typeof i&&(e=l(l({},e),i));var n="string"==typeof i?i:e.slide;if(t||(t=new r(this,e),p.default(this).data(F,t)),"number"==typeof i)t.to(i);else if("string"==typeof n){if("undefined"==typeof t[n])throw new TypeError('No method named "'+n+'"');t[n]()}else e.interval&&e.ride&&(t.pause(),t.cycle())})},r._dataApiClickHandler=function(t){var e,n,i,o=m.getSelectorFromElement(this);!o||(e=p.default(o)[0])&&p.default(e).hasClass(X)&&(n=l(l({},p.default(e).data()),p.default(this).data()),(i=this.getAttribute("data-slide-to"))&&(n.interval=!1),r._jQueryInterface.call(p.default(e),n),i&&p.default(e).data(F).to(i),t.preventDefault())},a(r,null,[{key:"VERSION",get:function(){return"4.4.1"}},{key:"Default",get:function(){return q}}]),r}();p.default(document).on(z.CLICK_DATA_API,ut,ct._dataApiClickHandler),p.default(window).on(z.LOAD_DATA_API,function(){for(var t=[].slice.call(document.querySelectorAll(ft)),e=0,n=t.length;e<n;e++){var i=p.default(t[e]);ct._jQueryInterface.call(i,i.data())}}),p.default.fn[R]=ct._jQueryInterface,p.default.fn[R].Constructor=ct,p.default.fn[R].noConflict=function(){return p.default.fn[R]=U,ct._jQueryInterface};var ht="collapse",pt="bs.collapse",mt="."+pt,gt=p.default.fn[ht],_t={toggle:!0,parent:""},vt={toggle:"boolean",parent:"(string|element)"},yt={SHOW:"show"+mt,SHOWN:"shown"+mt,HIDE:"hide"+mt,HIDDEN:"hidden"+mt,CLICK_DATA_API:"click"+mt+".data-api"},Et="show",bt="collapse",wt="collapsing",Tt="collapsed",Ct="width",St="height",Dt=".show, .collapsing",It='[data-toggle="collapse"]',At=function(){function s(e,t){this._isTransitioning=!1,this._element=e,this._config=this._getConfig(t),this._triggerArray=[].slice.call(document.querySelectorAll('[data-toggle="collapse"][href="#'+e.id+'"],[data-toggle="collapse"][data-target="#'+e.id+'"]'));for(var n=[].slice.call(document.querySelectorAll(It)),i=0,o=n.length;i<o;i++){var r=n[i],a=m.getSelectorFromElement(r),s=[].slice.call(document.querySelectorAll(a)).filter(function(t){return t===e});null!==a&&0<s.length&&(this._selector=a,this._triggerArray.push(r))}this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}var t=s.prototype;return t.toggle=function(){p.default(this._element).hasClass(Et)?this.hide():this.show()},t.show=function(){var t,e,n,i,o,r,a=this;this._isTransitioning||p.default(this._element).hasClass(Et)||(this._parent&&0===(t=[].slice.call(this._parent.querySelectorAll(Dt)).filter(function(t){return"string"==typeof a._config.parent?t.getAttribute("data-parent")===a._config.parent:t.classList.contains(bt)})).length&&(t=null),t&&(e=p.default(t).not(this._selector).data(pt))&&e._isTransitioning||(n=p.default.Event(yt.SHOW),p.default(this._element).trigger(n),n.isDefaultPrevented()||(t&&(s._jQueryInterface.call(p.default(t).not(this._selector),"hide"),e||p.default(t).data(pt,null)),i=this._getDimension(),p.default(this._element).removeClass(bt).addClass(wt),this._element.style[i]=0,this._triggerArray.length&&p.default(this._triggerArray).removeClass(Tt).attr("aria-expanded",!0),this.setTransitioning(!0),o="scroll"+(i[0].toUpperCase()+i.slice(1)),r=m.getTransitionDurationFromElement(this._element),p.default(this._element).one(m.TRANSITION_END,function(){p.default(a._element).removeClass(wt).addClass(bt).addClass(Et),a._element.style[i]="",a.setTransitioning(!1),p.default(a._element).trigger(yt.SHOWN)}).emulateTransitionEnd(r),this._element.style[i]=this._element[o]+"px")))},t.hide=function(){var t=this;if(!this._isTransitioning&&p.default(this._element).hasClass(Et)){var e=p.default.Event(yt.HIDE);if(p.default(this._element).trigger(e),!e.isDefaultPrevented()){var n=this._getDimension();this._element.style[n]=this._element.getBoundingClientRect()[n]+"px",m.reflow(this._element),p.default(this._element).addClass(wt).removeClass(bt).removeClass(Et);var i=this._triggerArray.length;if(0<i)for(var o=0;o<i;o++){var r=this._triggerArray[o],a=m.getSelectorFromElement(r);null!==a&&(p.default([].slice.call(document.querySelectorAll(a))).hasClass(Et)||p.default(r).addClass(Tt).attr("aria-expanded",!1))}this.setTransitioning(!0);this._element.style[n]="";var s=m.getTransitionDurationFromElement(this._element);p.default(this._element).one(m.TRANSITION_END,function(){t.setTransitioning(!1),p.default(t._element).removeClass(wt).addClass(bt).trigger(yt.HIDDEN)}).emulateTransitionEnd(s)}}},t.setTransitioning=function(t){this._isTransitioning=t},t.dispose=function(){p.default.removeData(this._element,pt),this._config=null,this._parent=null,this._element=null,this._triggerArray=null,this._isTransitioning=null},t._getConfig=function(t){return(t=l(l({},_t),t)).toggle=Boolean(t.toggle),m.typeCheckConfig(ht,t,vt),t},t._getDimension=function(){return p.default(this._element).hasClass(Ct)?Ct:St},t._getParent=function(){var t,n=this;m.isElement(this._config.parent)?(t=this._config.parent,"undefined"!=typeof this._config.parent.jquery&&(t=this._config.parent[0])):t=document.querySelector(this._config.parent);var e='[data-toggle="collapse"][data-parent="'+this._config.parent+'"]',i=[].slice.call(t.querySelectorAll(e));return p.default(i).each(function(t,e){n._addAriaAndCollapsedClass(s._getTargetFromElement(e),[e])}),t},t._addAriaAndCollapsedClass=function(t,e){var n=p.default(t).hasClass(Et);e.length&&p.default(e).toggleClass(Tt,!n).attr("aria-expanded",n)},s._getTargetFromElement=function(t){var e=m.getSelectorFromElement(t);return e?document.querySelector(e):null},s._jQueryInterface=function(i){return this.each(function(){var t=p.default(this),e=t.data(pt),n=l(l(l({},_t),t.data()),"object"==typeof i&&i?i:{});if(!e&&n.toggle&&/show|hide/.test(i)&&(n.toggle=!1),e||(e=new s(this,n),t.data(pt,e)),"string"==typeof i){if("undefined"==typeof e[i])throw new TypeError('No method named "'+i+'"');e[i]()}})},a(s,null,[{key:"VERSION",get:function(){return"4.4.1"}},{key:"Default",get:function(){return _t}}]),s}();p.default(document).on(yt.CLICK_DATA_API,It,function(t){"A"===t.currentTarget.tagName&&t.preventDefault();var n=p.default(this),e=m.getSelectorFromElement(this),i=[].slice.call(document.querySelectorAll(e));p.default(i).each(function(){var t=p.default(this),e=t.data(pt)?"toggle":n.data();At._jQueryInterface.call(t,e)})}),p.default.fn[ht]=At._jQueryInterface,p.default.fn[ht].Constructor=At,p.default.fn[ht].noConflict=function(){return p.default.fn[ht]=gt,At._jQueryInterface};var Ot="undefined"!=typeof window&&"undefined"!=typeof document&&"undefined"!=typeof navigator,Nt=function(){for(var t=["Edge","Trident","Firefox"],e=0;e<t.length;e+=1)if(Ot&&0<=navigator.userAgent.indexOf(t[e]))return 1;return 0}();var kt=Ot&&window.Promise?function(t){var e=!1;return function(){e||(e=!0,window.Promise.resolve().then(function(){e=!1,t()}))}}:function(t){var e=!1;return function(){e||(e=!0,setTimeout(function(){e=!1,t()},Nt))}};function Lt(t){return t&&"[object Function]"==={}.toString.call(t)}function Pt(t,e){if(1!==t.nodeType)return[];var n=t.ownerDocument.defaultView.getComputedStyle(t,null);return e?n[e]:n}function xt(t){return"HTML"===t.nodeName?t:t.parentNode||t.host}function jt(t){if(!t)return document.body;switch(t.nodeName){case"HTML":case"BODY":return t.ownerDocument.body;case"#document":return t.body}var e=Pt(t),n=e.overflow,i=e.overflowX,o=e.overflowY;return/(auto|scroll|overlay)/.test(n+o+i)?t:jt(xt(t))}function Ht(t){return t&&t.referenceNode?t.referenceNode:t}var Rt=Ot&&!(!window.MSInputMethodContext||!document.documentMode),Ft=Ot&&/MSIE 10/.test(navigator.userAgent);function Mt(t){return 11===t?Rt:10!==t&&Rt||Ft}function Wt(t){if(!t)return document.documentElement;for(var e=Mt(10)?document.body:null,n=t.offsetParent||null;n===e&&t.nextElementSibling;)n=(t=t.nextElementSibling).offsetParent;var i=n&&n.nodeName;return i&&"BODY"!==i&&"HTML"!==i?-1!==["TH","TD","TABLE"].indexOf(n.nodeName)&&"static"===Pt(n,"position")?Wt(n):n:t?t.ownerDocument.documentElement:document.documentElement}function Ut(t){return null!==t.parentNode?Ut(t.parentNode):t}function qt(t,e){if(!(t&&t.nodeType&&e&&e.nodeType))return document.documentElement;var n=t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_FOLLOWING,i=n?t:e,o=n?e:t,r=document.createRange();r.setStart(i,0),r.setEnd(o,0);var a,s,l=r.commonAncestorContainer;if(t!==l&&e!==l||i.contains(o))return"BODY"===(s=(a=l).nodeName)||"HTML"!==s&&Wt(a.firstElementChild)!==a?Wt(l):l;var u=Ut(t);return u.host?qt(u.host,e):qt(t,Ut(e).host)}function Bt(t,e){var n="top"===(1<arguments.length&&void 0!==e?e:"top")?"scrollTop":"scrollLeft",i=t.nodeName;if("BODY"!==i&&"HTML"!==i)return t[n];var o=t.ownerDocument.documentElement;return(t.ownerDocument.scrollingElement||o)[n]}function Kt(t,e){var n="x"===e?"Left":"Top",i="Left"==n?"Right":"Bottom";return parseFloat(t["border"+n+"Width"])+parseFloat(t["border"+i+"Width"])}function Qt(t,e,n,i){return Math.max(e["offset"+t],e["scroll"+t],n["client"+t],n["offset"+t],n["scroll"+t],Mt(10)?parseInt(n["offset"+t])+parseInt(i["margin"+("Height"===t?"Top":"Left")])+parseInt(i["margin"+("Height"===t?"Bottom":"Right")]):0)}function Vt(t){var e=t.body,n=t.documentElement,i=Mt(10)&&getComputedStyle(n);return{height:Qt("Height",e,n,i),width:Qt("Width",e,n,i)}}var Yt=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},zt=function(t,e,n){return e&&Xt(t.prototype,e),n&&Xt(t,n),t};function Xt(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function Gt(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}var $t=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])}return t};function Jt(t){return $t({},t,{right:t.left+t.width,bottom:t.top+t.height})}function Zt(t){var e,n,i={};try{Mt(10)?(i=t.getBoundingClientRect(),e=Bt(t,"top"),n=Bt(t,"left"),i.top+=e,i.left+=n,i.bottom+=e,i.right+=n):i=t.getBoundingClientRect()}catch(t){}var o,r={left:i.left,top:i.top,width:i.right-i.left,height:i.bottom-i.top},a="HTML"===t.nodeName?Vt(t.ownerDocument):{},s=a.width||t.clientWidth||r.width,l=a.height||t.clientHeight||r.height,u=t.offsetWidth-s,f=t.offsetHeight-l;return(u||f)&&(u-=Kt(o=Pt(t),"x"),f-=Kt(o,"y"),r.width-=u,r.height-=f),Jt(r)}function te(t,e,n){var i=2<arguments.length&&void 0!==n&&n,o=Mt(10),r="HTML"===e.nodeName,a=Zt(t),s=Zt(e),l=jt(t),u=Pt(e),f=parseFloat(u.borderTopWidth),d=parseFloat(u.borderLeftWidth);i&&r&&(s.top=Math.max(s.top,0),s.left=Math.max(s.left,0));var c,h,p=Jt({top:a.top-s.top-f,left:a.left-s.left-d,width:a.width,height:a.height});return p.marginTop=0,p.marginLeft=0,!o&&r&&(c=parseFloat(u.marginTop),h=parseFloat(u.marginLeft),p.top-=f-c,p.bottom-=f-c,p.left-=d-h,p.right-=d-h,p.marginTop=c,p.marginLeft=h),(o&&!i?e.contains(l):e===l&&"BODY"!==l.nodeName)&&(p=function(t,e,n){var i=2<arguments.length&&void 0!==n&&n,o=Bt(e,"top"),r=Bt(e,"left"),a=i?-1:1;return t.top+=o*a,t.bottom+=o*a,t.left+=r*a,t.right+=r*a,t}(p,e)),p}function ee(t){if(!t||!t.parentElement||Mt())return document.documentElement;for(var e=t.parentElement;e&&"none"===Pt(e,"transform");)e=e.parentElement;return e||document.documentElement}function ne(t,e,n,i,o){var r,a,s,l,u,f=4<arguments.length&&void 0!==o&&o,d={top:0,left:0},c=f?ee(t):qt(t,Ht(e));"viewport"===i?d=function(t,e){var n=1<arguments.length&&void 0!==e&&e,i=t.ownerDocument.documentElement,o=te(t,i),r=Math.max(i.clientWidth,window.innerWidth||0),a=Math.max(i.clientHeight,window.innerHeight||0),s=n?0:Bt(i),l=n?0:Bt(i,"left");return Jt({top:s-o.top+o.marginTop,left:l-o.left+o.marginLeft,width:r,height:a})}(c,f):(r=void 0,"scrollParent"===i?"BODY"===(r=jt(xt(e))).nodeName&&(r=t.ownerDocument.documentElement):r="window"===i?t.ownerDocument.documentElement:i,a=te(r,c,f),"HTML"!==r.nodeName||function t(e){var n=e.nodeName;if("BODY"===n||"HTML"===n)return!1;if("fixed"===Pt(e,"position"))return!0;var i=xt(e);return!!i&&t(i)}(c)?d=a:(l=(s=Vt(t.ownerDocument)).height,u=s.width,d.top+=a.top-a.marginTop,d.bottom=l+a.top,d.left+=a.left-a.marginLeft,d.right=u+a.left));var h="number"==typeof(n=n||0);return d.left+=h?n:n.left||0,d.top+=h?n:n.top||0,d.right-=h?n:n.right||0,d.bottom-=h?n:n.bottom||0,d}function ie(t,e,i,n,o,r){var a=5<arguments.length&&void 0!==r?r:0;if(-1===t.indexOf("auto"))return t;var s=ne(i,n,a,o),l={top:{width:s.width,height:e.top-s.top},right:{width:s.right-e.right,height:s.height},bottom:{width:s.width,height:s.bottom-e.bottom},left:{width:e.left-s.left,height:s.height}},u=Object.keys(l).map(function(t){return $t({key:t},l[t],{area:(e=l[t]).width*e.height});var e}).sort(function(t,e){return e.area-t.area}),f=u.filter(function(t){var e=t.width,n=t.height;return e>=i.clientWidth&&n>=i.clientHeight}),d=0<f.length?f[0].key:u[0].key,c=t.split("-")[1];return d+(c?"-"+c:"")}function oe(t,e,n,i){var o=3<arguments.length&&void 0!==i?i:null;return te(n,o?ee(e):qt(e,Ht(n)),o)}function re(t){var e=t.ownerDocument.defaultView.getComputedStyle(t),n=parseFloat(e.marginTop||0)+parseFloat(e.marginBottom||0),i=parseFloat(e.marginLeft||0)+parseFloat(e.marginRight||0);return{width:t.offsetWidth+i,height:t.offsetHeight+n}}function ae(t){var e={left:"right",right:"left",bottom:"top",top:"bottom"};return t.replace(/left|right|bottom|top/g,function(t){return e[t]})}function se(t,e,n){n=n.split("-")[0];var i=re(t),o={width:i.width,height:i.height},r=-1!==["right","left"].indexOf(n),a=r?"top":"left",s=r?"left":"top",l=r?"height":"width",u=r?"width":"height";return o[a]=e[a]+e[l]/2-i[l]/2,o[s]=n===s?e[s]-i[u]:e[ae(s)],o}function le(t,e){return Array.prototype.find?t.find(e):t.filter(e)[0]}function ue(t,n,e){return(void 0===e?t:t.slice(0,function(t,e,n){if(Array.prototype.findIndex)return t.findIndex(function(t){return t[e]===n});var i=le(t,function(t){return t[e]===n});return t.indexOf(i)}(t,"name",e))).forEach(function(t){t.function&&console.warn("`modifier.function` is deprecated, use `modifier.fn`!");var e=t.function||t.fn;t.enabled&&Lt(e)&&(n.offsets.popper=Jt(n.offsets.popper),n.offsets.reference=Jt(n.offsets.reference),n=e(n,t))}),n}function fe(t,n){return t.some(function(t){var e=t.name;return t.enabled&&e===n})}function de(t){for(var e=[!1,"ms","Webkit","Moz","O"],n=t.charAt(0).toUpperCase()+t.slice(1),i=0;i<e.length;i++){var o=e[i],r=o?""+o+n:t;if("undefined"!=typeof document.body.style[r])return r}return null}function ce(t){var e=t.ownerDocument;return e?e.defaultView:window}function he(t,e,n,i){n.updateBound=i,ce(t).addEventListener("resize",n.updateBound,{passive:!0});var o=jt(t);return function t(e,n,i,o){var r="BODY"===e.nodeName,a=r?e.ownerDocument.defaultView:e;a.addEventListener(n,i,{passive:!0}),r||t(jt(a.parentNode),n,i,o),o.push(a)}(o,"scroll",n.updateBound,n.scrollParents),n.scrollElement=o,n.eventsEnabled=!0,n}function pe(){var t,e;this.state.eventsEnabled&&(cancelAnimationFrame(this.scheduleUpdate),this.state=(t=this.reference,e=this.state,ce(t).removeEventListener("resize",e.updateBound),e.scrollParents.forEach(function(t){t.removeEventListener("scroll",e.updateBound)}),e.updateBound=null,e.scrollParents=[],e.scrollElement=null,e.eventsEnabled=!1,e))}function me(t){return""!==t&&!isNaN(parseFloat(t))&&isFinite(t)}function ge(n,i){Object.keys(i).forEach(function(t){var e="";-1!==["width","height","top","right","bottom","left"].indexOf(t)&&me(i[t])&&(e="px"),n.style[t]=i[t]+e})}function _e(t,e){function n(t){return t}var i=t.offsets,o=i.popper,r=i.reference,a=Math.round,s=Math.floor,l=a(r.width),u=a(o.width),f=-1!==["left","right"].indexOf(t.placement),d=-1!==t.placement.indexOf("-"),c=e?f||d||l%2==u%2?a:s:n,h=e?a:n;return{left:c(l%2==1&&u%2==1&&!d&&e?o.left-1:o.left),top:h(o.top),bottom:h(o.bottom),right:c(o.right)}}var ve=Ot&&/Firefox/i.test(navigator.userAgent);function ye(t,e,n){var i,o,r=le(t,function(t){return t.name===e}),a=!!r&&t.some(function(t){return t.name===n&&t.enabled&&t.order<r.order});return a||(i="`"+e+"`",o="`"+n+"`",console.warn(o+" modifier is required by "+i+" modifier in order to work, be sure to include it before "+i+"!")),a}var Ee=["auto-start","auto","auto-end","top-start","top","top-end","right-start","right","right-end","bottom-end","bottom","bottom-start","left-end","left","left-start"],be=Ee.slice(3);function we(t,e){var n=1<arguments.length&&void 0!==e&&e,i=be.indexOf(t),o=be.slice(i+1).concat(be.slice(0,i));return n?o.reverse():o}var Te="flip",Ce="clockwise",Se="counterclockwise";function De(t,o,r,e){var a=[0,0],s=-1!==["right","left"].indexOf(e),n=t.split(/(\+|\-)/).map(function(t){return t.trim()}),i=n.indexOf(le(n,function(t){return-1!==t.search(/,|\s/)}));n[i]&&-1===n[i].indexOf(",")&&console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.");var l=/\s*,\s*|\s+/;return(-1!==i?[n.slice(0,i).concat([n[i].split(l)[0]]),[n[i].split(l)[1]].concat(n.slice(i+1))]:[n]).map(function(t,e){var n=(1===e?!s:s)?"height":"width",i=!1;return t.reduce(function(t,e){return""===t[t.length-1]&&-1!==["+","-"].indexOf(e)?(t[t.length-1]=e,i=!0,t):i?(t[t.length-1]+=e,i=!1,t):t.concat(e)},[]).map(function(t){return function(t,e,n,i){var o=t.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),r=+o[1],a=o[2];if(!r)return t;if(0!==a.indexOf("%"))return"vh"!==a&&"vw"!==a?r:("vh"===a?Math.max(document.documentElement.clientHeight,window.innerHeight||0):Math.max(document.documentElement.clientWidth,window.innerWidth||0))/100*r;var s=void 0;switch(a){case"%p":s=n;break;case"%":case"%r":default:s=i}return Jt(s)[e]/100*r}(t,n,o,r)})}).forEach(function(n,i){n.forEach(function(t,e){me(t)&&(a[i]+=t*("-"===n[e-1]?-1:1))})}),a}var Ie={placement:"bottom",positionFixed:!1,eventsEnabled:!0,removeOnDestroy:!1,onCreate:function(){},onUpdate:function(){},modifiers:{shift:{order:100,enabled:!0,fn:function(t){var e,n,i,o,r,a,s,l=t.placement,u=l.split("-")[0],f=l.split("-")[1];return f&&(n=(e=t.offsets).reference,i=e.popper,a=(o=-1!==["bottom","top"].indexOf(u))?"width":"height",s={start:Gt({},r=o?"left":"top",n[r]),end:Gt({},r,n[r]+n[a]-i[a])},t.offsets.popper=$t({},i,s[f])),t}},offset:{order:200,enabled:!0,fn:function(t,e){var n=e.offset,i=t.placement,o=t.offsets,r=o.popper,a=o.reference,s=i.split("-")[0],l=void 0,l=me(+n)?[+n,0]:De(n,r,a,s);return"left"===s?(r.top+=l[0],r.left-=l[1]):"right"===s?(r.top+=l[0],r.left+=l[1]):"top"===s?(r.left+=l[0],r.top-=l[1]):"bottom"===s&&(r.left+=l[0],r.top+=l[1]),t.popper=r,t},offset:0},preventOverflow:{order:300,enabled:!0,fn:function(t,i){var e=i.boundariesElement||Wt(t.instance.popper);t.instance.reference===e&&(e=Wt(e));var n=de("transform"),o=t.instance.popper.style,r=o.top,a=o.left,s=o[n];o.top="",o.left="",o[n]="";var l=ne(t.instance.popper,t.instance.reference,i.padding,e,t.positionFixed);o.top=r,o.left=a,o[n]=s,i.boundaries=l;var u=i.priority,f=t.offsets.popper,d={primary:function(t){var e=f[t];return f[t]<l[t]&&!i.escapeWithReference&&(e=Math.max(f[t],l[t])),Gt({},t,e)},secondary:function(t){var e="right"===t?"left":"top",n=f[e];return f[t]>l[t]&&!i.escapeWithReference&&(n=Math.min(f[e],l[t]-("right"===t?f.width:f.height))),Gt({},e,n)}};return u.forEach(function(t){var e=-1!==["left","top"].indexOf(t)?"primary":"secondary";f=$t({},f,d[e](t))}),t.offsets.popper=f,t},priority:["left","right","top","bottom"],padding:5,boundariesElement:"scrollParent"},keepTogether:{order:400,enabled:!0,fn:function(t){var e=t.offsets,n=e.popper,i=e.reference,o=t.placement.split("-")[0],r=Math.floor,a=-1!==["top","bottom"].indexOf(o),s=a?"right":"bottom",l=a?"left":"top",u=a?"width":"height";return n[s]<r(i[l])&&(t.offsets.popper[l]=r(i[l])-n[u]),n[l]>r(i[s])&&(t.offsets.popper[l]=r(i[s])),t}},arrow:{order:500,enabled:!0,fn:function(t,e){var n;if(!ye(t.instance.modifiers,"arrow","keepTogether"))return t;var i=e.element;if("string"==typeof i){if(!(i=t.instance.popper.querySelector(i)))return t}else if(!t.instance.popper.contains(i))return console.warn("WARNING: `arrow.element` must be child of its popper element!"),t;var o=t.placement.split("-")[0],r=t.offsets,a=r.popper,s=r.reference,l=-1!==["left","right"].indexOf(o),u=l?"height":"width",f=l?"Top":"Left",d=f.toLowerCase(),c=l?"left":"top",h=l?"bottom":"right",p=re(i)[u];s[h]-p<a[d]&&(t.offsets.popper[d]-=a[d]-(s[h]-p)),s[d]+p>a[h]&&(t.offsets.popper[d]+=s[d]+p-a[h]),t.offsets.popper=Jt(t.offsets.popper);var m=s[d]+s[u]/2-p/2,g=Pt(t.instance.popper),_=parseFloat(g["margin"+f]),v=parseFloat(g["border"+f+"Width"]),y=m-t.offsets.popper[d]-_-v,y=Math.max(Math.min(a[u]-p,y),0);return t.arrowElement=i,t.offsets.arrow=(Gt(n={},d,Math.round(y)),Gt(n,c,""),n),t},element:"[x-arrow]"},flip:{order:600,enabled:!0,fn:function(g,_){if(fe(g.instance.modifiers,"inner"))return g;if(g.flipped&&g.placement===g.originalPlacement)return g;var v=ne(g.instance.popper,g.instance.reference,_.padding,_.boundariesElement,g.positionFixed),y=g.placement.split("-")[0],E=ae(y),b=g.placement.split("-")[1]||"",w=[];switch(_.behavior){case Te:w=[y,E];break;case Ce:w=we(y);break;case Se:w=we(y,!0);break;default:w=_.behavior}return w.forEach(function(t,e){if(y!==t||w.length===e+1)return g;y=g.placement.split("-")[0],E=ae(y);var n,i=g.offsets.popper,o=g.offsets.reference,r=Math.floor,a="left"===y&&r(i.right)>r(o.left)||"right"===y&&r(i.left)<r(o.right)||"top"===y&&r(i.bottom)>r(o.top)||"bottom"===y&&r(i.top)<r(o.bottom),s=r(i.left)<r(v.left),l=r(i.right)>r(v.right),u=r(i.top)<r(v.top),f=r(i.bottom)>r(v.bottom),d="left"===y&&s||"right"===y&&l||"top"===y&&u||"bottom"===y&&f,c=-1!==["top","bottom"].indexOf(y),h=!!_.flipVariations&&(c&&"start"===b&&s||c&&"end"===b&&l||!c&&"start"===b&&u||!c&&"end"===b&&f),p=!!_.flipVariationsByContent&&(c&&"start"===b&&l||c&&"end"===b&&s||!c&&"start"===b&&f||!c&&"end"===b&&u),m=h||p;(a||d||m)&&(g.flipped=!0,(a||d)&&(y=w[e+1]),m&&(b="end"===(n=b)?"start":"start"===n?"end":n),g.placement=y+(b?"-"+b:""),g.offsets.popper=$t({},g.offsets.popper,se(g.instance.popper,g.offsets.reference,g.placement)),g=ue(g.instance.modifiers,g,"flip"))}),g},behavior:"flip",padding:5,boundariesElement:"viewport",flipVariations:!1,flipVariationsByContent:!1},inner:{order:700,enabled:!1,fn:function(t){var e=t.placement,n=e.split("-")[0],i=t.offsets,o=i.popper,r=i.reference,a=-1!==["left","right"].indexOf(n),s=-1===["top","left"].indexOf(n);return o[a?"left":"top"]=r[n]-(s?o[a?"width":"height"]:0),t.placement=ae(e),t.offsets.popper=Jt(o),t}},hide:{order:800,enabled:!0,fn:function(t){if(!ye(t.instance.modifiers,"hide","preventOverflow"))return t;var e=t.offsets.reference,n=le(t.instance.modifiers,function(t){return"preventOverflow"===t.name}).boundaries;if(e.bottom<n.top||e.left>n.right||e.top>n.bottom||e.right<n.left){if(!0===t.hide)return t;t.hide=!0,t.attributes["x-out-of-boundaries"]=""}else{if(!1===t.hide)return t;t.hide=!1,t.attributes["x-out-of-boundaries"]=!1}return t}},computeStyle:{order:850,enabled:!0,fn:function(t,e){var n=e.x,i=e.y,o=t.offsets.popper,r=le(t.instance.modifiers,function(t){return"applyStyle"===t.name}).gpuAcceleration;void 0!==r&&console.warn("WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!");var a,s,l=void 0!==r?r:e.gpuAcceleration,u=Wt(t.instance.popper),f=Zt(u),d={position:o.position},c=_e(t,window.devicePixelRatio<2||!ve),h="bottom"===n?"top":"bottom",p="right"===i?"left":"right",m=de("transform"),g=void 0,_=void 0,_="bottom"==h?"HTML"===u.nodeName?-u.clientHeight+c.bottom:-f.height+c.bottom:c.top,g="right"==p?"HTML"===u.nodeName?-u.clientWidth+c.right:-f.width+c.right:c.left;l&&m?(d[m]="translate3d("+g+"px, "+_+"px, 0)",d[h]=0,d[p]=0,d.willChange="transform"):(a="bottom"==h?-1:1,s="right"==p?-1:1,d[h]=_*a,d[p]=g*s,d.willChange=h+", "+p);var v={"x-placement":t.placement};return t.attributes=$t({},v,t.attributes),t.styles=$t({},d,t.styles),t.arrowStyles=$t({},t.offsets.arrow,t.arrowStyles),t},gpuAcceleration:!0,x:"bottom",y:"right"},applyStyle:{order:900,enabled:!0,fn:function(t){var e,n;return ge(t.instance.popper,t.styles),e=t.instance.popper,n=t.attributes,Object.keys(n).forEach(function(t){!1!==n[t]?e.setAttribute(t,n[t]):e.removeAttribute(t)}),t.arrowElement&&Object.keys(t.arrowStyles).length&&ge(t.arrowElement,t.arrowStyles),t},onLoad:function(t,e,n,i,o){var r=oe(o,e,t,n.positionFixed),a=ie(n.placement,r,e,t,n.modifiers.flip.boundariesElement,n.modifiers.flip.padding);return e.setAttribute("x-placement",a),ge(e,{position:n.positionFixed?"fixed":"absolute"}),n},gpuAcceleration:void 0}}},Ae=(zt(Oe,[{key:"update",value:function(){return function(){var t;this.state.isDestroyed||((t={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}}).offsets.reference=oe(this.state,this.popper,this.reference,this.options.positionFixed),t.placement=ie(this.options.placement,t.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),t.originalPlacement=t.placement,t.positionFixed=this.options.positionFixed,t.offsets.popper=se(this.popper,t.offsets.reference,t.placement),t.offsets.popper.position=this.options.positionFixed?"fixed":"absolute",t=ue(this.modifiers,t),this.state.isCreated?this.options.onUpdate(t):(this.state.isCreated=!0,this.options.onCreate(t)))}.call(this)}},{key:"destroy",value:function(){return function(){return this.state.isDestroyed=!0,fe(this.modifiers,"applyStyle")&&(this.popper.removeAttribute("x-placement"),this.popper.style.position="",this.popper.style.top="",this.popper.style.left="",this.popper.style.right="",this.popper.style.bottom="",this.popper.style.willChange="",this.popper.style[de("transform")]=""),this.disableEventListeners(),this.options.removeOnDestroy&&this.popper.parentNode.removeChild(this.popper),this}.call(this)}},{key:"enableEventListeners",value:function(){return function(){this.state.eventsEnabled||(this.state=he(this.reference,this.options,this.state,this.scheduleUpdate))}.call(this)}},{key:"disableEventListeners",value:function(){return pe.call(this)}}]),Oe);function Oe(t,e){var n=this,i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{};Yt(this,Oe),this.scheduleUpdate=function(){return requestAnimationFrame(n.update)},this.update=kt(this.update.bind(this)),this.options=$t({},Oe.Defaults,i),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=t&&t.jquery?t[0]:t,this.popper=e&&e.jquery?e[0]:e,this.options.modifiers={},Object.keys($t({},Oe.Defaults.modifiers,i.modifiers)).forEach(function(t){n.options.modifiers[t]=$t({},Oe.Defaults.modifiers[t]||{},i.modifiers?i.modifiers[t]:{})}),this.modifiers=Object.keys(this.options.modifiers).map(function(t){return $t({name:t},n.options.modifiers[t])}).sort(function(t,e){return t.order-e.order}),this.modifiers.forEach(function(t){t.enabled&&Lt(t.onLoad)&&t.onLoad(n.reference,n.popper,n.options,t,n.state)}),this.update();var o=this.options.eventsEnabled;o&&this.enableEventListeners(),this.state.eventsEnabled=o}Ae.Utils=("undefined"!=typeof window?window:global).PopperUtils,Ae.placements=Ee,Ae.Defaults=Ie;var Ne="dropdown",ke="bs.dropdown",Le="."+ke,Pe=".data-api",xe=p.default.fn[Ne],je=new RegExp("38|40|27"),He={HIDE:"hide"+Le,HIDDEN:"hidden"+Le,SHOW:"show"+Le,SHOWN:"shown"+Le,CLICK:"click"+Le,CLICK_DATA_API:"click"+Le+Pe,KEYDOWN_DATA_API:"keydown"+Le+Pe,KEYUP_DATA_API:"keyup"+Le+Pe},Re="disabled",Fe="show",Me="dropup",We="dropright",Ue="dropleft",qe="dropdown-menu-right",Be="position-static",Ke='[data-toggle="dropdown"]',Qe=".dropdown form",Ve=".dropdown-menu",Ye=".navbar-nav",ze=".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",Xe="top-start",Ge="top-end",$e="bottom-start",Je="bottom-end",Ze="right-start",tn="left-start",en={offset:0,flip:!0,boundary:"scrollParent",reference:"toggle",display:"dynamic",popperConfig:null},nn={offset:"(number|string|function)",flip:"boolean",boundary:"(string|element)",reference:"(string|element)",display:"string",popperConfig:"(null|object)"},on=function(){function u(t,e){this._element=t,this._popper=null,this._config=this._getConfig(e),this._menu=this._getMenuElement(),this._inNavbar=this._detectNavbar(),this._addEventListeners()}var t=u.prototype;return t.toggle=function(){var t;this._element.disabled||p.default(this._element).hasClass(Re)||(t=p.default(this._menu).hasClass(Fe),u._clearMenus(),t||this.show(!0))},t.show=function(t){if(void 0===t&&(t=!1),!(this._element.disabled||p.default(this._element).hasClass(Re)||p.default(this._menu).hasClass(Fe))){var e={relatedTarget:this._element},n=p.default.Event(He.SHOW,e),i=u._getParentFromElement(this._element);if(p.default(i).trigger(n),!n.isDefaultPrevented()){if(!this._inNavbar&&t){if("undefined"==typeof Ae)throw new TypeError("Bootstrap's dropdowns require Popper.js (https://popper.js.org/)");var o=this._element;"parent"===this._config.reference?o=i:m.isElement(this._config.reference)&&(o=this._config.reference,"undefined"!=typeof this._config.reference.jquery&&(o=this._config.reference[0])),"scrollParent"!==this._config.boundary&&p.default(i).addClass(Be),this._popper=new Ae(o,this._menu,this._getPopperConfig())}"ontouchstart"in document.documentElement&&0===p.default(i).closest(Ye).length&&p.default(document.body).children().on("mouseover",null,p.default.noop),this._element.focus(),this._element.setAttribute("aria-expanded",!0),p.default(this._menu).toggleClass(Fe),p.default(i).toggleClass(Fe).trigger(p.default.Event(He.SHOWN,e))}}},t.hide=function(){var t,e,n;this._element.disabled||p.default(this._element).hasClass(Re)||!p.default(this._menu).hasClass(Fe)||(t={relatedTarget:this._element},e=p.default.Event(He.HIDE,t),n=u._getParentFromElement(this._element),p.default(n).trigger(e),e.isDefaultPrevented()||(this._popper&&this._popper.destroy(),p.default(this._menu).toggleClass(Fe),p.default(n).toggleClass(Fe).trigger(p.default.Event(He.HIDDEN,t))))},t.dispose=function(){p.default.removeData(this._element,ke),p.default(this._element).off(Le),this._element=null,(this._menu=null)!==this._popper&&(this._popper.destroy(),this._popper=null)},t.update=function(){this._inNavbar=this._detectNavbar(),null!==this._popper&&this._popper.scheduleUpdate()},t._addEventListeners=function(){var e=this;p.default(this._element).on(He.CLICK,function(t){t.preventDefault(),t.stopPropagation(),e.toggle()})},t._getConfig=function(t){return t=l(l(l({},this.constructor.Default),p.default(this._element).data()),t),m.typeCheckConfig(Ne,t,this.constructor.DefaultType),t},t._getMenuElement=function(){var t;return this._menu||(t=u._getParentFromElement(this._element))&&(this._menu=t.querySelector(Ve)),this._menu},t._getPlacement=function(){var t=p.default(this._element.parentNode),e=$e;return t.hasClass(Me)?(e=Xe,p.default(this._menu).hasClass(qe)&&(e=Ge)):t.hasClass(We)?e=Ze:t.hasClass(Ue)?e=tn:p.default(this._menu).hasClass(qe)&&(e=Je),e},t._detectNavbar=function(){return 0<p.default(this._element).closest(".navbar").length},t._getOffset=function(){var e=this,t={};return"function"==typeof this._config.offset?t.fn=function(t){return t.offsets=l(l({},t.offsets),e._config.offset(t.offsets,e._element)||{}),t}:t.offset=this._config.offset,t},t._getPopperConfig=function(){var t={placement:this._getPlacement(),modifiers:{offset:this._getOffset(),flip:{enabled:this._config.flip},preventOverflow:{boundariesElement:this._config.boundary}}};return"static"===this._config.display&&(t.modifiers.applyStyle={enabled:!1}),l(l({},t),this._config.popperConfig)},u._jQueryInterface=function(e){return this.each(function(){var t=p.default(this).data(ke);if(t||(t=new u(this,"object"==typeof e?e:null),p.default(this).data(ke,t)),"string"==typeof e){if("undefined"==typeof t[e])throw new TypeError('No method named "'+e+'"');t[e]()}})},u._clearMenus=function(t){if(!t||3!==t.which&&("keyup"!==t.type||9===t.which))for(var e=[].slice.call(document.querySelectorAll(Ke)),n=0,i=e.length;n<i;n++){var o,r,a=u._getParentFromElement(e[n]),s=p.default(e[n]).data(ke),l={relatedTarget:e[n]};t&&"click"===t.type&&(l.clickEvent=t),s&&(o=s._menu,p.default(a).hasClass(Fe)&&(t&&("click"===t.type&&/input|textarea/i.test(t.target.tagName)||"keyup"===t.type&&9===t.which)&&p.default.contains(a,t.target)||(r=p.default.Event(He.HIDE,l),p.default(a).trigger(r),r.isDefaultPrevented()||("ontouchstart"in document.documentElement&&p.default(document.body).children().off("mouseover",null,p.default.noop),e[n].setAttribute("aria-expanded","false"),s._popper&&s._popper.destroy(),p.default(o).removeClass(Fe),p.default(a).removeClass(Fe).trigger(p.default.Event(He.HIDDEN,l))))))}},u._getParentFromElement=function(t){var e,n=m.getSelectorFromElement(t);return n&&(e=document.querySelector(n)),e||t.parentNode},u._dataApiKeydownHandler=function(t){if((/input|textarea/i.test(t.target.tagName)?!(32===t.which||27!==t.which&&(40!==t.which&&38!==t.which||p.default(t.target).closest(Ve).length)):je.test(t.which))&&(t.preventDefault(),t.stopPropagation(),!this.disabled&&!p.default(this).hasClass(Re))){var e,n=u._getParentFromElement(this),i=p.default(n).hasClass(Fe);if(i||27!==t.which){if(!i||i&&(27===t.which||32===t.which))return 27===t.which&&(e=n.querySelector(Ke),p.default(e).trigger("focus")),void p.default(this).trigger("click");var o,r=[].slice.call(n.querySelectorAll(ze)).filter(function(t){return p.default(t).is(":visible")});0!==r.length&&(o=r.indexOf(t.target),38===t.which&&0<o&&o--,40===t.which&&o<r.length-1&&o++,o<0&&(o=0),r[o].focus())}}},a(u,null,[{key:"VERSION",get:function(){return"4.4.1"}},{key:"Default",get:function(){return en}},{key:"DefaultType",get:function(){return nn}}]),u}();p.default(document).on(He.KEYDOWN_DATA_API,Ke,on._dataApiKeydownHandler).on(He.KEYDOWN_DATA_API,Ve,on._dataApiKeydownHandler).on(He.CLICK_DATA_API+" "+He.KEYUP_DATA_API,on._clearMenus).on(He.CLICK_DATA_API,Ke,function(t){t.preventDefault(),t.stopPropagation(),on._jQueryInterface.call(p.default(this),"toggle")}).on(He.CLICK_DATA_API,Qe,function(t){t.stopPropagation()}),p.default.fn[Ne]=on._jQueryInterface,p.default.fn[Ne].Constructor=on,p.default.fn[Ne].noConflict=function(){return p.default.fn[Ne]=xe,on._jQueryInterface},"function"!=typeof NodeList.prototype.forEach&&(NodeList.prototype.forEach=Array.prototype.forEach);var rn="booklyModal",an="bs.modal",sn="."+an,ln=p.default.fn[rn],un={backdrop:!0,keyboard:!0,focus:!0,show:!0},fn={backdrop:"(boolean|string)",keyboard:"boolean",focus:"boolean",show:"boolean"},dn={HIDE:"hide"+sn,HIDE_PREVENTED:"hidePrevented"+sn,HIDDEN:"hidden"+sn,SHOW:"show"+sn,SHOWN:"shown"+sn,FOCUSIN:"focusin"+sn,RESIZE:"resize"+sn,CLICK_DISMISS:"click.dismiss"+sn,KEYDOWN_DISMISS:"keydown.dismiss"+sn,MOUSEUP_DISMISS:"mouseup.dismiss"+sn,MOUSEDOWN_DISMISS:"mousedown.dismiss"+sn,CLICK_DATA_API:"click"+sn+".data-api"},cn="modal-dialog-scrollable",hn="modal-scrollbar-measure",pn="bookly-modal-backdrop",mn="bookly-modal-open",gn="bookly-fade",_n="show",vn="modal-static",yn="modal-faded",En=".modal-dialog",bn=".modal-body",wn='[data-toggle="bookly-modal"]',Tn='[data-dismiss="bookly-modal"]',Cn=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",Sn=".sticky-top",Dn=".bookly-modal",In=".bookly-modal.show",An=function(){function o(t,e){this._config=this._getConfig(e),this._element=t,this._dialog=t.querySelector(En),this._backdrop=null,this._isShown=!1,this._isBodyOverflowing=!1,this._ignoreBackdropClick=!1,this._isTransitioning=!1,this._scrollbarWidth=0}var t=o.prototype;return t.toggle=function(t){return this._isShown?this.hide():this.show(t)},t.show=function(t){var e,n=this;this._isShown||this._isTransitioning||(p.default(this._element).hasClass(gn)&&(this._isTransitioning=!0),e=p.default.Event(dn.SHOW,{relatedTarget:t}),p.default(this._element).trigger(e),this._isShown||e.isDefaultPrevented()||(this._isShown=!0,this._checkScrollbar(),this._setScrollbar(),this._adjustDialog(),this._setEscapeEvent(),this._setResizeEvent(),document.querySelectorAll(Dn).forEach(function(t){t.classList.add(yn)}),this._element.classList.remove(yn),p.default(this._element).on(dn.CLICK_DISMISS,Tn,function(t){return n.hide(t)}),p.default(this._dialog).on(dn.MOUSEDOWN_DISMISS,function(){p.default(n._element).one(dn.MOUSEUP_DISMISS,function(t){p.default(t.target).is(n._element)&&(n._ignoreBackdropClick=!0)})}),this._showBackdrop(function(){return n._showElement(t)})))},t.hide=function(t){var e,n,i,o=this;t&&t.preventDefault(),this._isShown&&!this._isTransitioning&&(e=p.default.Event(dn.HIDE),p.default(this._element).trigger(e),this._isShown&&!e.isDefaultPrevented()&&(this._isShown=!1,n=p.default(this._element).hasClass(gn),document.querySelectorAll(Dn).forEach(function(t){t.classList.remove(yn)}),n&&(this._isTransitioning=!0),this._setEscapeEvent(),this._setResizeEvent(),p.default(document).off(dn.FOCUSIN),p.default(this._element).removeClass(_n),p.default(this._element).off(dn.CLICK_DISMISS),p.default(this._dialog).off(dn.MOUSEDOWN_DISMISS),n?(i=m.getTransitionDurationFromElement(this._element),p.default(this._element).one(m.TRANSITION_END,function(t){return o._hideModal(t)}).emulateTransitionEnd(i)):this._hideModal()))},t.dispose=function(){[window,this._element,this._dialog].forEach(function(t){return p.default(t).off(sn)}),p.default(document).off(dn.FOCUSIN),p.default.removeData(this._element,an),this._config=null,this._element=null,this._dialog=null,this._backdrop=null,this._isShown=null,this._isBodyOverflowing=null,this._ignoreBackdropClick=null,this._isTransitioning=null,this._scrollbarWidth=null},t.handleUpdate=function(){this._adjustDialog()},t._getConfig=function(t){return t=l(l({},un),t),m.typeCheckConfig(rn,t,fn),t},t._triggerBackdropTransition=function(){var t=this;if("static"===this._config.backdrop){var e=p.default.Event(dn.HIDE_PREVENTED);if(p.default(this._element).trigger(e),e.defaultPrevented)return;this._element.classList.add(vn);var n=m.getTransitionDurationFromElement(this._element);p.default(this._element).one(m.TRANSITION_END,function(){t._element.classList.remove(vn)}).emulateTransitionEnd(n),this._element.focus()}else this.hide()},t._showElement=function(t){var e=this,n=p.default(this._element).hasClass(gn),i=this._dialog?this._dialog.querySelector(bn):null;this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.appendChild(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),p.default(this._dialog).hasClass(cn)&&i?i.scrollTop=0:this._element.scrollTop=0,n&&m.reflow(this._element),p.default(this._element).addClass(_n),this._config.focus&&this._enforceFocus();function o(){e._config.focus&&e._element.focus(),e._isTransitioning=!1,p.default(e._element).trigger(a)}var r,a=p.default.Event(dn.SHOWN,{relatedTarget:t});n?(r=m.getTransitionDurationFromElement(this._dialog),p.default(this._dialog).one(m.TRANSITION_END,o).emulateTransitionEnd(r)):o()},t._enforceFocus=function(){var e=this;p.default(document).off(dn.FOCUSIN).on(dn.FOCUSIN,function(t){document!==t.target&&e._element!==t.target&&0===p.default(e._element).has(t.target).length&&e._element.focus()})},t._setEscapeEvent=function(){var e=this;this._isShown&&this._config.keyboard?p.default(this._element).on(dn.KEYDOWN_DISMISS,function(t){27===t.which&&e._triggerBackdropTransition()}):this._isShown||p.default(this._element).off(dn.KEYDOWN_DISMISS)},t._setResizeEvent=function(){var e=this;this._isShown?p.default(window).on(dn.RESIZE,function(t){return e.handleUpdate(t)}):p.default(window).off(dn.RESIZE)},t._hideModal=function(){var t=this;this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._isTransitioning=!1,this._showBackdrop(function(){0===document.querySelectorAll(In).length&&p.default(document.body).removeClass(mn),t._resetAdjustments(),t._resetScrollbar(),p.default(t._element).trigger(dn.HIDDEN)})},t._removeBackdrop=function(){this._backdrop&&(p.default(this._backdrop).remove(),this._backdrop=null)},t._showBackdrop=function(t){var e,n,i=this,o=p.default(this._element).hasClass(gn)?gn:"";if(this._isShown&&this._config.backdrop){if(this._backdrop=document.createElement("div"),this._backdrop.className=pn,o&&this._backdrop.classList.add(o),p.default(this._backdrop).appendTo(document.body),p.default(this._element).on(dn.CLICK_DISMISS,function(t){i._ignoreBackdropClick?i._ignoreBackdropClick=!1:t.target===t.currentTarget&&i._triggerBackdropTransition()}),o&&m.reflow(this._backdrop),p.default(this._backdrop).addClass(_n),!t)return;if(!o)return void t();var r=m.getTransitionDurationFromElement(this._backdrop);p.default(this._backdrop).one(m.TRANSITION_END,t).emulateTransitionEnd(r)}else{!this._isShown&&this._backdrop?(p.default(this._backdrop).removeClass(_n),e=function(){i._removeBackdrop(),t&&t()},p.default(this._element).hasClass(gn)?(n=m.getTransitionDurationFromElement(this._backdrop),p.default(this._backdrop).one(m.TRANSITION_END,e).emulateTransitionEnd(n)):e()):t&&t()}},t._adjustDialog=function(){var t=this._element.scrollHeight>document.documentElement.clientHeight;!this._isBodyOverflowing&&t&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!t&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},t._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},t._checkScrollbar=function(){var t=document.body.getBoundingClientRect();this._isBodyOverflowing=t.left+t.right<window.innerWidth,this._scrollbarWidth=this._getScrollbarWidth()},t._setScrollbar=function(){var t,e,n,i,o=this;this._isBodyOverflowing&&(t=[].slice.call(document.querySelectorAll(Cn)),e=[].slice.call(document.querySelectorAll(Sn)),p.default(t).each(function(t,e){var n=e.style.paddingRight,i=p.default(e).css("padding-right");p.default(e).data("padding-right",n).css("padding-right",parseFloat(i)+o._scrollbarWidth+"px")}),p.default(e).each(function(t,e){var n=e.style.marginRight,i=p.default(e).css("margin-right");p.default(e).data("margin-right",n).css("margin-right",parseFloat(i)-o._scrollbarWidth+"px")}),n=document.body.style.paddingRight,i=p.default(document.body).css("padding-right"),p.default(document.body).data("padding-right",n).css("padding-right",parseFloat(i)+this._scrollbarWidth+"px")),p.default(document.body).addClass(mn)},t._resetScrollbar=function(){var t=[].slice.call(document.querySelectorAll(Cn));p.default(t).each(function(t,e){var n=p.default(e).data("padding-right");p.default(e).removeData("padding-right"),e.style.paddingRight=n||""});var e=[].slice.call(document.querySelectorAll(""+Sn));p.default(e).each(function(t,e){var n=p.default(e).data("margin-right");"undefined"!=typeof n&&p.default(e).css("margin-right",n).removeData("margin-right")});var n=p.default(document.body).data("padding-right");p.default(document.body).removeData("padding-right"),document.body.style.paddingRight=n||""},t._getScrollbarWidth=function(){var t=document.createElement("div");t.className=hn,document.body.appendChild(t);var e=t.getBoundingClientRect().width-t.clientWidth;return document.body.removeChild(t),e},o._jQueryInterface=function(n,i){return this.each(function(){var t=p.default(this).data(an),e=l(l(l({},un),p.default(this).data()),"object"==typeof n&&n?n:{});if(t||(t=new o(this,e),p.default(this).data(an,t)),"string"==typeof n){if("undefined"==typeof t[n])throw new TypeError('No method named "'+n+'"');t[n](i)}else e.show&&t.show(i)})},a(o,null,[{key:"VERSION",get:function(){return"4.4.1"}},{key:"Default",get:function(){return un}}]),o}();p.default(document).on(dn.CLICK_DATA_API,wn,function(t){var e,n=this,i=m.getSelectorFromElement(this);i&&(e=document.querySelector(i));var o=p.default(e).data(an)?"toggle":l(l({},p.default(e).data()),p.default(this).data());"A"!==this.tagName&&"AREA"!==this.tagName||t.preventDefault();var r=p.default(e).one(dn.SHOW,function(t){t.isDefaultPrevented()||r.one(dn.HIDDEN,function(){p.default(n).is(":visible")&&n.focus()})});An._jQueryInterface.call(p.default(e),o,this)}),p.default.fn[rn]=An._jQueryInterface,p.default.fn[rn].Constructor=An,p.default.fn[rn].noConflict=function(){return p.default.fn[rn]=ln,An._jQueryInterface};var On=["background","cite","href","itemtype","longdesc","poster","src","xlink:href"],Nn={"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},kn=/^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi,Ln=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i;function Pn(t,r,e){if(0===t.length)return t;if(e&&"function"==typeof e)return e(t);for(var n=(new window.DOMParser).parseFromString(t,"text/html"),a=Object.keys(r),s=[].slice.call(n.body.querySelectorAll("*")),i=function(t){var e=s[t],n=e.nodeName.toLowerCase();if(-1===a.indexOf(e.nodeName.toLowerCase()))return e.parentNode.removeChild(e),"continue";var i=[].slice.call(e.attributes),o=[].concat(r["*"]||[],r[n]||[]);i.forEach(function(t){!function(t,e){var n=t.nodeName.toLowerCase();if(-1!==e.indexOf(n))return-1===On.indexOf(n)||Boolean(t.nodeValue.match(kn)||t.nodeValue.match(Ln));for(var i=e.filter(function(t){return t instanceof RegExp}),o=0,r=i.length;o<r;o++)if(n.match(i[o]))return 1}(t,o)&&e.removeAttribute(t.nodeName)})},o=0,l=s.length;o<l;o++)i(o);return n.body.innerHTML}var xn="tooltip",jn="bs.tooltip",Hn="."+jn,Rn=p.default.fn[xn],Fn="bs-tooltip",Mn=new RegExp("(^|\\s)"+Fn+"\\S+","g"),Wn=["sanitize","whiteList","sanitizeFn"],Un={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(number|string|function)",container:"(string|element|boolean)",fallbackPlacement:"(string|array)",boundary:"(string|element)",sanitize:"boolean",sanitizeFn:"(null|function)",whiteList:"object",popperConfig:"(null|object)"},qn={AUTO:"auto",TOP:"top",RIGHT:"right",BOTTOM:"bottom",LEFT:"left"},Bn={animation:!0,template:'<div class="tooltip" role="tooltip"><div class="arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent",sanitize:!0,sanitizeFn:null,whiteList:Nn,popperConfig:null},Kn="show",Qn="out",Vn={HIDE:"hide"+Hn,HIDDEN:"hidden"+Hn,SHOW:"show"+Hn,SHOWN:"shown"+Hn,INSERTED:"inserted"+Hn,CLICK:"click"+Hn,FOCUSIN:"focusin"+Hn,FOCUSOUT:"focusout"+Hn,MOUSEENTER:"mouseenter"+Hn,MOUSELEAVE:"mouseleave"+Hn},Yn="bookly-fade",zn="show",Xn=".tooltip-inner",Gn=".arrow",$n="hover",Jn="focus",Zn="click",ti="manual",ei=function(){function i(t,e){if("undefined"==typeof Ae)throw new TypeError("Bootstrap's tooltips require Popper.js (https://popper.js.org/)");this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners()}var t=i.prototype;return t.enable=function(){this._isEnabled=!0},t.disable=function(){this._isEnabled=!1},t.toggleEnabled=function(){this._isEnabled=!this._isEnabled},t.toggle=function(t){if(this._isEnabled)if(t){var e=this.constructor.DATA_KEY,n=p.default(t.currentTarget).data(e);n||(n=new this.constructor(t.currentTarget,this._getDelegateConfig()),p.default(t.currentTarget).data(e,n)),n._activeTrigger.click=!n._activeTrigger.click,n._isWithActiveTrigger()?n._enter(null,n):n._leave(null,n)}else{if(p.default(this.getTipElement()).hasClass(zn))return void this._leave(null,this);this._enter(null,this)}},t.dispose=function(){clearTimeout(this._timeout),p.default.removeData(this.element,this.constructor.DATA_KEY),p.default(this.element).off(this.constructor.EVENT_KEY),p.default(this.element).closest(".modal").off("hide.bs.modal",this._hideModalHandler),this.tip&&p.default(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,this._activeTrigger=null,this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},t.show=function(){var e=this;if("none"===p.default(this.element).css("display"))throw new Error("Please use show on visible elements");var t=p.default.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){p.default(this.element).trigger(t);var n=m.findShadowRoot(this.element),i=p.default.contains(null!==n?n:this.element.ownerDocument.documentElement,this.element);if(t.isDefaultPrevented()||!i)return;var o=this.getTipElement(),r=m.getUID(this.constructor.NAME);o.setAttribute("id",r),this.element.setAttribute("aria-describedby",r),this.setContent(),this.config.animation&&p.default(o).addClass(Yn);var a="function"==typeof this.config.placement?this.config.placement.call(this,o,this.element):this.config.placement,s=this._getAttachment(a);this.addAttachmentClass(s);var l=this._getContainer();p.default(o).data(this.constructor.DATA_KEY,this),p.default.contains(this.element.ownerDocument.documentElement,this.tip)||p.default(o).appendTo(l),p.default(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new Ae(this.element,o,this._getPopperConfig(s)),p.default(o).addClass(zn),"ontouchstart"in document.documentElement&&p.default(document.body).children().on("mouseover",null,p.default.noop);var u,f=function(){e.config.animation&&e._fixTransition();var t=e._hoverState;e._hoverState=null,p.default(e.element).trigger(e.constructor.Event.SHOWN),t===Qn&&e._leave(null,e)};p.default(this.tip).hasClass(Yn)?(u=m.getTransitionDurationFromElement(this.tip),p.default(this.tip).one(m.TRANSITION_END,f).emulateTransitionEnd(u)):f()}},t.hide=function(t){function e(){i._hoverState!==Kn&&o.parentNode&&o.parentNode.removeChild(o),i._cleanTipClass(),i.element.removeAttribute("aria-describedby"),p.default(i.element).trigger(i.constructor.Event.HIDDEN),null!==i._popper&&i._popper.destroy(),t&&t()}var n,i=this,o=this.getTipElement(),r=p.default.Event(this.constructor.Event.HIDE);p.default(this.element).trigger(r),r.isDefaultPrevented()||(p.default(o).removeClass(zn),"ontouchstart"in document.documentElement&&p.default(document.body).children().off("mouseover",null,p.default.noop),this._activeTrigger[Zn]=!1,this._activeTrigger[Jn]=!1,this._activeTrigger[$n]=!1,p.default(this.tip).hasClass(Yn)?(n=m.getTransitionDurationFromElement(o),p.default(o).one(m.TRANSITION_END,e).emulateTransitionEnd(n)):e(),this._hoverState="")},t.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},t.isWithContent=function(){return Boolean(this.getTitle())},t.addAttachmentClass=function(t){p.default(this.getTipElement()).addClass(Fn+"-"+t)},t.getTipElement=function(){return this.tip=this.tip||p.default(this.config.template)[0],this.tip},t.setContent=function(){var t=this.getTipElement();this.setElementContent(p.default(t.querySelectorAll(Xn)),this.getTitle()),p.default(t).removeClass(Yn+" "+zn)},t.setElementContent=function(t,e){"object"!=typeof e||!e.nodeType&&!e.jquery?this.config.html?(this.config.sanitize&&(e=Pn(e,this.config.whiteList,this.config.sanitizeFn)),t.html(e)):t.text(e):this.config.html?p.default(e).parent().is(t)||t.empty().append(e):t.text(p.default(e).text())},t.getTitle=function(){return this.element.getAttribute("data-original-title")||("function"==typeof this.config.title?this.config.title.call(this.element):this.config.title)},t._getPopperConfig=function(t){var e=this;return l(l({},{placement:t,modifiers:{offset:this._getOffset(),flip:{behavior:this.config.fallbackPlacement},arrow:{element:Gn},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(t){t.originalPlacement!==t.placement&&e._handlePopperPlacementChange(t)},onUpdate:function(t){return e._handlePopperPlacementChange(t)}}),this.config.popperConfig)},t._getOffset=function(){var e=this,t={};return"function"==typeof this.config.offset?t.fn=function(t){return t.offsets=l(l({},t.offsets),e.config.offset(t.offsets,e.element)||{}),t}:t.offset=this.config.offset,t},t._getContainer=function(){return!1===this.config.container?document.body:m.isElement(this.config.container)?p.default(this.config.container):p.default(document).find(this.config.container)},t._getAttachment=function(t){return qn[t.toUpperCase()]},t._setListeners=function(){var i=this;this.config.trigger.split(" ").forEach(function(t){var e,n;"click"===t?p.default(i.element).on(i.constructor.Event.CLICK,i.config.selector,function(t){return i.toggle(t)}):t!==ti&&(e=t===$n?i.constructor.Event.MOUSEENTER:i.constructor.Event.FOCUSIN,n=t===$n?i.constructor.Event.MOUSELEAVE:i.constructor.Event.FOCUSOUT,p.default(i.element).on(e,i.config.selector,function(t){return i._enter(t)}).on(n,i.config.selector,function(t){return i._leave(t)}))}),this._hideModalHandler=function(){i.element&&i.hide()},p.default(this.element).closest(".modal").on("hide.bs.modal",this._hideModalHandler),this.config.selector?this.config=l(l({},this.config),{},{trigger:"manual",selector:""}):this._fixTitle()},t._fixTitle=function(){var t=typeof this.element.getAttribute("data-original-title");!this.element.getAttribute("title")&&"string"==t||(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},t._enter=function(t,e){var n=this.constructor.DATA_KEY;(e=e||p.default(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),p.default(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusin"===t.type?Jn:$n]=!0),p.default(e.getTipElement()).hasClass(zn)||e._hoverState===Kn?e._hoverState=Kn:(clearTimeout(e._timeout),e._hoverState=Kn,e.config.delay&&e.config.delay.show?e._timeout=setTimeout(function(){e._hoverState===Kn&&e.show()},e.config.delay.show):e.show())},t._leave=function(t,e){var n=this.constructor.DATA_KEY;(e=e||p.default(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),p.default(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusout"===t.type?Jn:$n]=!1),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState=Qn,e.config.delay&&e.config.delay.hide?e._timeout=setTimeout(function(){e._hoverState===Qn&&e.hide()},e.config.delay.hide):e.hide())},t._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},t._getConfig=function(t){var e=p.default(this.element).data();return Object.keys(e).forEach(function(t){-1!==Wn.indexOf(t)&&delete e[t]}),"number"==typeof(t=l(l(l({},this.constructor.Default),e),"object"==typeof t&&t?t:{})).delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),m.typeCheckConfig(xn,t,this.constructor.DefaultType),t.sanitize&&(t.template=Pn(t.template,t.whiteList,t.sanitizeFn)),t},t._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},t._cleanTipClass=function(){var t=p.default(this.getTipElement()),e=t.attr("class").match(Mn);null!==e&&e.length&&t.removeClass(e.join(""))},t._handlePopperPlacementChange=function(t){var e=t.instance;this.tip=e.popper,this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(t.placement))},t._fixTransition=function(){var t=this.getTipElement(),e=this.config.animation;null===t.getAttribute("x-placement")&&(p.default(t).removeClass(Yn),this.config.animation=!1,this.hide(),this.show(),this.config.animation=e)},i._jQueryInterface=function(n){return this.each(function(){var t=p.default(this).data(jn),e="object"==typeof n&&n;if((t||!/dispose|hide/.test(n))&&(t||(t=new i(this,e),p.default(this).data(jn,t)),"string"==typeof n)){if("undefined"==typeof t[n])throw new TypeError('No method named "'+n+'"');t[n]()}})},a(i,null,[{key:"VERSION",get:function(){return"4.4.1"}},{key:"Default",get:function(){return Bn}},{key:"NAME",get:function(){return xn}},{key:"DATA_KEY",get:function(){return jn}},{key:"Event",get:function(){return Vn}},{key:"EVENT_KEY",get:function(){return Hn}},{key:"DefaultType",get:function(){return Un}}]),i}();p.default.fn[xn]=ei._jQueryInterface,p.default.fn[xn].Constructor=ei,p.default.fn[xn].noConflict=function(){return p.default.fn[xn]=Rn,ei._jQueryInterface};var ni="booklyPopover",ii="bs.popover",oi="."+ii,ri=p.default.fn[ni],ai="bs-popover",si=new RegExp("(^|\\s)"+ai+"\\S+","g"),li=l(l({},ei.Default),{},{placement:"right",trigger:"click",content:"",template:'<div class="bookly-popover" role="tooltip"><div class="arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>'}),ui=l(l({},ei.DefaultType),{},{content:"(string|element|function)"}),fi="bookly-fade",di="show",ci=".popover-header",hi=".popover-body",pi={HIDE:"hide"+oi,HIDDEN:"hidden"+oi,SHOW:"show"+oi,SHOWN:"shown"+oi,INSERTED:"inserted"+oi,CLICK:"click"+oi,FOCUSIN:"focusin"+oi,FOCUSOUT:"focusout"+oi,MOUSEENTER:"mouseenter"+oi,MOUSELEAVE:"mouseleave"+oi},mi=function(t){var e,n;function i(){return t.apply(this,arguments)||this}n=t,(e=i).prototype=Object.create(n.prototype),(e.prototype.constructor=e).__proto__=n;var o=i.prototype;return o.isWithContent=function(){return this.getTitle()||this._getContent()},o.addAttachmentClass=function(t){p.default(this.getTipElement()).addClass(ai+"-"+t)},o.getTipElement=function(){return this.tip=this.tip||p.default(this.config.template)[0],this.tip},o.setContent=function(){var t=p.default(this.getTipElement());this.setElementContent(t.find(ci),this.getTitle());var e=this._getContent();"function"==typeof e&&(e=e.call(this.element)),this.setElementContent(t.find(hi),e),t.removeClass(fi+" "+di)},o._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},o._cleanTipClass=function(){var t=p.default(this.getTipElement()),e=t.attr("class").match(si);null!==e&&0<e.length&&t.removeClass(e.join(""))},i._jQueryInterface=function(n){return this.each(function(){var t=p.default(this).data(ii),e="object"==typeof n?n:null;if((t||!/dispose|hide/.test(n))&&(t||(t=new i(this,e),p.default(this).data(ii,t)),"string"==typeof n)){if("undefined"==typeof t[n])throw new TypeError('No method named "'+n+'"');t[n]()}})},a(i,null,[{key:"VERSION",get:function(){return"4.4.1"}},{key:"Default",get:function(){return li}},{key:"NAME",get:function(){return ni}},{key:"DATA_KEY",get:function(){return ii}},{key:"Event",get:function(){return pi}},{key:"EVENT_KEY",get:function(){return oi}},{key:"DefaultType",get:function(){return ui}}]),i}(ei);p.default.fn[ni]=mi._jQueryInterface,p.default.fn[ni].Constructor=mi,p.default.fn[ni].noConflict=function(){return p.default.fn[ni]=ri,mi._jQueryInterface};var gi="scrollspy",_i="bs.scrollspy",vi="."+_i,yi=p.default.fn[gi],Ei={offset:10,method:"auto",target:""},bi={offset:"number",method:"string",target:"(string|element)"},wi={ACTIVATE:"activate"+vi,SCROLL:"scroll"+vi,LOAD_DATA_API:"load"+vi+".data-api"},Ti="dropdown-item",Ci="active",Si='[data-spy="scroll"]',Di=".nav, .list-group",Ii=".nav-link",Ai=".nav-item",Oi=".list-group-item",Ni=".dropdown",ki=".dropdown-item",Li=".dropdown-toggle",Pi="offset",xi="position",ji=function(){function n(t,e){var n=this;this._element=t,this._scrollElement="BODY"===t.tagName?window:t,this._config=this._getConfig(e),this._selector=this._config.target+" "+Ii+","+this._config.target+" "+Oi+","+this._config.target+" "+ki,this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,p.default(this._scrollElement).on(wi.SCROLL,function(t){return n._process(t)}),this.refresh(),this._process()}var t=n.prototype;return t.refresh=function(){var e=this,t=this._scrollElement===this._scrollElement.window?Pi:xi,o="auto"===this._config.method?t:this._config.method,r=o===xi?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),[].slice.call(document.querySelectorAll(this._selector)).map(function(t){var e,n=m.getSelectorFromElement(t);if(n&&(e=document.querySelector(n)),e){var i=e.getBoundingClientRect();if(i.width||i.height)return[p.default(e)[o]().top+r,n]}return null}).filter(function(t){return t}).sort(function(t,e){return t[0]-e[0]}).forEach(function(t){e._offsets.push(t[0]),e._targets.push(t[1])})},t.dispose=function(){p.default.removeData(this._element,_i),p.default(this._scrollElement).off(vi),this._element=null,this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null},t._getConfig=function(t){var e;return"string"!=typeof(t=l(l({},Ei),"object"==typeof t&&t?t:{})).target&&((e=p.default(t.target).attr("id"))||(e=m.getUID(gi),p.default(t.target).attr("id",e)),t.target="#"+e),m.typeCheckConfig(gi,t,bi),t},t._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},t._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},t._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},t._process=function(){var t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),n=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),n<=t){var i=this._targets[this._targets.length-1];this._activeTarget!==i&&this._activate(i)}else{if(this._activeTarget&&t<this._offsets[0]&&0<this._offsets[0])return this._activeTarget=null,void this._clear();for(var o=this._offsets.length;o--;){this._activeTarget!==this._targets[o]&&t>=this._offsets[o]&&("undefined"==typeof this._offsets[o+1]||t<this._offsets[o+1])&&this._activate(this._targets[o])}}},t._activate=function(e){this._activeTarget=e,this._clear();var t=this._selector.split(",").map(function(t){return t+'[data-target="'+e+'"],'+t+'[href="'+e+'"]'}),n=p.default([].slice.call(document.querySelectorAll(t.join(","))));n.hasClass(Ti)?(n.closest(Ni).find(Li).addClass(Ci),n.addClass(Ci)):(n.addClass(Ci),n.parents(Di).prev(Ii+", "+Oi).addClass(Ci),n.parents(Di).prev(Ai).children(Ii).addClass(Ci)),p.default(this._scrollElement).trigger(wi.ACTIVATE,{relatedTarget:e})},t._clear=function(){[].slice.call(document.querySelectorAll(this._selector)).filter(function(t){return t.classList.contains(Ci)}).forEach(function(t){return t.classList.remove(Ci)})},n._jQueryInterface=function(e){return this.each(function(){var t=p.default(this).data(_i);if(t||(t=new n(this,"object"==typeof e&&e),p.default(this).data(_i,t)),"string"==typeof e){if("undefined"==typeof t[e])throw new TypeError('No method named "'+e+'"');t[e]()}})},a(n,null,[{key:"VERSION",get:function(){return"4.4.1"}},{key:"Default",get:function(){return Ei}}]),n}();p.default(window).on(wi.LOAD_DATA_API,function(){for(var t=[].slice.call(document.querySelectorAll(Si)),e=t.length;e--;){var n=p.default(t[e]);ji._jQueryInterface.call(n,n.data())}}),p.default.fn[gi]=ji._jQueryInterface,p.default.fn[gi].Constructor=ji,p.default.fn[gi].noConflict=function(){return p.default.fn[gi]=yi,ji._jQueryInterface};var Hi="booklyTab",Ri="bs.tab",Fi="."+Ri,Mi=p.default.fn[Hi],Wi={HIDE:"hide"+Fi,HIDDEN:"hidden"+Fi,SHOW:"show"+Fi,SHOWN:"shown"+Fi,CLICK_DATA_API:"click"+Fi+".data-api"},Ui="dropdown-menu",qi="active",Bi="disabled",Ki="bookly-fade",Qi="show",Vi=".dropdown",Yi=".nav, .list-group",zi=".active",Xi="> li > .active",Gi='[data-toggle="bookly-tab"], [data-toggle="bookly-pill"], [data-toggle="bookly-list"]',$i=".dropdown-toggle",Ji="> .dropdown-menu .active",Zi=function(){function i(t){this._element=t}var t=i.prototype;return t.show=function(){var t,e,n,i,o,r,a,s,l=this;this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&p.default(this._element).hasClass(qi)||p.default(this._element).hasClass(Bi)||(e=p.default(this._element).closest(Yi)[0],n=m.getSelectorFromElement(this._element),e&&(i="UL"===e.nodeName||"OL"===e.nodeName?Xi:zi,o=(o=p.default.makeArray(p.default(e).find(i)))[o.length-1]),r=p.default.Event(Wi.HIDE,{relatedTarget:this._element}),a=p.default.Event(Wi.SHOW,{relatedTarget:o}),o&&p.default(o).trigger(r),p.default(this._element).trigger(a),a.isDefaultPrevented()||r.isDefaultPrevented()||(n&&(t=document.querySelector(n)),this._activate(this._element,e),s=function(){var t=p.default.Event(Wi.HIDDEN,{relatedTarget:l._element}),e=p.default.Event(Wi.SHOWN,{relatedTarget:o});p.default(o).trigger(t),p.default(l._element).trigger(e)},t?this._activate(t,t.parentNode,s):s()))},t.dispose=function(){p.default.removeData(this._element,Ri),this._element=null},t._activate=function(t,e,n){function i(){return r._transitionComplete(t,a,n)}var o,r=this,a=(!e||"UL"!==e.nodeName&&"OL"!==e.nodeName?p.default(e).children(zi):p.default(e).find(Xi))[0],s=n&&a&&p.default(a).hasClass(Ki);a&&s?(o=m.getTransitionDurationFromElement(a),p.default(a).removeClass(Qi).one(m.TRANSITION_END,i).emulateTransitionEnd(o)):i()},t._transitionComplete=function(t,e,n){var i,o,r;e&&(p.default(e).removeClass(qi),(i=p.default(e.parentNode).find(Ji)[0])&&p.default(i).removeClass(qi),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!1)),p.default(t).addClass(qi),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!0),m.reflow(t),t.classList.contains(Ki)&&t.classList.add(Qi),t.parentNode&&p.default(t.parentNode).hasClass(Ui)&&((o=p.default(t).closest(Vi)[0])&&(r=[].slice.call(o.querySelectorAll($i)),p.default(r).addClass(qi)),t.setAttribute("aria-expanded",!0)),n&&n()},i._jQueryInterface=function(n){return this.each(function(){var t=p.default(this),e=t.data(Ri);if(e||(e=new i(this),t.data(Ri,e)),"string"==typeof n){if("undefined"==typeof e[n])throw new TypeError('No method named "'+n+'"');e[n]()}})},a(i,null,[{key:"VERSION",get:function(){return"4.4.1"}}]),i}();p.default(document).on(Wi.CLICK_DATA_API,Gi,function(t){t.preventDefault(),Zi._jQueryInterface.call(p.default(this),"show")}),p.default.fn[Hi]=Zi._jQueryInterface,p.default.fn[Hi].Constructor=Zi,p.default.fn[Hi].noConflict=function(){return p.default.fn[Hi]=Mi,Zi._jQueryInterface};var to="toast",eo="bs.toast",no="."+eo,io=p.default.fn[to],oo={CLICK_DISMISS:"click.dismiss"+no,HIDE:"hide"+no,HIDDEN:"hidden"+no,SHOW:"show"+no,SHOWN:"shown"+no},ro="fade",ao="hide",so="show",lo="showing",uo={animation:"boolean",autohide:"boolean",delay:"number"},fo={animation:!0,autohide:!0,delay:500},co='[data-dismiss="toast"]',ho=function(){function i(t,e){this._element=t,this._config=this._getConfig(e),this._timeout=null,this._setListeners()}var t=i.prototype;return t.show=function(){var t,e,n=this,i=p.default.Event(oo.SHOW);p.default(this._element).trigger(i),i.isDefaultPrevented()||(this._config.animation&&this._element.classList.add(ro),t=function(){n._element.classList.remove(lo),n._element.classList.add(so),p.default(n._element).trigger(oo.SHOWN),n._config.autohide&&(n._timeout=setTimeout(function(){n.hide()},n._config.delay))},this._element.classList.remove(ao),m.reflow(this._element),this._element.classList.add(lo),this._config.animation?(e=m.getTransitionDurationFromElement(this._element),p.default(this._element).one(m.TRANSITION_END,t).emulateTransitionEnd(e)):t())},t.hide=function(){var t;this._element.classList.contains(so)&&(t=p.default.Event(oo.HIDE),p.default(this._element).trigger(t),t.isDefaultPrevented()||this._close())},t.dispose=function(){clearTimeout(this._timeout),this._timeout=null,this._element.classList.contains(so)&&this._element.classList.remove(so),p.default(this._element).off(oo.CLICK_DISMISS),p.default.removeData(this._element,eo),this._element=null,this._config=null},t._getConfig=function(t){return t=l(l(l({},fo),p.default(this._element).data()),"object"==typeof t&&t?t:{}),m.typeCheckConfig(to,t,this.constructor.DefaultType),t},t._setListeners=function(){var t=this;p.default(this._element).on(oo.CLICK_DISMISS,co,function(){return t.hide()})},t._close=function(){function t(){n._element.classList.add(ao),p.default(n._element).trigger(oo.HIDDEN)}var e,n=this;this._element.classList.remove(so),this._config.animation?(e=m.getTransitionDurationFromElement(this._element),p.default(this._element).one(m.TRANSITION_END,t).emulateTransitionEnd(e)):t()},i._jQueryInterface=function(n){return this.each(function(){var t=p.default(this),e=t.data(eo);if(e||(e=new i(this,"object"==typeof n&&n),t.data(eo,e)),"string"==typeof n){if("undefined"==typeof e[n])throw new TypeError('No method named "'+n+'"');e[n](this)}})},a(i,null,[{key:"VERSION",get:function(){return"4.4.1"}},{key:"DefaultType",get:function(){return uo}},{key:"Default",get:function(){return fo}}]),i}();p.default.fn[to]=ho._jQueryInterface,p.default.fn[to].Constructor=ho,p.default.fn[to].noConflict=function(){return p.default.fn[to]=io,ho._jQueryInterface},t.Alert=y,t.Button=H,t.Carousel=ct,t.Collapse=At,t.Dropdown=on,t.Modal=An,t.Popover=mi,t.Scrollspy=ji,t.Tab=Zi,t.Toast=ho,t.Tooltip=ei,t.Util=m,Object.defineProperty(t,"__esModule",{value:!0})});
|
3 |
* Copyright 2011-2020 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
4 |
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
5 |
*/
|
6 |
+
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("jquery")):"function"==typeof define&&define.amd?define(["exports","jquery"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).bootstrap={},t.jQuery)}(this,function(t,e){"use strict";function n(t){return t&&"object"==typeof t&&"default"in t?t:{default:t}}var p=n(e);function i(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function a(t,e,n){return e&&i(t.prototype,e),n&&i(t,n),t}function s(e,t){var n,i=Object.keys(e);return Object.getOwnPropertySymbols&&(n=Object.getOwnPropertySymbols(e),t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),i.push.apply(i,n)),i}function l(o){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?s(Object(r),!0).forEach(function(t){var e,n,i;e=o,i=r[n=t],n in e?Object.defineProperty(e,n,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[n]=i}):Object.getOwnPropertyDescriptors?Object.defineProperties(o,Object.getOwnPropertyDescriptors(r)):s(Object(r)).forEach(function(t){Object.defineProperty(o,t,Object.getOwnPropertyDescriptor(r,t))})}return o}var o="transitionend";function r(t){var e=this,n=!1;return p.default(this).one(m.TRANSITION_END,function(){n=!0}),setTimeout(function(){n||m.triggerTransitionEnd(e)},t),this}var m={TRANSITION_END:"booklyTransitionEnd",getUID:function(t){for(;t+=~~(1e6*Math.random()),document.getElementById(t););return t},getSelectorFromElement:function(t){var e,n=t.getAttribute("data-target");n&&"#"!==n||(n=(e=t.getAttribute("href"))&&"#"!==e?e.trim():"");try{return document.querySelector(n)?n:null}catch(t){return null}},getTransitionDurationFromElement:function(t){if(!t)return 0;var e=p.default(t).css("transition-duration"),n=p.default(t).css("transition-delay"),i=parseFloat(e),o=parseFloat(n);return i||o?(e=e.split(",")[0],n=n.split(",")[0],1e3*(parseFloat(e)+parseFloat(n))):0},reflow:function(t){return t.offsetHeight},triggerTransitionEnd:function(t){p.default(t).trigger(o)},supportsTransitionEnd:function(){return Boolean(o)},isElement:function(t){return(t[0]||t).nodeType},typeCheckConfig:function(t,e,n){for(var i in n)if(Object.prototype.hasOwnProperty.call(n,i)){var o=n[i],r=e[i],a=r&&m.isElement(r)?"element":(s=r,{}.toString.call(s).match(/\s([a-z]+)/i)[1].toLowerCase());if(!new RegExp(o).test(a))throw new Error(t.toUpperCase()+': Option "'+i+'" provided type "'+a+'" but expected type "'+o+'".')}var s},findShadowRoot:function(t){if(!document.documentElement.attachShadow)return null;if("function"!=typeof t.getRootNode)return t instanceof ShadowRoot?t:t.parentNode?m.findShadowRoot(t.parentNode):null;var e=t.getRootNode();return e instanceof ShadowRoot?e:null},jQueryDetection:function(){if("undefined"==typeof p.default)throw new TypeError("Bootstrap's JavaScript requires jQuery. jQuery must be included before Bootstrap's JavaScript.");var t=p.default.fn.jquery.split(" ")[0].split(".");if(t[0]<2&&t[1]<9||1===t[0]&&9===t[1]&&t[2]<1||4<=t[0])throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0")}};m.jQueryDetection(),p.default.fn.booklyEmulateTransitionEnd=r,p.default.event.special[m.TRANSITION_END]={bindType:o,delegateType:o,handle:function(t){if(p.default(t.target).is(this))return t.handleObj.handler.apply(this,arguments)}};var u="alert",f="bs.alert",d="."+f,c=p.default.fn[u],h={CLOSE:"close"+d,CLOSED:"closed"+d,CLICK_DATA_API:"click"+d+".data-api"},g="alert",_="fade",v="show",y=function(){function i(t){this._element=t}var t=i.prototype;return t.close=function(t){var e=this._element;t&&(e=this._getRootElement(t)),this._triggerCloseEvent(e).isDefaultPrevented()||this._removeElement(e)},t.dispose=function(){p.default.removeData(this._element,f),this._element=null},t._getRootElement=function(t){var e=m.getSelectorFromElement(t),n=!1;return e&&(n=document.querySelector(e)),n=n||p.default(t).closest("."+g)[0]},t._triggerCloseEvent=function(t){var e=p.default.Event(h.CLOSE);return p.default(t).trigger(e),e},t._removeElement=function(e){var t,n=this;p.default(e).removeClass(v),p.default(e).hasClass(_)?(t=m.getTransitionDurationFromElement(e),p.default(e).one(m.TRANSITION_END,function(t){return n._destroyElement(e,t)}).booklyEmulateTransitionEnd(t)):this._destroyElement(e)},t._destroyElement=function(t){p.default(t).detach().trigger(h.CLOSED).remove()},i._jQueryInterface=function(n){return this.each(function(){var t=p.default(this),e=t.data(f);e||(e=new i(this),t.data(f,e)),"close"===n&&e[n](this)})},i._handleDismiss=function(e){return function(t){t&&t.preventDefault(),e.close(this)}},a(i,null,[{key:"VERSION",get:function(){return"4.4.1"}}]),i}();p.default(document).on(h.CLICK_DATA_API,'[data-dismiss="alert"]',y._handleDismiss(new y)),p.default.fn[u]=y._jQueryInterface,p.default.fn[u].Constructor=y,p.default.fn[u].noConflict=function(){return p.default.fn[u]=c,y._jQueryInterface};var E="button",b="bs.button",w="."+b,T=".data-api",C=p.default.fn[E],S="active",D="btn",I="focus",A='[data-toggle^="button"]',O='[data-toggle="buttons"]',N='[data-toggle="button"]',k='[data-toggle="buttons"] .btn',L='input:not([type="hidden"])',P=".active",x=".btn",j={CLICK_DATA_API:"click"+w+T,FOCUS_BLUR_DATA_API:"focus"+w+T+" blur"+w+T,LOAD_DATA_API:"load"+w+T},H=function(){function n(t){this._element=t}var t=n.prototype;return t.toggle=function(){var t,e,n=!0,i=!0,o=p.default(this._element).closest(O)[0];!o||(t=this._element.querySelector(L))&&("radio"===t.type?t.checked&&this._element.classList.contains(S)?n=!1:(e=o.querySelector(P))&&p.default(e).removeClass(S):("checkbox"!==t.type||"LABEL"===this._element.tagName&&t.checked===this._element.classList.contains(S))&&(n=!1),n&&(t.checked=!this._element.classList.contains(S),p.default(t).trigger("change")),t.focus(),i=!1),this._element.hasAttribute("disabled")||this._element.classList.contains("disabled")||(i&&this._element.setAttribute("aria-pressed",!this._element.classList.contains(S)),n&&p.default(this._element).toggleClass(S))},t.dispose=function(){p.default.removeData(this._element,b),this._element=null},n._jQueryInterface=function(e){return this.each(function(){var t=p.default(this).data(b);t||(t=new n(this),p.default(this).data(b,t)),"toggle"===e&&t[e]()})},a(n,null,[{key:"VERSION",get:function(){return"4.4.1"}}]),n}();p.default(document).on(j.CLICK_DATA_API,A,function(t){var e=t.target;if(p.default(e).hasClass(D)||(e=p.default(e).closest(x)[0]),!e||e.hasAttribute("disabled")||e.classList.contains("disabled"))t.preventDefault();else{var n=e.querySelector(L);if(n&&(n.hasAttribute("disabled")||n.classList.contains("disabled")))return void t.preventDefault();H._jQueryInterface.call(p.default(e),"toggle")}}).on(j.FOCUS_BLUR_DATA_API,A,function(t){var e=p.default(t.target).closest(x)[0];p.default(e).toggleClass(I,/^focus(in)?$/.test(t.type))}),p.default(window).on(j.LOAD_DATA_API,function(){for(var t=[].slice.call(document.querySelectorAll(k)),e=0,n=t.length;e<n;e++){var i=t[e],o=i.querySelector(L);o.checked||o.hasAttribute("checked")?i.classList.add(S):i.classList.remove(S)}for(var r=0,a=(t=[].slice.call(document.querySelectorAll(N))).length;r<a;r++){var s=t[r];"true"===s.getAttribute("aria-pressed")?s.classList.add(S):s.classList.remove(S)}}),p.default.fn[E]=H._jQueryInterface,p.default.fn[E].Constructor=H,p.default.fn[E].noConflict=function(){return p.default.fn[E]=C,H._jQueryInterface};var R="carousel",F="bs.carousel",M="."+F,W=".data-api",U=p.default.fn[R],q={interval:5e3,keyboard:!0,slide:!1,pause:"hover",wrap:!0,touch:!0},B={interval:"(number|boolean)",keyboard:"boolean",slide:"(boolean|string)",pause:"(string|boolean)",wrap:"boolean",touch:"boolean"},K="next",Q="prev",V="left",Y="right",z={SLIDE:"slide"+M,SLID:"slid"+M,KEYDOWN:"keydown"+M,MOUSEENTER:"mouseenter"+M,MOUSELEAVE:"mouseleave"+M,TOUCHSTART:"touchstart"+M,TOUCHMOVE:"touchmove"+M,TOUCHEND:"touchend"+M,POINTERDOWN:"pointerdown"+M,POINTERUP:"pointerup"+M,DRAG_START:"dragstart"+M,LOAD_DATA_API:"load"+M+W,CLICK_DATA_API:"click"+M+W},X="carousel",G="active",$="slide",J="carousel-item-right",Z="carousel-item-left",tt="carousel-item-next",et="carousel-item-prev",nt="pointer-event",it=".active",ot=".active.carousel-item",rt=".carousel-item",at=".carousel-item img",st=".carousel-item-next, .carousel-item-prev",lt=".carousel-indicators",ut="[data-slide], [data-slide-to]",ft='[data-ride="carousel"]',dt={TOUCH:"touch",PEN:"pen"},ct=function(){function r(t,e){this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this.touchTimeout=null,this.touchStartX=0,this.touchDeltaX=0,this._config=this._getConfig(e),this._element=t,this._indicatorsElement=this._element.querySelector(lt),this._touchSupported="ontouchstart"in document.documentElement||0<navigator.maxTouchPoints,this._pointerEvent=Boolean(window.PointerEvent||window.MSPointerEvent),this._addEventListeners()}var t=r.prototype;return t.next=function(){this._isSliding||this._slide(K)},t.nextWhenVisible=function(){!document.hidden&&p.default(this._element).is(":visible")&&"hidden"!==p.default(this._element).css("visibility")&&this.next()},t.prev=function(){this._isSliding||this._slide(Q)},t.pause=function(t){t||(this._isPaused=!0),this._element.querySelector(st)&&(m.triggerTransitionEnd(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null},t.cycle=function(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config.interval&&!this._isPaused&&(this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))},t.to=function(t){var e=this;this._activeElement=this._element.querySelector(ot);var n=this._getItemIndex(this._activeElement);if(!(t>this._items.length-1||t<0))if(this._isSliding)p.default(this._element).one(z.SLID,function(){return e.to(t)});else{if(n===t)return this.pause(),void this.cycle();var i=n<t?K:Q;this._slide(i,this._items[t])}},t.dispose=function(){p.default(this._element).off(M),p.default.removeData(this._element,F),this._items=null,this._config=null,this._element=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null},t._getConfig=function(t){return t=l(l({},q),t),m.typeCheckConfig(R,t,B),t},t._handleSwipe=function(){var t,e=Math.abs(this.touchDeltaX);e<=40||(t=e/this.touchDeltaX,(this.touchDeltaX=0)<t&&this.prev(),t<0&&this.next())},t._addEventListeners=function(){var e=this;this._config.keyboard&&p.default(this._element).on(z.KEYDOWN,function(t){return e._keydown(t)}),"hover"===this._config.pause&&p.default(this._element).on(z.MOUSEENTER,function(t){return e.pause(t)}).on(z.MOUSELEAVE,function(t){return e.cycle(t)}),this._config.touch&&this._addTouchEventListeners()},t._addTouchEventListeners=function(){var t,e,n=this;this._touchSupported&&(t=function(t){n._pointerEvent&&dt[t.originalEvent.pointerType.toUpperCase()]?n.touchStartX=t.originalEvent.clientX:n._pointerEvent||(n.touchStartX=t.originalEvent.touches[0].clientX)},e=function(t){n._pointerEvent&&dt[t.originalEvent.pointerType.toUpperCase()]&&(n.touchDeltaX=t.originalEvent.clientX-n.touchStartX),n._handleSwipe(),"hover"===n._config.pause&&(n.pause(),n.touchTimeout&&clearTimeout(n.touchTimeout),n.touchTimeout=setTimeout(function(t){return n.cycle(t)},500+n._config.interval))},p.default(this._element.querySelectorAll(at)).on(z.DRAG_START,function(t){return t.preventDefault()}),this._pointerEvent?(p.default(this._element).on(z.POINTERDOWN,t),p.default(this._element).on(z.POINTERUP,e),this._element.classList.add(nt)):(p.default(this._element).on(z.TOUCHSTART,t),p.default(this._element).on(z.TOUCHMOVE,function(t){var e;(e=t).originalEvent.touches&&1<e.originalEvent.touches.length?n.touchDeltaX=0:n.touchDeltaX=e.originalEvent.touches[0].clientX-n.touchStartX}),p.default(this._element).on(z.TOUCHEND,e)))},t._keydown=function(t){if(!/input|textarea/i.test(t.target.tagName))switch(t.which){case 37:t.preventDefault(),this.prev();break;case 39:t.preventDefault(),this.next()}},t._getItemIndex=function(t){return this._items=t&&t.parentNode?[].slice.call(t.parentNode.querySelectorAll(rt)):[],this._items.indexOf(t)},t._getItemByDirection=function(t,e){var n=t===K,i=t===Q,o=this._getItemIndex(e),r=this._items.length-1;if((i&&0===o||n&&o===r)&&!this._config.wrap)return e;var a=(o+(t===Q?-1:1))%this._items.length;return-1==a?this._items[this._items.length-1]:this._items[a]},t._triggerSlideEvent=function(t,e){var n=this._getItemIndex(t),i=this._getItemIndex(this._element.querySelector(ot)),o=p.default.Event(z.SLIDE,{relatedTarget:t,direction:e,from:i,to:n});return p.default(this._element).trigger(o),o},t._setActiveIndicatorElement=function(t){var e,n;this._indicatorsElement&&(e=[].slice.call(this._indicatorsElement.querySelectorAll(it)),p.default(e).removeClass(G),(n=this._indicatorsElement.children[this._getItemIndex(t)])&&p.default(n).addClass(G))},t._slide=function(t,e){var n,i,o,r,a,s=this,l=this._element.querySelector(ot),u=this._getItemIndex(l),f=e||l&&this._getItemByDirection(t,l),d=this._getItemIndex(f),c=Boolean(this._interval),h=t===K?(n=Z,i=tt,V):(n=J,i=et,Y);f&&p.default(f).hasClass(G)?this._isSliding=!1:this._triggerSlideEvent(f,h).isDefaultPrevented()||l&&f&&(this._isSliding=!0,c&&this.pause(),this._setActiveIndicatorElement(f),o=p.default.Event(z.SLID,{relatedTarget:f,direction:h,from:u,to:d}),p.default(this._element).hasClass($)?(p.default(f).addClass(i),m.reflow(f),p.default(l).addClass(n),p.default(f).addClass(n),(r=parseInt(f.getAttribute("data-interval"),10))?(this._config.defaultInterval=this._config.defaultInterval||this._config.interval,this._config.interval=r):this._config.interval=this._config.defaultInterval||this._config.interval,a=m.getTransitionDurationFromElement(l),p.default(l).one(m.TRANSITION_END,function(){p.default(f).removeClass(n+" "+i).addClass(G),p.default(l).removeClass(G+" "+i+" "+n),s._isSliding=!1,setTimeout(function(){return p.default(s._element).trigger(o)},0)}).booklyEmulateTransitionEnd(a)):(p.default(l).removeClass(G),p.default(f).addClass(G),this._isSliding=!1,p.default(this._element).trigger(o)),c&&this.cycle())},r._jQueryInterface=function(i){return this.each(function(){var t=p.default(this).data(F),e=l(l({},q),p.default(this).data());"object"==typeof i&&(e=l(l({},e),i));var n="string"==typeof i?i:e.slide;if(t||(t=new r(this,e),p.default(this).data(F,t)),"number"==typeof i)t.to(i);else if("string"==typeof n){if("undefined"==typeof t[n])throw new TypeError('No method named "'+n+'"');t[n]()}else e.interval&&e.ride&&(t.pause(),t.cycle())})},r._dataApiClickHandler=function(t){var e,n,i,o=m.getSelectorFromElement(this);!o||(e=p.default(o)[0])&&p.default(e).hasClass(X)&&(n=l(l({},p.default(e).data()),p.default(this).data()),(i=this.getAttribute("data-slide-to"))&&(n.interval=!1),r._jQueryInterface.call(p.default(e),n),i&&p.default(e).data(F).to(i),t.preventDefault())},a(r,null,[{key:"VERSION",get:function(){return"4.4.1"}},{key:"Default",get:function(){return q}}]),r}();p.default(document).on(z.CLICK_DATA_API,ut,ct._dataApiClickHandler),p.default(window).on(z.LOAD_DATA_API,function(){for(var t=[].slice.call(document.querySelectorAll(ft)),e=0,n=t.length;e<n;e++){var i=p.default(t[e]);ct._jQueryInterface.call(i,i.data())}}),p.default.fn[R]=ct._jQueryInterface,p.default.fn[R].Constructor=ct,p.default.fn[R].noConflict=function(){return p.default.fn[R]=U,ct._jQueryInterface};var ht="collapse",pt="bs.collapse",mt="."+pt,gt=p.default.fn[ht],_t={toggle:!0,parent:""},vt={toggle:"boolean",parent:"(string|element)"},yt={SHOW:"show"+mt,SHOWN:"shown"+mt,HIDE:"hide"+mt,HIDDEN:"hidden"+mt,CLICK_DATA_API:"click"+mt+".data-api"},Et="show",bt="collapse",wt="collapsing",Tt="collapsed",Ct="width",St="height",Dt=".show, .collapsing",It='[data-toggle="collapse"]',At=function(){function s(e,t){this._isTransitioning=!1,this._element=e,this._config=this._getConfig(t),this._triggerArray=[].slice.call(document.querySelectorAll('[data-toggle="collapse"][href="#'+e.id+'"],[data-toggle="collapse"][data-target="#'+e.id+'"]'));for(var n=[].slice.call(document.querySelectorAll(It)),i=0,o=n.length;i<o;i++){var r=n[i],a=m.getSelectorFromElement(r),s=[].slice.call(document.querySelectorAll(a)).filter(function(t){return t===e});null!==a&&0<s.length&&(this._selector=a,this._triggerArray.push(r))}this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}var t=s.prototype;return t.toggle=function(){p.default(this._element).hasClass(Et)?this.hide():this.show()},t.show=function(){var t,e,n,i,o,r,a=this;this._isTransitioning||p.default(this._element).hasClass(Et)||(this._parent&&0===(t=[].slice.call(this._parent.querySelectorAll(Dt)).filter(function(t){return"string"==typeof a._config.parent?t.getAttribute("data-parent")===a._config.parent:t.classList.contains(bt)})).length&&(t=null),t&&(e=p.default(t).not(this._selector).data(pt))&&e._isTransitioning||(n=p.default.Event(yt.SHOW),p.default(this._element).trigger(n),n.isDefaultPrevented()||(t&&(s._jQueryInterface.call(p.default(t).not(this._selector),"hide"),e||p.default(t).data(pt,null)),i=this._getDimension(),p.default(this._element).removeClass(bt).addClass(wt),this._element.style[i]=0,this._triggerArray.length&&p.default(this._triggerArray).removeClass(Tt).attr("aria-expanded",!0),this.setTransitioning(!0),o="scroll"+(i[0].toUpperCase()+i.slice(1)),r=m.getTransitionDurationFromElement(this._element),p.default(this._element).one(m.TRANSITION_END,function(){p.default(a._element).removeClass(wt).addClass(bt).addClass(Et),a._element.style[i]="",a.setTransitioning(!1),p.default(a._element).trigger(yt.SHOWN)}).booklyEmulateTransitionEnd(r),this._element.style[i]=this._element[o]+"px")))},t.hide=function(){var t=this;if(!this._isTransitioning&&p.default(this._element).hasClass(Et)){var e=p.default.Event(yt.HIDE);if(p.default(this._element).trigger(e),!e.isDefaultPrevented()){var n=this._getDimension();this._element.style[n]=this._element.getBoundingClientRect()[n]+"px",m.reflow(this._element),p.default(this._element).addClass(wt).removeClass(bt).removeClass(Et);var i=this._triggerArray.length;if(0<i)for(var o=0;o<i;o++){var r=this._triggerArray[o],a=m.getSelectorFromElement(r);null!==a&&(p.default([].slice.call(document.querySelectorAll(a))).hasClass(Et)||p.default(r).addClass(Tt).attr("aria-expanded",!1))}this.setTransitioning(!0);this._element.style[n]="";var s=m.getTransitionDurationFromElement(this._element);p.default(this._element).one(m.TRANSITION_END,function(){t.setTransitioning(!1),p.default(t._element).removeClass(wt).addClass(bt).trigger(yt.HIDDEN)}).booklyEmulateTransitionEnd(s)}}},t.setTransitioning=function(t){this._isTransitioning=t},t.dispose=function(){p.default.removeData(this._element,pt),this._config=null,this._parent=null,this._element=null,this._triggerArray=null,this._isTransitioning=null},t._getConfig=function(t){return(t=l(l({},_t),t)).toggle=Boolean(t.toggle),m.typeCheckConfig(ht,t,vt),t},t._getDimension=function(){return p.default(this._element).hasClass(Ct)?Ct:St},t._getParent=function(){var t,n=this;m.isElement(this._config.parent)?(t=this._config.parent,"undefined"!=typeof this._config.parent.jquery&&(t=this._config.parent[0])):t=document.querySelector(this._config.parent);var e='[data-toggle="collapse"][data-parent="'+this._config.parent+'"]',i=[].slice.call(t.querySelectorAll(e));return p.default(i).each(function(t,e){n._addAriaAndCollapsedClass(s._getTargetFromElement(e),[e])}),t},t._addAriaAndCollapsedClass=function(t,e){var n=p.default(t).hasClass(Et);e.length&&p.default(e).toggleClass(Tt,!n).attr("aria-expanded",n)},s._getTargetFromElement=function(t){var e=m.getSelectorFromElement(t);return e?document.querySelector(e):null},s._jQueryInterface=function(i){return this.each(function(){var t=p.default(this),e=t.data(pt),n=l(l(l({},_t),t.data()),"object"==typeof i&&i?i:{});if(!e&&n.toggle&&/show|hide/.test(i)&&(n.toggle=!1),e||(e=new s(this,n),t.data(pt,e)),"string"==typeof i){if("undefined"==typeof e[i])throw new TypeError('No method named "'+i+'"');e[i]()}})},a(s,null,[{key:"VERSION",get:function(){return"4.4.1"}},{key:"Default",get:function(){return _t}}]),s}();p.default(document).on(yt.CLICK_DATA_API,It,function(t){"A"===t.currentTarget.tagName&&t.preventDefault();var n=p.default(this),e=m.getSelectorFromElement(this),i=[].slice.call(document.querySelectorAll(e));p.default(i).each(function(){var t=p.default(this),e=t.data(pt)?"toggle":n.data();At._jQueryInterface.call(t,e)})}),p.default.fn[ht]=At._jQueryInterface,p.default.fn[ht].Constructor=At,p.default.fn[ht].noConflict=function(){return p.default.fn[ht]=gt,At._jQueryInterface};var Ot="undefined"!=typeof window&&"undefined"!=typeof document&&"undefined"!=typeof navigator,Nt=function(){for(var t=["Edge","Trident","Firefox"],e=0;e<t.length;e+=1)if(Ot&&0<=navigator.userAgent.indexOf(t[e]))return 1;return 0}();var kt=Ot&&window.Promise?function(t){var e=!1;return function(){e||(e=!0,window.Promise.resolve().then(function(){e=!1,t()}))}}:function(t){var e=!1;return function(){e||(e=!0,setTimeout(function(){e=!1,t()},Nt))}};function Lt(t){return t&&"[object Function]"==={}.toString.call(t)}function Pt(t,e){if(1!==t.nodeType)return[];var n=t.ownerDocument.defaultView.getComputedStyle(t,null);return e?n[e]:n}function xt(t){return"HTML"===t.nodeName?t:t.parentNode||t.host}function jt(t){if(!t)return document.body;switch(t.nodeName){case"HTML":case"BODY":return t.ownerDocument.body;case"#document":return t.body}var e=Pt(t),n=e.overflow,i=e.overflowX,o=e.overflowY;return/(auto|scroll|overlay)/.test(n+o+i)?t:jt(xt(t))}function Ht(t){return t&&t.referenceNode?t.referenceNode:t}var Rt=Ot&&!(!window.MSInputMethodContext||!document.documentMode),Ft=Ot&&/MSIE 10/.test(navigator.userAgent);function Mt(t){return 11===t?Rt:10!==t&&Rt||Ft}function Wt(t){if(!t)return document.documentElement;for(var e=Mt(10)?document.body:null,n=t.offsetParent||null;n===e&&t.nextElementSibling;)n=(t=t.nextElementSibling).offsetParent;var i=n&&n.nodeName;return i&&"BODY"!==i&&"HTML"!==i?-1!==["TH","TD","TABLE"].indexOf(n.nodeName)&&"static"===Pt(n,"position")?Wt(n):n:t?t.ownerDocument.documentElement:document.documentElement}function Ut(t){return null!==t.parentNode?Ut(t.parentNode):t}function qt(t,e){if(!(t&&t.nodeType&&e&&e.nodeType))return document.documentElement;var n=t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_FOLLOWING,i=n?t:e,o=n?e:t,r=document.createRange();r.setStart(i,0),r.setEnd(o,0);var a,s,l=r.commonAncestorContainer;if(t!==l&&e!==l||i.contains(o))return"BODY"===(s=(a=l).nodeName)||"HTML"!==s&&Wt(a.firstElementChild)!==a?Wt(l):l;var u=Ut(t);return u.host?qt(u.host,e):qt(t,Ut(e).host)}function Bt(t,e){var n="top"===(1<arguments.length&&void 0!==e?e:"top")?"scrollTop":"scrollLeft",i=t.nodeName;if("BODY"!==i&&"HTML"!==i)return t[n];var o=t.ownerDocument.documentElement;return(t.ownerDocument.scrollingElement||o)[n]}function Kt(t,e){var n="x"===e?"Left":"Top",i="Left"==n?"Right":"Bottom";return parseFloat(t["border"+n+"Width"])+parseFloat(t["border"+i+"Width"])}function Qt(t,e,n,i){return Math.max(e["offset"+t],e["scroll"+t],n["client"+t],n["offset"+t],n["scroll"+t],Mt(10)?parseInt(n["offset"+t])+parseInt(i["margin"+("Height"===t?"Top":"Left")])+parseInt(i["margin"+("Height"===t?"Bottom":"Right")]):0)}function Vt(t){var e=t.body,n=t.documentElement,i=Mt(10)&&getComputedStyle(n);return{height:Qt("Height",e,n,i),width:Qt("Width",e,n,i)}}var Yt=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},zt=function(t,e,n){return e&&Xt(t.prototype,e),n&&Xt(t,n),t};function Xt(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function Gt(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}var $t=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])}return t};function Jt(t){return $t({},t,{right:t.left+t.width,bottom:t.top+t.height})}function Zt(t){var e,n,i={};try{Mt(10)?(i=t.getBoundingClientRect(),e=Bt(t,"top"),n=Bt(t,"left"),i.top+=e,i.left+=n,i.bottom+=e,i.right+=n):i=t.getBoundingClientRect()}catch(t){}var o,r={left:i.left,top:i.top,width:i.right-i.left,height:i.bottom-i.top},a="HTML"===t.nodeName?Vt(t.ownerDocument):{},s=a.width||t.clientWidth||r.width,l=a.height||t.clientHeight||r.height,u=t.offsetWidth-s,f=t.offsetHeight-l;return(u||f)&&(u-=Kt(o=Pt(t),"x"),f-=Kt(o,"y"),r.width-=u,r.height-=f),Jt(r)}function te(t,e,n){var i=2<arguments.length&&void 0!==n&&n,o=Mt(10),r="HTML"===e.nodeName,a=Zt(t),s=Zt(e),l=jt(t),u=Pt(e),f=parseFloat(u.borderTopWidth),d=parseFloat(u.borderLeftWidth);i&&r&&(s.top=Math.max(s.top,0),s.left=Math.max(s.left,0));var c,h,p=Jt({top:a.top-s.top-f,left:a.left-s.left-d,width:a.width,height:a.height});return p.marginTop=0,p.marginLeft=0,!o&&r&&(c=parseFloat(u.marginTop),h=parseFloat(u.marginLeft),p.top-=f-c,p.bottom-=f-c,p.left-=d-h,p.right-=d-h,p.marginTop=c,p.marginLeft=h),(o&&!i?e.contains(l):e===l&&"BODY"!==l.nodeName)&&(p=function(t,e,n){var i=2<arguments.length&&void 0!==n&&n,o=Bt(e,"top"),r=Bt(e,"left"),a=i?-1:1;return t.top+=o*a,t.bottom+=o*a,t.left+=r*a,t.right+=r*a,t}(p,e)),p}function ee(t){if(!t||!t.parentElement||Mt())return document.documentElement;for(var e=t.parentElement;e&&"none"===Pt(e,"transform");)e=e.parentElement;return e||document.documentElement}function ne(t,e,n,i,o){var r,a,s,l,u,f=4<arguments.length&&void 0!==o&&o,d={top:0,left:0},c=f?ee(t):qt(t,Ht(e));"viewport"===i?d=function(t,e){var n=1<arguments.length&&void 0!==e&&e,i=t.ownerDocument.documentElement,o=te(t,i),r=Math.max(i.clientWidth,window.innerWidth||0),a=Math.max(i.clientHeight,window.innerHeight||0),s=n?0:Bt(i),l=n?0:Bt(i,"left");return Jt({top:s-o.top+o.marginTop,left:l-o.left+o.marginLeft,width:r,height:a})}(c,f):(r=void 0,"scrollParent"===i?"BODY"===(r=jt(xt(e))).nodeName&&(r=t.ownerDocument.documentElement):r="window"===i?t.ownerDocument.documentElement:i,a=te(r,c,f),"HTML"!==r.nodeName||function t(e){var n=e.nodeName;if("BODY"===n||"HTML"===n)return!1;if("fixed"===Pt(e,"position"))return!0;var i=xt(e);return!!i&&t(i)}(c)?d=a:(l=(s=Vt(t.ownerDocument)).height,u=s.width,d.top+=a.top-a.marginTop,d.bottom=l+a.top,d.left+=a.left-a.marginLeft,d.right=u+a.left));var h="number"==typeof(n=n||0);return d.left+=h?n:n.left||0,d.top+=h?n:n.top||0,d.right-=h?n:n.right||0,d.bottom-=h?n:n.bottom||0,d}function ie(t,e,i,n,o,r){var a=5<arguments.length&&void 0!==r?r:0;if(-1===t.indexOf("auto"))return t;var s=ne(i,n,a,o),l={top:{width:s.width,height:e.top-s.top},right:{width:s.right-e.right,height:s.height},bottom:{width:s.width,height:s.bottom-e.bottom},left:{width:e.left-s.left,height:s.height}},u=Object.keys(l).map(function(t){return $t({key:t},l[t],{area:(e=l[t]).width*e.height});var e}).sort(function(t,e){return e.area-t.area}),f=u.filter(function(t){var e=t.width,n=t.height;return e>=i.clientWidth&&n>=i.clientHeight}),d=0<f.length?f[0].key:u[0].key,c=t.split("-")[1];return d+(c?"-"+c:"")}function oe(t,e,n,i){var o=3<arguments.length&&void 0!==i?i:null;return te(n,o?ee(e):qt(e,Ht(n)),o)}function re(t){var e=t.ownerDocument.defaultView.getComputedStyle(t),n=parseFloat(e.marginTop||0)+parseFloat(e.marginBottom||0),i=parseFloat(e.marginLeft||0)+parseFloat(e.marginRight||0);return{width:t.offsetWidth+i,height:t.offsetHeight+n}}function ae(t){var e={left:"right",right:"left",bottom:"top",top:"bottom"};return t.replace(/left|right|bottom|top/g,function(t){return e[t]})}function se(t,e,n){n=n.split("-")[0];var i=re(t),o={width:i.width,height:i.height},r=-1!==["right","left"].indexOf(n),a=r?"top":"left",s=r?"left":"top",l=r?"height":"width",u=r?"width":"height";return o[a]=e[a]+e[l]/2-i[l]/2,o[s]=n===s?e[s]-i[u]:e[ae(s)],o}function le(t,e){return Array.prototype.find?t.find(e):t.filter(e)[0]}function ue(t,n,e){return(void 0===e?t:t.slice(0,function(t,e,n){if(Array.prototype.findIndex)return t.findIndex(function(t){return t[e]===n});var i=le(t,function(t){return t[e]===n});return t.indexOf(i)}(t,"name",e))).forEach(function(t){t.function&&console.warn("`modifier.function` is deprecated, use `modifier.fn`!");var e=t.function||t.fn;t.enabled&&Lt(e)&&(n.offsets.popper=Jt(n.offsets.popper),n.offsets.reference=Jt(n.offsets.reference),n=e(n,t))}),n}function fe(t,n){return t.some(function(t){var e=t.name;return t.enabled&&e===n})}function de(t){for(var e=[!1,"ms","Webkit","Moz","O"],n=t.charAt(0).toUpperCase()+t.slice(1),i=0;i<e.length;i++){var o=e[i],r=o?""+o+n:t;if("undefined"!=typeof document.body.style[r])return r}return null}function ce(t){var e=t.ownerDocument;return e?e.defaultView:window}function he(t,e,n,i){n.updateBound=i,ce(t).addEventListener("resize",n.updateBound,{passive:!0});var o=jt(t);return function t(e,n,i,o){var r="BODY"===e.nodeName,a=r?e.ownerDocument.defaultView:e;a.addEventListener(n,i,{passive:!0}),r||t(jt(a.parentNode),n,i,o),o.push(a)}(o,"scroll",n.updateBound,n.scrollParents),n.scrollElement=o,n.eventsEnabled=!0,n}function pe(){var t,e;this.state.eventsEnabled&&(cancelAnimationFrame(this.scheduleUpdate),this.state=(t=this.reference,e=this.state,ce(t).removeEventListener("resize",e.updateBound),e.scrollParents.forEach(function(t){t.removeEventListener("scroll",e.updateBound)}),e.updateBound=null,e.scrollParents=[],e.scrollElement=null,e.eventsEnabled=!1,e))}function me(t){return""!==t&&!isNaN(parseFloat(t))&&isFinite(t)}function ge(n,i){Object.keys(i).forEach(function(t){var e="";-1!==["width","height","top","right","bottom","left"].indexOf(t)&&me(i[t])&&(e="px"),n.style[t]=i[t]+e})}function _e(t,e){function n(t){return t}var i=t.offsets,o=i.popper,r=i.reference,a=Math.round,s=Math.floor,l=a(r.width),u=a(o.width),f=-1!==["left","right"].indexOf(t.placement),d=-1!==t.placement.indexOf("-"),c=e?f||d||l%2==u%2?a:s:n,h=e?a:n;return{left:c(l%2==1&&u%2==1&&!d&&e?o.left-1:o.left),top:h(o.top),bottom:h(o.bottom),right:c(o.right)}}var ve=Ot&&/Firefox/i.test(navigator.userAgent);function ye(t,e,n){var i,o,r=le(t,function(t){return t.name===e}),a=!!r&&t.some(function(t){return t.name===n&&t.enabled&&t.order<r.order});return a||(i="`"+e+"`",o="`"+n+"`",console.warn(o+" modifier is required by "+i+" modifier in order to work, be sure to include it before "+i+"!")),a}var Ee=["auto-start","auto","auto-end","top-start","top","top-end","right-start","right","right-end","bottom-end","bottom","bottom-start","left-end","left","left-start"],be=Ee.slice(3);function we(t,e){var n=1<arguments.length&&void 0!==e&&e,i=be.indexOf(t),o=be.slice(i+1).concat(be.slice(0,i));return n?o.reverse():o}var Te="flip",Ce="clockwise",Se="counterclockwise";function De(t,o,r,e){var a=[0,0],s=-1!==["right","left"].indexOf(e),n=t.split(/(\+|\-)/).map(function(t){return t.trim()}),i=n.indexOf(le(n,function(t){return-1!==t.search(/,|\s/)}));n[i]&&-1===n[i].indexOf(",")&&console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.");var l=/\s*,\s*|\s+/;return(-1!==i?[n.slice(0,i).concat([n[i].split(l)[0]]),[n[i].split(l)[1]].concat(n.slice(i+1))]:[n]).map(function(t,e){var n=(1===e?!s:s)?"height":"width",i=!1;return t.reduce(function(t,e){return""===t[t.length-1]&&-1!==["+","-"].indexOf(e)?(t[t.length-1]=e,i=!0,t):i?(t[t.length-1]+=e,i=!1,t):t.concat(e)},[]).map(function(t){return function(t,e,n,i){var o=t.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),r=+o[1],a=o[2];if(!r)return t;if(0!==a.indexOf("%"))return"vh"!==a&&"vw"!==a?r:("vh"===a?Math.max(document.documentElement.clientHeight,window.innerHeight||0):Math.max(document.documentElement.clientWidth,window.innerWidth||0))/100*r;var s=void 0;switch(a){case"%p":s=n;break;case"%":case"%r":default:s=i}return Jt(s)[e]/100*r}(t,n,o,r)})}).forEach(function(n,i){n.forEach(function(t,e){me(t)&&(a[i]+=t*("-"===n[e-1]?-1:1))})}),a}var Ie={placement:"bottom",positionFixed:!1,eventsEnabled:!0,removeOnDestroy:!1,onCreate:function(){},onUpdate:function(){},modifiers:{shift:{order:100,enabled:!0,fn:function(t){var e,n,i,o,r,a,s,l=t.placement,u=l.split("-")[0],f=l.split("-")[1];return f&&(n=(e=t.offsets).reference,i=e.popper,a=(o=-1!==["bottom","top"].indexOf(u))?"width":"height",s={start:Gt({},r=o?"left":"top",n[r]),end:Gt({},r,n[r]+n[a]-i[a])},t.offsets.popper=$t({},i,s[f])),t}},offset:{order:200,enabled:!0,fn:function(t,e){var n=e.offset,i=t.placement,o=t.offsets,r=o.popper,a=o.reference,s=i.split("-")[0],l=void 0,l=me(+n)?[+n,0]:De(n,r,a,s);return"left"===s?(r.top+=l[0],r.left-=l[1]):"right"===s?(r.top+=l[0],r.left+=l[1]):"top"===s?(r.left+=l[0],r.top-=l[1]):"bottom"===s&&(r.left+=l[0],r.top+=l[1]),t.popper=r,t},offset:0},preventOverflow:{order:300,enabled:!0,fn:function(t,i){var e=i.boundariesElement||Wt(t.instance.popper);t.instance.reference===e&&(e=Wt(e));var n=de("transform"),o=t.instance.popper.style,r=o.top,a=o.left,s=o[n];o.top="",o.left="",o[n]="";var l=ne(t.instance.popper,t.instance.reference,i.padding,e,t.positionFixed);o.top=r,o.left=a,o[n]=s,i.boundaries=l;var u=i.priority,f=t.offsets.popper,d={primary:function(t){var e=f[t];return f[t]<l[t]&&!i.escapeWithReference&&(e=Math.max(f[t],l[t])),Gt({},t,e)},secondary:function(t){var e="right"===t?"left":"top",n=f[e];return f[t]>l[t]&&!i.escapeWithReference&&(n=Math.min(f[e],l[t]-("right"===t?f.width:f.height))),Gt({},e,n)}};return u.forEach(function(t){var e=-1!==["left","top"].indexOf(t)?"primary":"secondary";f=$t({},f,d[e](t))}),t.offsets.popper=f,t},priority:["left","right","top","bottom"],padding:5,boundariesElement:"scrollParent"},keepTogether:{order:400,enabled:!0,fn:function(t){var e=t.offsets,n=e.popper,i=e.reference,o=t.placement.split("-")[0],r=Math.floor,a=-1!==["top","bottom"].indexOf(o),s=a?"right":"bottom",l=a?"left":"top",u=a?"width":"height";return n[s]<r(i[l])&&(t.offsets.popper[l]=r(i[l])-n[u]),n[l]>r(i[s])&&(t.offsets.popper[l]=r(i[s])),t}},arrow:{order:500,enabled:!0,fn:function(t,e){var n;if(!ye(t.instance.modifiers,"arrow","keepTogether"))return t;var i=e.element;if("string"==typeof i){if(!(i=t.instance.popper.querySelector(i)))return t}else if(!t.instance.popper.contains(i))return console.warn("WARNING: `arrow.element` must be child of its popper element!"),t;var o=t.placement.split("-")[0],r=t.offsets,a=r.popper,s=r.reference,l=-1!==["left","right"].indexOf(o),u=l?"height":"width",f=l?"Top":"Left",d=f.toLowerCase(),c=l?"left":"top",h=l?"bottom":"right",p=re(i)[u];s[h]-p<a[d]&&(t.offsets.popper[d]-=a[d]-(s[h]-p)),s[d]+p>a[h]&&(t.offsets.popper[d]+=s[d]+p-a[h]),t.offsets.popper=Jt(t.offsets.popper);var m=s[d]+s[u]/2-p/2,g=Pt(t.instance.popper),_=parseFloat(g["margin"+f]),v=parseFloat(g["border"+f+"Width"]),y=m-t.offsets.popper[d]-_-v,y=Math.max(Math.min(a[u]-p,y),0);return t.arrowElement=i,t.offsets.arrow=(Gt(n={},d,Math.round(y)),Gt(n,c,""),n),t},element:"[x-arrow]"},flip:{order:600,enabled:!0,fn:function(g,_){if(fe(g.instance.modifiers,"inner"))return g;if(g.flipped&&g.placement===g.originalPlacement)return g;var v=ne(g.instance.popper,g.instance.reference,_.padding,_.boundariesElement,g.positionFixed),y=g.placement.split("-")[0],E=ae(y),b=g.placement.split("-")[1]||"",w=[];switch(_.behavior){case Te:w=[y,E];break;case Ce:w=we(y);break;case Se:w=we(y,!0);break;default:w=_.behavior}return w.forEach(function(t,e){if(y!==t||w.length===e+1)return g;y=g.placement.split("-")[0],E=ae(y);var n,i=g.offsets.popper,o=g.offsets.reference,r=Math.floor,a="left"===y&&r(i.right)>r(o.left)||"right"===y&&r(i.left)<r(o.right)||"top"===y&&r(i.bottom)>r(o.top)||"bottom"===y&&r(i.top)<r(o.bottom),s=r(i.left)<r(v.left),l=r(i.right)>r(v.right),u=r(i.top)<r(v.top),f=r(i.bottom)>r(v.bottom),d="left"===y&&s||"right"===y&&l||"top"===y&&u||"bottom"===y&&f,c=-1!==["top","bottom"].indexOf(y),h=!!_.flipVariations&&(c&&"start"===b&&s||c&&"end"===b&&l||!c&&"start"===b&&u||!c&&"end"===b&&f),p=!!_.flipVariationsByContent&&(c&&"start"===b&&l||c&&"end"===b&&s||!c&&"start"===b&&f||!c&&"end"===b&&u),m=h||p;(a||d||m)&&(g.flipped=!0,(a||d)&&(y=w[e+1]),m&&(b="end"===(n=b)?"start":"start"===n?"end":n),g.placement=y+(b?"-"+b:""),g.offsets.popper=$t({},g.offsets.popper,se(g.instance.popper,g.offsets.reference,g.placement)),g=ue(g.instance.modifiers,g,"flip"))}),g},behavior:"flip",padding:5,boundariesElement:"viewport",flipVariations:!1,flipVariationsByContent:!1},inner:{order:700,enabled:!1,fn:function(t){var e=t.placement,n=e.split("-")[0],i=t.offsets,o=i.popper,r=i.reference,a=-1!==["left","right"].indexOf(n),s=-1===["top","left"].indexOf(n);return o[a?"left":"top"]=r[n]-(s?o[a?"width":"height"]:0),t.placement=ae(e),t.offsets.popper=Jt(o),t}},hide:{order:800,enabled:!0,fn:function(t){if(!ye(t.instance.modifiers,"hide","preventOverflow"))return t;var e=t.offsets.reference,n=le(t.instance.modifiers,function(t){return"preventOverflow"===t.name}).boundaries;if(e.bottom<n.top||e.left>n.right||e.top>n.bottom||e.right<n.left){if(!0===t.hide)return t;t.hide=!0,t.attributes["x-out-of-boundaries"]=""}else{if(!1===t.hide)return t;t.hide=!1,t.attributes["x-out-of-boundaries"]=!1}return t}},computeStyle:{order:850,enabled:!0,fn:function(t,e){var n=e.x,i=e.y,o=t.offsets.popper,r=le(t.instance.modifiers,function(t){return"applyStyle"===t.name}).gpuAcceleration;void 0!==r&&console.warn("WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!");var a,s,l=void 0!==r?r:e.gpuAcceleration,u=Wt(t.instance.popper),f=Zt(u),d={position:o.position},c=_e(t,window.devicePixelRatio<2||!ve),h="bottom"===n?"top":"bottom",p="right"===i?"left":"right",m=de("transform"),g=void 0,_=void 0,_="bottom"==h?"HTML"===u.nodeName?-u.clientHeight+c.bottom:-f.height+c.bottom:c.top,g="right"==p?"HTML"===u.nodeName?-u.clientWidth+c.right:-f.width+c.right:c.left;l&&m?(d[m]="translate3d("+g+"px, "+_+"px, 0)",d[h]=0,d[p]=0,d.willChange="transform"):(a="bottom"==h?-1:1,s="right"==p?-1:1,d[h]=_*a,d[p]=g*s,d.willChange=h+", "+p);var v={"x-placement":t.placement};return t.attributes=$t({},v,t.attributes),t.styles=$t({},d,t.styles),t.arrowStyles=$t({},t.offsets.arrow,t.arrowStyles),t},gpuAcceleration:!0,x:"bottom",y:"right"},applyStyle:{order:900,enabled:!0,fn:function(t){var e,n;return ge(t.instance.popper,t.styles),e=t.instance.popper,n=t.attributes,Object.keys(n).forEach(function(t){!1!==n[t]?e.setAttribute(t,n[t]):e.removeAttribute(t)}),t.arrowElement&&Object.keys(t.arrowStyles).length&&ge(t.arrowElement,t.arrowStyles),t},onLoad:function(t,e,n,i,o){var r=oe(o,e,t,n.positionFixed),a=ie(n.placement,r,e,t,n.modifiers.flip.boundariesElement,n.modifiers.flip.padding);return e.setAttribute("x-placement",a),ge(e,{position:n.positionFixed?"fixed":"absolute"}),n},gpuAcceleration:void 0}}},Ae=(zt(Oe,[{key:"update",value:function(){return function(){var t;this.state.isDestroyed||((t={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}}).offsets.reference=oe(this.state,this.popper,this.reference,this.options.positionFixed),t.placement=ie(this.options.placement,t.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),t.originalPlacement=t.placement,t.positionFixed=this.options.positionFixed,t.offsets.popper=se(this.popper,t.offsets.reference,t.placement),t.offsets.popper.position=this.options.positionFixed?"fixed":"absolute",t=ue(this.modifiers,t),this.state.isCreated?this.options.onUpdate(t):(this.state.isCreated=!0,this.options.onCreate(t)))}.call(this)}},{key:"destroy",value:function(){return function(){return this.state.isDestroyed=!0,fe(this.modifiers,"applyStyle")&&(this.popper.removeAttribute("x-placement"),this.popper.style.position="",this.popper.style.top="",this.popper.style.left="",this.popper.style.right="",this.popper.style.bottom="",this.popper.style.willChange="",this.popper.style[de("transform")]=""),this.disableEventListeners(),this.options.removeOnDestroy&&this.popper.parentNode.removeChild(this.popper),this}.call(this)}},{key:"enableEventListeners",value:function(){return function(){this.state.eventsEnabled||(this.state=he(this.reference,this.options,this.state,this.scheduleUpdate))}.call(this)}},{key:"disableEventListeners",value:function(){return pe.call(this)}}]),Oe);function Oe(t,e){var n=this,i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{};Yt(this,Oe),this.scheduleUpdate=function(){return requestAnimationFrame(n.update)},this.update=kt(this.update.bind(this)),this.options=$t({},Oe.Defaults,i),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=t&&t.jquery?t[0]:t,this.popper=e&&e.jquery?e[0]:e,this.options.modifiers={},Object.keys($t({},Oe.Defaults.modifiers,i.modifiers)).forEach(function(t){n.options.modifiers[t]=$t({},Oe.Defaults.modifiers[t]||{},i.modifiers?i.modifiers[t]:{})}),this.modifiers=Object.keys(this.options.modifiers).map(function(t){return $t({name:t},n.options.modifiers[t])}).sort(function(t,e){return t.order-e.order}),this.modifiers.forEach(function(t){t.enabled&&Lt(t.onLoad)&&t.onLoad(n.reference,n.popper,n.options,t,n.state)}),this.update();var o=this.options.eventsEnabled;o&&this.enableEventListeners(),this.state.eventsEnabled=o}Ae.Utils=("undefined"!=typeof window?window:global).PopperUtils,Ae.placements=Ee,Ae.Defaults=Ie;var Ne="dropdown",ke="bs.dropdown",Le="."+ke,Pe=".data-api",xe=p.default.fn[Ne],je=new RegExp("38|40|27"),He={HIDE:"hide"+Le,HIDDEN:"hidden"+Le,SHOW:"show"+Le,SHOWN:"shown"+Le,CLICK:"click"+Le,CLICK_DATA_API:"click"+Le+Pe,KEYDOWN_DATA_API:"keydown"+Le+Pe,KEYUP_DATA_API:"keyup"+Le+Pe},Re="disabled",Fe="show",Me="dropup",We="dropright",Ue="dropleft",qe="dropdown-menu-right",Be="position-static",Ke='[data-toggle="dropdown"]',Qe=".dropdown form",Ve=".dropdown-menu",Ye=".navbar-nav",ze=".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",Xe="top-start",Ge="top-end",$e="bottom-start",Je="bottom-end",Ze="right-start",tn="left-start",en={offset:0,flip:!0,boundary:"scrollParent",reference:"toggle",display:"dynamic",popperConfig:null},nn={offset:"(number|string|function)",flip:"boolean",boundary:"(string|element)",reference:"(string|element)",display:"string",popperConfig:"(null|object)"},on=function(){function u(t,e){this._element=t,this._popper=null,this._config=this._getConfig(e),this._menu=this._getMenuElement(),this._inNavbar=this._detectNavbar(),this._addEventListeners()}var t=u.prototype;return t.toggle=function(){var t;this._element.disabled||p.default(this._element).hasClass(Re)||(t=p.default(this._menu).hasClass(Fe),u._clearMenus(),t||this.show(!0))},t.show=function(t){if(void 0===t&&(t=!1),!(this._element.disabled||p.default(this._element).hasClass(Re)||p.default(this._menu).hasClass(Fe))){var e={relatedTarget:this._element},n=p.default.Event(He.SHOW,e),i=u._getParentFromElement(this._element);if(p.default(i).trigger(n),!n.isDefaultPrevented()){if(!this._inNavbar&&t){if("undefined"==typeof Ae)throw new TypeError("Bootstrap's dropdowns require Popper.js (https://popper.js.org/)");var o=this._element;"parent"===this._config.reference?o=i:m.isElement(this._config.reference)&&(o=this._config.reference,"undefined"!=typeof this._config.reference.jquery&&(o=this._config.reference[0])),"scrollParent"!==this._config.boundary&&p.default(i).addClass(Be),this._popper=new Ae(o,this._menu,this._getPopperConfig())}"ontouchstart"in document.documentElement&&0===p.default(i).closest(Ye).length&&p.default(document.body).children().on("mouseover",null,p.default.noop),this._element.focus(),this._element.setAttribute("aria-expanded",!0),p.default(this._menu).toggleClass(Fe),p.default(i).toggleClass(Fe).trigger(p.default.Event(He.SHOWN,e))}}},t.hide=function(){var t,e,n;this._element.disabled||p.default(this._element).hasClass(Re)||!p.default(this._menu).hasClass(Fe)||(t={relatedTarget:this._element},e=p.default.Event(He.HIDE,t),n=u._getParentFromElement(this._element),p.default(n).trigger(e),e.isDefaultPrevented()||(this._popper&&this._popper.destroy(),p.default(this._menu).toggleClass(Fe),p.default(n).toggleClass(Fe).trigger(p.default.Event(He.HIDDEN,t))))},t.dispose=function(){p.default.removeData(this._element,ke),p.default(this._element).off(Le),this._element=null,(this._menu=null)!==this._popper&&(this._popper.destroy(),this._popper=null)},t.update=function(){this._inNavbar=this._detectNavbar(),null!==this._popper&&this._popper.scheduleUpdate()},t._addEventListeners=function(){var e=this;p.default(this._element).on(He.CLICK,function(t){t.preventDefault(),t.stopPropagation(),e.toggle()})},t._getConfig=function(t){return t=l(l(l({},this.constructor.Default),p.default(this._element).data()),t),m.typeCheckConfig(Ne,t,this.constructor.DefaultType),t},t._getMenuElement=function(){var t;return this._menu||(t=u._getParentFromElement(this._element))&&(this._menu=t.querySelector(Ve)),this._menu},t._getPlacement=function(){var t=p.default(this._element.parentNode),e=$e;return t.hasClass(Me)?(e=Xe,p.default(this._menu).hasClass(qe)&&(e=Ge)):t.hasClass(We)?e=Ze:t.hasClass(Ue)?e=tn:p.default(this._menu).hasClass(qe)&&(e=Je),e},t._detectNavbar=function(){return 0<p.default(this._element).closest(".navbar").length},t._getOffset=function(){var e=this,t={};return"function"==typeof this._config.offset?t.fn=function(t){return t.offsets=l(l({},t.offsets),e._config.offset(t.offsets,e._element)||{}),t}:t.offset=this._config.offset,t},t._getPopperConfig=function(){var t={placement:this._getPlacement(),modifiers:{offset:this._getOffset(),flip:{enabled:this._config.flip},preventOverflow:{boundariesElement:this._config.boundary}}};return"static"===this._config.display&&(t.modifiers.applyStyle={enabled:!1}),l(l({},t),this._config.popperConfig)},u._jQueryInterface=function(e){return this.each(function(){var t=p.default(this).data(ke);if(t||(t=new u(this,"object"==typeof e?e:null),p.default(this).data(ke,t)),"string"==typeof e){if("undefined"==typeof t[e])throw new TypeError('No method named "'+e+'"');t[e]()}})},u._clearMenus=function(t){if(!t||3!==t.which&&("keyup"!==t.type||9===t.which))for(var e=[].slice.call(document.querySelectorAll(Ke)),n=0,i=e.length;n<i;n++){var o,r,a=u._getParentFromElement(e[n]),s=p.default(e[n]).data(ke),l={relatedTarget:e[n]};t&&"click"===t.type&&(l.clickEvent=t),s&&(o=s._menu,p.default(a).hasClass(Fe)&&(t&&("click"===t.type&&/input|textarea/i.test(t.target.tagName)||"keyup"===t.type&&9===t.which)&&p.default.contains(a,t.target)||(r=p.default.Event(He.HIDE,l),p.default(a).trigger(r),r.isDefaultPrevented()||("ontouchstart"in document.documentElement&&p.default(document.body).children().off("mouseover",null,p.default.noop),e[n].setAttribute("aria-expanded","false"),s._popper&&s._popper.destroy(),p.default(o).removeClass(Fe),p.default(a).removeClass(Fe).trigger(p.default.Event(He.HIDDEN,l))))))}},u._getParentFromElement=function(t){var e,n=m.getSelectorFromElement(t);return n&&(e=document.querySelector(n)),e||t.parentNode},u._dataApiKeydownHandler=function(t){if((/input|textarea/i.test(t.target.tagName)?!(32===t.which||27!==t.which&&(40!==t.which&&38!==t.which||p.default(t.target).closest(Ve).length)):je.test(t.which))&&(t.preventDefault(),t.stopPropagation(),!this.disabled&&!p.default(this).hasClass(Re))){var e,n=u._getParentFromElement(this),i=p.default(n).hasClass(Fe);if(i||27!==t.which){if(!i||i&&(27===t.which||32===t.which))return 27===t.which&&(e=n.querySelector(Ke),p.default(e).trigger("focus")),void p.default(this).trigger("click");var o,r=[].slice.call(n.querySelectorAll(ze)).filter(function(t){return p.default(t).is(":visible")});0!==r.length&&(o=r.indexOf(t.target),38===t.which&&0<o&&o--,40===t.which&&o<r.length-1&&o++,o<0&&(o=0),r[o].focus())}}},a(u,null,[{key:"VERSION",get:function(){return"4.4.1"}},{key:"Default",get:function(){return en}},{key:"DefaultType",get:function(){return nn}}]),u}();p.default(document).on(He.KEYDOWN_DATA_API,Ke,on._dataApiKeydownHandler).on(He.KEYDOWN_DATA_API,Ve,on._dataApiKeydownHandler).on(He.CLICK_DATA_API+" "+He.KEYUP_DATA_API,on._clearMenus).on(He.CLICK_DATA_API,Ke,function(t){t.preventDefault(),t.stopPropagation(),on._jQueryInterface.call(p.default(this),"toggle")}).on(He.CLICK_DATA_API,Qe,function(t){t.stopPropagation()}),p.default.fn[Ne]=on._jQueryInterface,p.default.fn[Ne].Constructor=on,p.default.fn[Ne].noConflict=function(){return p.default.fn[Ne]=xe,on._jQueryInterface},"function"!=typeof NodeList.prototype.forEach&&(NodeList.prototype.forEach=Array.prototype.forEach);var rn="booklyModal",an="bs.modal",sn="."+an,ln=p.default.fn[rn],un={backdrop:!0,keyboard:!0,focus:!0,show:!0},fn={backdrop:"(boolean|string)",keyboard:"boolean",focus:"boolean",show:"boolean"},dn={HIDE:"hide"+sn,HIDE_PREVENTED:"hidePrevented"+sn,HIDDEN:"hidden"+sn,SHOW:"show"+sn,SHOWN:"shown"+sn,FOCUSIN:"focusin"+sn,RESIZE:"resize"+sn,CLICK_DISMISS:"click.dismiss"+sn,KEYDOWN_DISMISS:"keydown.dismiss"+sn,MOUSEUP_DISMISS:"mouseup.dismiss"+sn,MOUSEDOWN_DISMISS:"mousedown.dismiss"+sn,CLICK_DATA_API:"click"+sn+".data-api"},cn="modal-dialog-scrollable",hn="modal-scrollbar-measure",pn="bookly-modal-backdrop",mn="bookly-modal-open",gn="bookly-fade",_n="show",vn="modal-static",yn="modal-faded",En=".modal-dialog",bn=".modal-body",wn='[data-toggle="bookly-modal"]',Tn='[data-dismiss="bookly-modal"]',Cn=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",Sn=".sticky-top",Dn=".bookly-modal",In=".bookly-modal.show",An=function(){function o(t,e){this._config=this._getConfig(e),this._element=t,this._dialog=t.querySelector(En),this._backdrop=null,this._isShown=!1,this._isBodyOverflowing=!1,this._ignoreBackdropClick=!1,this._isTransitioning=!1,this._scrollbarWidth=0}var t=o.prototype;return t.toggle=function(t){return this._isShown?this.hide():this.show(t)},t.show=function(t){var e,n=this;this._isShown||this._isTransitioning||(p.default(this._element).hasClass(gn)&&(this._isTransitioning=!0),e=p.default.Event(dn.SHOW,{relatedTarget:t}),p.default(this._element).trigger(e),this._isShown||e.isDefaultPrevented()||(this._isShown=!0,this._checkScrollbar(),this._setScrollbar(),this._adjustDialog(),this._setEscapeEvent(),this._setResizeEvent(),document.querySelectorAll(Dn).forEach(function(t){t.classList.add(yn)}),this._element.classList.remove(yn),p.default(this._element).on(dn.CLICK_DISMISS,Tn,function(t){return n.hide(t)}),p.default(this._dialog).on(dn.MOUSEDOWN_DISMISS,function(){p.default(n._element).one(dn.MOUSEUP_DISMISS,function(t){p.default(t.target).is(n._element)&&(n._ignoreBackdropClick=!0)})}),this._showBackdrop(function(){return n._showElement(t)})))},t.hide=function(t){var e,n,i,o=this;t&&t.preventDefault(),this._isShown&&!this._isTransitioning&&(e=p.default.Event(dn.HIDE),p.default(this._element).trigger(e),this._isShown&&!e.isDefaultPrevented()&&(this._isShown=!1,n=p.default(this._element).hasClass(gn),document.querySelectorAll(Dn).forEach(function(t){t.classList.remove(yn)}),n&&(this._isTransitioning=!0),this._setEscapeEvent(),this._setResizeEvent(),p.default(document).off(dn.FOCUSIN),p.default(this._element).removeClass(_n),p.default(this._element).off(dn.CLICK_DISMISS),p.default(this._dialog).off(dn.MOUSEDOWN_DISMISS),n?(i=m.getTransitionDurationFromElement(this._element),p.default(this._element).one(m.TRANSITION_END,function(t){return o._hideModal(t)}).booklyEmulateTransitionEnd(i)):this._hideModal()))},t.dispose=function(){[window,this._element,this._dialog].forEach(function(t){return p.default(t).off(sn)}),p.default(document).off(dn.FOCUSIN),p.default.removeData(this._element,an),this._config=null,this._element=null,this._dialog=null,this._backdrop=null,this._isShown=null,this._isBodyOverflowing=null,this._ignoreBackdropClick=null,this._isTransitioning=null,this._scrollbarWidth=null},t.handleUpdate=function(){this._adjustDialog()},t._getConfig=function(t){return t=l(l({},un),t),m.typeCheckConfig(rn,t,fn),t},t._triggerBackdropTransition=function(){var t=this;if("static"===this._config.backdrop){var e=p.default.Event(dn.HIDE_PREVENTED);if(p.default(this._element).trigger(e),e.defaultPrevented)return;this._element.classList.add(vn);var n=m.getTransitionDurationFromElement(this._element);p.default(this._element).one(m.TRANSITION_END,function(){t._element.classList.remove(vn)}).booklyEmulateTransitionEnd(n),this._element.focus()}else this.hide()},t._showElement=function(t){var e=this,n=p.default(this._element).hasClass(gn),i=this._dialog?this._dialog.querySelector(bn):null;this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.appendChild(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),p.default(this._dialog).hasClass(cn)&&i?i.scrollTop=0:this._element.scrollTop=0,n&&m.reflow(this._element),p.default(this._element).addClass(_n),this._config.focus&&this._enforceFocus();function o(){e._config.focus&&e._element.focus(),e._isTransitioning=!1,p.default(e._element).trigger(a)}var r,a=p.default.Event(dn.SHOWN,{relatedTarget:t});n?(r=m.getTransitionDurationFromElement(this._dialog),p.default(this._dialog).one(m.TRANSITION_END,o).booklyEmulateTransitionEnd(r)):o()},t._enforceFocus=function(){var e=this;p.default(document).off(dn.FOCUSIN).on(dn.FOCUSIN,function(t){document!==t.target&&e._element!==t.target&&0===p.default(e._element).has(t.target).length&&e._element.focus()})},t._setEscapeEvent=function(){var e=this;this._isShown&&this._config.keyboard?p.default(this._element).on(dn.KEYDOWN_DISMISS,function(t){27===t.which&&e._triggerBackdropTransition()}):this._isShown||p.default(this._element).off(dn.KEYDOWN_DISMISS)},t._setResizeEvent=function(){var e=this;this._isShown?p.default(window).on(dn.RESIZE,function(t){return e.handleUpdate(t)}):p.default(window).off(dn.RESIZE)},t._hideModal=function(){var t=this;this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._isTransitioning=!1,this._showBackdrop(function(){0===document.querySelectorAll(In).length&&p.default(document.body).removeClass(mn),t._resetAdjustments(),t._resetScrollbar(),p.default(t._element).trigger(dn.HIDDEN)})},t._removeBackdrop=function(){this._backdrop&&(p.default(this._backdrop).remove(),this._backdrop=null)},t._showBackdrop=function(t){var e,n,i=this,o=p.default(this._element).hasClass(gn)?gn:"";if(this._isShown&&this._config.backdrop){if(this._backdrop=document.createElement("div"),this._backdrop.className=pn,o&&this._backdrop.classList.add(o),p.default(this._backdrop).appendTo(document.body),p.default(this._element).on(dn.CLICK_DISMISS,function(t){i._ignoreBackdropClick?i._ignoreBackdropClick=!1:t.target===t.currentTarget&&i._triggerBackdropTransition()}),o&&m.reflow(this._backdrop),p.default(this._backdrop).addClass(_n),!t)return;if(!o)return void t();var r=m.getTransitionDurationFromElement(this._backdrop);p.default(this._backdrop).one(m.TRANSITION_END,t).booklyEmulateTransitionEnd(r)}else{!this._isShown&&this._backdrop?(p.default(this._backdrop).removeClass(_n),e=function(){i._removeBackdrop(),t&&t()},p.default(this._element).hasClass(gn)?(n=m.getTransitionDurationFromElement(this._backdrop),p.default(this._backdrop).one(m.TRANSITION_END,e).booklyEmulateTransitionEnd(n)):e()):t&&t()}},t._adjustDialog=function(){var t=this._element.scrollHeight>document.documentElement.clientHeight;!this._isBodyOverflowing&&t&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!t&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},t._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},t._checkScrollbar=function(){var t=document.body.getBoundingClientRect();this._isBodyOverflowing=t.left+t.right<window.innerWidth,this._scrollbarWidth=this._getScrollbarWidth()},t._setScrollbar=function(){var t,e,n,i,o=this;this._isBodyOverflowing&&(t=[].slice.call(document.querySelectorAll(Cn)),e=[].slice.call(document.querySelectorAll(Sn)),p.default(t).each(function(t,e){var n=e.style.paddingRight,i=p.default(e).css("padding-right");p.default(e).data("padding-right",n).css("padding-right",parseFloat(i)+o._scrollbarWidth+"px")}),p.default(e).each(function(t,e){var n=e.style.marginRight,i=p.default(e).css("margin-right");p.default(e).data("margin-right",n).css("margin-right",parseFloat(i)-o._scrollbarWidth+"px")}),n=document.body.style.paddingRight,i=p.default(document.body).css("padding-right"),p.default(document.body).data("padding-right",n).css("padding-right",parseFloat(i)+this._scrollbarWidth+"px")),p.default(document.body).addClass(mn)},t._resetScrollbar=function(){var t=[].slice.call(document.querySelectorAll(Cn));p.default(t).each(function(t,e){var n=p.default(e).data("padding-right");p.default(e).removeData("padding-right"),e.style.paddingRight=n||""});var e=[].slice.call(document.querySelectorAll(""+Sn));p.default(e).each(function(t,e){var n=p.default(e).data("margin-right");"undefined"!=typeof n&&p.default(e).css("margin-right",n).removeData("margin-right")});var n=p.default(document.body).data("padding-right");p.default(document.body).removeData("padding-right"),document.body.style.paddingRight=n||""},t._getScrollbarWidth=function(){var t=document.createElement("div");t.className=hn,document.body.appendChild(t);var e=t.getBoundingClientRect().width-t.clientWidth;return document.body.removeChild(t),e},o._jQueryInterface=function(n,i){return this.each(function(){var t=p.default(this).data(an),e=l(l(l({},un),p.default(this).data()),"object"==typeof n&&n?n:{});if(t||(t=new o(this,e),p.default(this).data(an,t)),"string"==typeof n){if("undefined"==typeof t[n])throw new TypeError('No method named "'+n+'"');t[n](i)}else e.show&&t.show(i)})},a(o,null,[{key:"VERSION",get:function(){return"4.4.1"}},{key:"Default",get:function(){return un}}]),o}();p.default(document).on(dn.CLICK_DATA_API,wn,function(t){var e,n=this,i=m.getSelectorFromElement(this);i&&(e=document.querySelector(i));var o=p.default(e).data(an)?"toggle":l(l({},p.default(e).data()),p.default(this).data());"A"!==this.tagName&&"AREA"!==this.tagName||t.preventDefault();var r=p.default(e).one(dn.SHOW,function(t){t.isDefaultPrevented()||r.one(dn.HIDDEN,function(){p.default(n).is(":visible")&&n.focus()})});An._jQueryInterface.call(p.default(e),o,this)}),p.default.fn[rn]=An._jQueryInterface,p.default.fn[rn].Constructor=An,p.default.fn[rn].noConflict=function(){return p.default.fn[rn]=ln,An._jQueryInterface};var On=["background","cite","href","itemtype","longdesc","poster","src","xlink:href"],Nn={"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},kn=/^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi,Ln=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i;function Pn(t,r,e){if(0===t.length)return t;if(e&&"function"==typeof e)return e(t);for(var n=(new window.DOMParser).parseFromString(t,"text/html"),a=Object.keys(r),s=[].slice.call(n.body.querySelectorAll("*")),i=function(t){var e=s[t],n=e.nodeName.toLowerCase();if(-1===a.indexOf(e.nodeName.toLowerCase()))return e.parentNode.removeChild(e),"continue";var i=[].slice.call(e.attributes),o=[].concat(r["*"]||[],r[n]||[]);i.forEach(function(t){!function(t,e){var n=t.nodeName.toLowerCase();if(-1!==e.indexOf(n))return-1===On.indexOf(n)||Boolean(t.nodeValue.match(kn)||t.nodeValue.match(Ln));for(var i=e.filter(function(t){return t instanceof RegExp}),o=0,r=i.length;o<r;o++)if(n.match(i[o]))return 1}(t,o)&&e.removeAttribute(t.nodeName)})},o=0,l=s.length;o<l;o++)i(o);return n.body.innerHTML}var xn="tooltip",jn="bs.tooltip",Hn="."+jn,Rn=p.default.fn[xn],Fn="bs-tooltip",Mn=new RegExp("(^|\\s)"+Fn+"\\S+","g"),Wn=["sanitize","whiteList","sanitizeFn"],Un={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(number|string|function)",container:"(string|element|boolean)",fallbackPlacement:"(string|array)",boundary:"(string|element)",sanitize:"boolean",sanitizeFn:"(null|function)",whiteList:"object",popperConfig:"(null|object)"},qn={AUTO:"auto",TOP:"top",RIGHT:"right",BOTTOM:"bottom",LEFT:"left"},Bn={animation:!0,template:'<div class="tooltip" role="tooltip"><div class="arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent",sanitize:!0,sanitizeFn:null,whiteList:Nn,popperConfig:null},Kn="show",Qn="out",Vn={HIDE:"hide"+Hn,HIDDEN:"hidden"+Hn,SHOW:"show"+Hn,SHOWN:"shown"+Hn,INSERTED:"inserted"+Hn,CLICK:"click"+Hn,FOCUSIN:"focusin"+Hn,FOCUSOUT:"focusout"+Hn,MOUSEENTER:"mouseenter"+Hn,MOUSELEAVE:"mouseleave"+Hn},Yn="bookly-fade",zn="show",Xn=".tooltip-inner",Gn=".arrow",$n="hover",Jn="focus",Zn="click",ti="manual",ei=function(){function i(t,e){if("undefined"==typeof Ae)throw new TypeError("Bootstrap's tooltips require Popper.js (https://popper.js.org/)");this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners()}var t=i.prototype;return t.enable=function(){this._isEnabled=!0},t.disable=function(){this._isEnabled=!1},t.toggleEnabled=function(){this._isEnabled=!this._isEnabled},t.toggle=function(t){if(this._isEnabled)if(t){var e=this.constructor.DATA_KEY,n=p.default(t.currentTarget).data(e);n||(n=new this.constructor(t.currentTarget,this._getDelegateConfig()),p.default(t.currentTarget).data(e,n)),n._activeTrigger.click=!n._activeTrigger.click,n._isWithActiveTrigger()?n._enter(null,n):n._leave(null,n)}else{if(p.default(this.getTipElement()).hasClass(zn))return void this._leave(null,this);this._enter(null,this)}},t.dispose=function(){clearTimeout(this._timeout),p.default.removeData(this.element,this.constructor.DATA_KEY),p.default(this.element).off(this.constructor.EVENT_KEY),p.default(this.element).closest(".modal").off("hide.bs.modal",this._hideModalHandler),this.tip&&p.default(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,this._activeTrigger=null,this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},t.show=function(){var e=this;if("none"===p.default(this.element).css("display"))throw new Error("Please use show on visible elements");var t=p.default.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){p.default(this.element).trigger(t);var n=m.findShadowRoot(this.element),i=p.default.contains(null!==n?n:this.element.ownerDocument.documentElement,this.element);if(t.isDefaultPrevented()||!i)return;var o=this.getTipElement(),r=m.getUID(this.constructor.NAME);o.setAttribute("id",r),this.element.setAttribute("aria-describedby",r),this.setContent(),this.config.animation&&p.default(o).addClass(Yn);var a="function"==typeof this.config.placement?this.config.placement.call(this,o,this.element):this.config.placement,s=this._getAttachment(a);this.addAttachmentClass(s);var l=this._getContainer();p.default(o).data(this.constructor.DATA_KEY,this),p.default.contains(this.element.ownerDocument.documentElement,this.tip)||p.default(o).appendTo(l),p.default(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new Ae(this.element,o,this._getPopperConfig(s)),p.default(o).addClass(zn),"ontouchstart"in document.documentElement&&p.default(document.body).children().on("mouseover",null,p.default.noop);var u,f=function(){e.config.animation&&e._fixTransition();var t=e._hoverState;e._hoverState=null,p.default(e.element).trigger(e.constructor.Event.SHOWN),t===Qn&&e._leave(null,e)};p.default(this.tip).hasClass(Yn)?(u=m.getTransitionDurationFromElement(this.tip),p.default(this.tip).one(m.TRANSITION_END,f).booklyEmulateTransitionEnd(u)):f()}},t.hide=function(t){function e(){i._hoverState!==Kn&&o.parentNode&&o.parentNode.removeChild(o),i._cleanTipClass(),i.element.removeAttribute("aria-describedby"),p.default(i.element).trigger(i.constructor.Event.HIDDEN),null!==i._popper&&i._popper.destroy(),t&&t()}var n,i=this,o=this.getTipElement(),r=p.default.Event(this.constructor.Event.HIDE);p.default(this.element).trigger(r),r.isDefaultPrevented()||(p.default(o).removeClass(zn),"ontouchstart"in document.documentElement&&p.default(document.body).children().off("mouseover",null,p.default.noop),this._activeTrigger[Zn]=!1,this._activeTrigger[Jn]=!1,this._activeTrigger[$n]=!1,p.default(this.tip).hasClass(Yn)?(n=m.getTransitionDurationFromElement(o),p.default(o).one(m.TRANSITION_END,e).booklyEmulateTransitionEnd(n)):e(),this._hoverState="")},t.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},t.isWithContent=function(){return Boolean(this.getTitle())},t.addAttachmentClass=function(t){p.default(this.getTipElement()).addClass(Fn+"-"+t)},t.getTipElement=function(){return this.tip=this.tip||p.default(this.config.template)[0],this.tip},t.setContent=function(){var t=this.getTipElement();this.setElementContent(p.default(t.querySelectorAll(Xn)),this.getTitle()),p.default(t).removeClass(Yn+" "+zn)},t.setElementContent=function(t,e){"object"!=typeof e||!e.nodeType&&!e.jquery?this.config.html?(this.config.sanitize&&(e=Pn(e,this.config.whiteList,this.config.sanitizeFn)),t.html(e)):t.text(e):this.config.html?p.default(e).parent().is(t)||t.empty().append(e):t.text(p.default(e).text())},t.getTitle=function(){return this.element.getAttribute("data-original-title")||("function"==typeof this.config.title?this.config.title.call(this.element):this.config.title)},t._getPopperConfig=function(t){var e=this;return l(l({},{placement:t,modifiers:{offset:this._getOffset(),flip:{behavior:this.config.fallbackPlacement},arrow:{element:Gn},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(t){t.originalPlacement!==t.placement&&e._handlePopperPlacementChange(t)},onUpdate:function(t){return e._handlePopperPlacementChange(t)}}),this.config.popperConfig)},t._getOffset=function(){var e=this,t={};return"function"==typeof this.config.offset?t.fn=function(t){return t.offsets=l(l({},t.offsets),e.config.offset(t.offsets,e.element)||{}),t}:t.offset=this.config.offset,t},t._getContainer=function(){return!1===this.config.container?document.body:m.isElement(this.config.container)?p.default(this.config.container):p.default(document).find(this.config.container)},t._getAttachment=function(t){return qn[t.toUpperCase()]},t._setListeners=function(){var i=this;this.config.trigger.split(" ").forEach(function(t){var e,n;"click"===t?p.default(i.element).on(i.constructor.Event.CLICK,i.config.selector,function(t){return i.toggle(t)}):t!==ti&&(e=t===$n?i.constructor.Event.MOUSEENTER:i.constructor.Event.FOCUSIN,n=t===$n?i.constructor.Event.MOUSELEAVE:i.constructor.Event.FOCUSOUT,p.default(i.element).on(e,i.config.selector,function(t){return i._enter(t)}).on(n,i.config.selector,function(t){return i._leave(t)}))}),this._hideModalHandler=function(){i.element&&i.hide()},p.default(this.element).closest(".modal").on("hide.bs.modal",this._hideModalHandler),this.config.selector?this.config=l(l({},this.config),{},{trigger:"manual",selector:""}):this._fixTitle()},t._fixTitle=function(){var t=typeof this.element.getAttribute("data-original-title");!this.element.getAttribute("title")&&"string"==t||(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},t._enter=function(t,e){var n=this.constructor.DATA_KEY;(e=e||p.default(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),p.default(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusin"===t.type?Jn:$n]=!0),p.default(e.getTipElement()).hasClass(zn)||e._hoverState===Kn?e._hoverState=Kn:(clearTimeout(e._timeout),e._hoverState=Kn,e.config.delay&&e.config.delay.show?e._timeout=setTimeout(function(){e._hoverState===Kn&&e.show()},e.config.delay.show):e.show())},t._leave=function(t,e){var n=this.constructor.DATA_KEY;(e=e||p.default(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),p.default(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusout"===t.type?Jn:$n]=!1),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState=Qn,e.config.delay&&e.config.delay.hide?e._timeout=setTimeout(function(){e._hoverState===Qn&&e.hide()},e.config.delay.hide):e.hide())},t._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},t._getConfig=function(t){var e=p.default(this.element).data();return Object.keys(e).forEach(function(t){-1!==Wn.indexOf(t)&&delete e[t]}),"number"==typeof(t=l(l(l({},this.constructor.Default),e),"object"==typeof t&&t?t:{})).delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),m.typeCheckConfig(xn,t,this.constructor.DefaultType),t.sanitize&&(t.template=Pn(t.template,t.whiteList,t.sanitizeFn)),t},t._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},t._cleanTipClass=function(){var t=p.default(this.getTipElement()),e=t.attr("class").match(Mn);null!==e&&e.length&&t.removeClass(e.join(""))},t._handlePopperPlacementChange=function(t){var e=t.instance;this.tip=e.popper,this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(t.placement))},t._fixTransition=function(){var t=this.getTipElement(),e=this.config.animation;null===t.getAttribute("x-placement")&&(p.default(t).removeClass(Yn),this.config.animation=!1,this.hide(),this.show(),this.config.animation=e)},i._jQueryInterface=function(n){return this.each(function(){var t=p.default(this).data(jn),e="object"==typeof n&&n;if((t||!/dispose|hide/.test(n))&&(t||(t=new i(this,e),p.default(this).data(jn,t)),"string"==typeof n)){if("undefined"==typeof t[n])throw new TypeError('No method named "'+n+'"');t[n]()}})},a(i,null,[{key:"VERSION",get:function(){return"4.4.1"}},{key:"Default",get:function(){return Bn}},{key:"NAME",get:function(){return xn}},{key:"DATA_KEY",get:function(){return jn}},{key:"Event",get:function(){return Vn}},{key:"EVENT_KEY",get:function(){return Hn}},{key:"DefaultType",get:function(){return Un}}]),i}();p.default.fn[xn]=ei._jQueryInterface,p.default.fn[xn].Constructor=ei,p.default.fn[xn].noConflict=function(){return p.default.fn[xn]=Rn,ei._jQueryInterface};var ni="booklyPopover",ii="bs.popover",oi="."+ii,ri=p.default.fn[ni],ai="bs-popover",si=new RegExp("(^|\\s)"+ai+"\\S+","g"),li=l(l({},ei.Default),{},{placement:"right",trigger:"click",content:"",template:'<div class="bookly-popover" role="tooltip"><div class="arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>'}),ui=l(l({},ei.DefaultType),{},{content:"(string|element|function)"}),fi="bookly-fade",di="show",ci=".popover-header",hi=".popover-body",pi={HIDE:"hide"+oi,HIDDEN:"hidden"+oi,SHOW:"show"+oi,SHOWN:"shown"+oi,INSERTED:"inserted"+oi,CLICK:"click"+oi,FOCUSIN:"focusin"+oi,FOCUSOUT:"focusout"+oi,MOUSEENTER:"mouseenter"+oi,MOUSELEAVE:"mouseleave"+oi},mi=function(t){var e,n;function i(){return t.apply(this,arguments)||this}n=t,(e=i).prototype=Object.create(n.prototype),(e.prototype.constructor=e).__proto__=n;var o=i.prototype;return o.isWithContent=function(){return this.getTitle()||this._getContent()},o.addAttachmentClass=function(t){p.default(this.getTipElement()).addClass(ai+"-"+t)},o.getTipElement=function(){return this.tip=this.tip||p.default(this.config.template)[0],this.tip},o.setContent=function(){var t=p.default(this.getTipElement());this.setElementContent(t.find(ci),this.getTitle());var e=this._getContent();"function"==typeof e&&(e=e.call(this.element)),this.setElementContent(t.find(hi),e),t.removeClass(fi+" "+di)},o._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},o._cleanTipClass=function(){var t=p.default(this.getTipElement()),e=t.attr("class").match(si);null!==e&&0<e.length&&t.removeClass(e.join(""))},i._jQueryInterface=function(n){return this.each(function(){var t=p.default(this).data(ii),e="object"==typeof n?n:null;if((t||!/dispose|hide/.test(n))&&(t||(t=new i(this,e),p.default(this).data(ii,t)),"string"==typeof n)){if("undefined"==typeof t[n])throw new TypeError('No method named "'+n+'"');t[n]()}})},a(i,null,[{key:"VERSION",get:function(){return"4.4.1"}},{key:"Default",get:function(){return li}},{key:"NAME",get:function(){return ni}},{key:"DATA_KEY",get:function(){return ii}},{key:"Event",get:function(){return pi}},{key:"EVENT_KEY",get:function(){return oi}},{key:"DefaultType",get:function(){return ui}}]),i}(ei);p.default.fn[ni]=mi._jQueryInterface,p.default.fn[ni].Constructor=mi,p.default.fn[ni].noConflict=function(){return p.default.fn[ni]=ri,mi._jQueryInterface};var gi="scrollspy",_i="bs.scrollspy",vi="."+_i,yi=p.default.fn[gi],Ei={offset:10,method:"auto",target:""},bi={offset:"number",method:"string",target:"(string|element)"},wi={ACTIVATE:"activate"+vi,SCROLL:"scroll"+vi,LOAD_DATA_API:"load"+vi+".data-api"},Ti="dropdown-item",Ci="active",Si='[data-spy="scroll"]',Di=".nav, .list-group",Ii=".nav-link",Ai=".nav-item",Oi=".list-group-item",Ni=".dropdown",ki=".dropdown-item",Li=".dropdown-toggle",Pi="offset",xi="position",ji=function(){function n(t,e){var n=this;this._element=t,this._scrollElement="BODY"===t.tagName?window:t,this._config=this._getConfig(e),this._selector=this._config.target+" "+Ii+","+this._config.target+" "+Oi+","+this._config.target+" "+ki,this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,p.default(this._scrollElement).on(wi.SCROLL,function(t){return n._process(t)}),this.refresh(),this._process()}var t=n.prototype;return t.refresh=function(){var e=this,t=this._scrollElement===this._scrollElement.window?Pi:xi,o="auto"===this._config.method?t:this._config.method,r=o===xi?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),[].slice.call(document.querySelectorAll(this._selector)).map(function(t){var e,n=m.getSelectorFromElement(t);if(n&&(e=document.querySelector(n)),e){var i=e.getBoundingClientRect();if(i.width||i.height)return[p.default(e)[o]().top+r,n]}return null}).filter(function(t){return t}).sort(function(t,e){return t[0]-e[0]}).forEach(function(t){e._offsets.push(t[0]),e._targets.push(t[1])})},t.dispose=function(){p.default.removeData(this._element,_i),p.default(this._scrollElement).off(vi),this._element=null,this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null},t._getConfig=function(t){var e;return"string"!=typeof(t=l(l({},Ei),"object"==typeof t&&t?t:{})).target&&((e=p.default(t.target).attr("id"))||(e=m.getUID(gi),p.default(t.target).attr("id",e)),t.target="#"+e),m.typeCheckConfig(gi,t,bi),t},t._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},t._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},t._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},t._process=function(){var t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),n=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),n<=t){var i=this._targets[this._targets.length-1];this._activeTarget!==i&&this._activate(i)}else{if(this._activeTarget&&t<this._offsets[0]&&0<this._offsets[0])return this._activeTarget=null,void this._clear();for(var o=this._offsets.length;o--;){this._activeTarget!==this._targets[o]&&t>=this._offsets[o]&&("undefined"==typeof this._offsets[o+1]||t<this._offsets[o+1])&&this._activate(this._targets[o])}}},t._activate=function(e){this._activeTarget=e,this._clear();var t=this._selector.split(",").map(function(t){return t+'[data-target="'+e+'"],'+t+'[href="'+e+'"]'}),n=p.default([].slice.call(document.querySelectorAll(t.join(","))));n.hasClass(Ti)?(n.closest(Ni).find(Li).addClass(Ci),n.addClass(Ci)):(n.addClass(Ci),n.parents(Di).prev(Ii+", "+Oi).addClass(Ci),n.parents(Di).prev(Ai).children(Ii).addClass(Ci)),p.default(this._scrollElement).trigger(wi.ACTIVATE,{relatedTarget:e})},t._clear=function(){[].slice.call(document.querySelectorAll(this._selector)).filter(function(t){return t.classList.contains(Ci)}).forEach(function(t){return t.classList.remove(Ci)})},n._jQueryInterface=function(e){return this.each(function(){var t=p.default(this).data(_i);if(t||(t=new n(this,"object"==typeof e&&e),p.default(this).data(_i,t)),"string"==typeof e){if("undefined"==typeof t[e])throw new TypeError('No method named "'+e+'"');t[e]()}})},a(n,null,[{key:"VERSION",get:function(){return"4.4.1"}},{key:"Default",get:function(){return Ei}}]),n}();p.default(window).on(wi.LOAD_DATA_API,function(){for(var t=[].slice.call(document.querySelectorAll(Si)),e=t.length;e--;){var n=p.default(t[e]);ji._jQueryInterface.call(n,n.data())}}),p.default.fn[gi]=ji._jQueryInterface,p.default.fn[gi].Constructor=ji,p.default.fn[gi].noConflict=function(){return p.default.fn[gi]=yi,ji._jQueryInterface};var Hi="booklyTab",Ri="bs.tab",Fi="."+Ri,Mi=p.default.fn[Hi],Wi={HIDE:"hide"+Fi,HIDDEN:"hidden"+Fi,SHOW:"show"+Fi,SHOWN:"shown"+Fi,CLICK_DATA_API:"click"+Fi+".data-api"},Ui="dropdown-menu",qi="active",Bi="disabled",Ki="bookly-fade",Qi="show",Vi=".dropdown",Yi=".nav, .list-group",zi=".active",Xi="> li > .active",Gi='[data-toggle="bookly-tab"], [data-toggle="bookly-pill"], [data-toggle="bookly-list"]',$i=".dropdown-toggle",Ji="> .dropdown-menu .active",Zi=function(){function i(t){this._element=t}var t=i.prototype;return t.show=function(){var t,e,n,i,o,r,a,s,l=this;this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&p.default(this._element).hasClass(qi)||p.default(this._element).hasClass(Bi)||(e=p.default(this._element).closest(Yi)[0],n=m.getSelectorFromElement(this._element),e&&(i="UL"===e.nodeName||"OL"===e.nodeName?Xi:zi,o=(o=p.default.makeArray(p.default(e).find(i)))[o.length-1]),r=p.default.Event(Wi.HIDE,{relatedTarget:this._element}),a=p.default.Event(Wi.SHOW,{relatedTarget:o}),o&&p.default(o).trigger(r),p.default(this._element).trigger(a),a.isDefaultPrevented()||r.isDefaultPrevented()||(n&&(t=document.querySelector(n)),this._activate(this._element,e),s=function(){var t=p.default.Event(Wi.HIDDEN,{relatedTarget:l._element}),e=p.default.Event(Wi.SHOWN,{relatedTarget:o});p.default(o).trigger(t),p.default(l._element).trigger(e)},t?this._activate(t,t.parentNode,s):s()))},t.dispose=function(){p.default.removeData(this._element,Ri),this._element=null},t._activate=function(t,e,n){function i(){return r._transitionComplete(t,a,n)}var o,r=this,a=(!e||"UL"!==e.nodeName&&"OL"!==e.nodeName?p.default(e).children(zi):p.default(e).find(Xi))[0],s=n&&a&&p.default(a).hasClass(Ki);a&&s?(o=m.getTransitionDurationFromElement(a),p.default(a).removeClass(Qi).one(m.TRANSITION_END,i).booklyEmulateTransitionEnd(o)):i()},t._transitionComplete=function(t,e,n){var i,o,r;e&&(p.default(e).removeClass(qi),(i=p.default(e.parentNode).find(Ji)[0])&&p.default(i).removeClass(qi),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!1)),p.default(t).addClass(qi),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!0),m.reflow(t),t.classList.contains(Ki)&&t.classList.add(Qi),t.parentNode&&p.default(t.parentNode).hasClass(Ui)&&((o=p.default(t).closest(Vi)[0])&&(r=[].slice.call(o.querySelectorAll($i)),p.default(r).addClass(qi)),t.setAttribute("aria-expanded",!0)),n&&n()},i._jQueryInterface=function(n){return this.each(function(){var t=p.default(this),e=t.data(Ri);if(e||(e=new i(this),t.data(Ri,e)),"string"==typeof n){if("undefined"==typeof e[n])throw new TypeError('No method named "'+n+'"');e[n]()}})},a(i,null,[{key:"VERSION",get:function(){return"4.4.1"}}]),i}();p.default(document).on(Wi.CLICK_DATA_API,Gi,function(t){t.preventDefault(),Zi._jQueryInterface.call(p.default(this),"show")}),p.default.fn[Hi]=Zi._jQueryInterface,p.default.fn[Hi].Constructor=Zi,p.default.fn[Hi].noConflict=function(){return p.default.fn[Hi]=Mi,Zi._jQueryInterface};var to="toast",eo="bs.toast",no="."+eo,io=p.default.fn[to],oo={CLICK_DISMISS:"click.dismiss"+no,HIDE:"hide"+no,HIDDEN:"hidden"+no,SHOW:"show"+no,SHOWN:"shown"+no},ro="fade",ao="hide",so="show",lo="showing",uo={animation:"boolean",autohide:"boolean",delay:"number"},fo={animation:!0,autohide:!0,delay:500},co='[data-dismiss="toast"]',ho=function(){function i(t,e){this._element=t,this._config=this._getConfig(e),this._timeout=null,this._setListeners()}var t=i.prototype;return t.show=function(){var t,e,n=this,i=p.default.Event(oo.SHOW);p.default(this._element).trigger(i),i.isDefaultPrevented()||(this._config.animation&&this._element.classList.add(ro),t=function(){n._element.classList.remove(lo),n._element.classList.add(so),p.default(n._element).trigger(oo.SHOWN),n._config.autohide&&(n._timeout=setTimeout(function(){n.hide()},n._config.delay))},this._element.classList.remove(ao),m.reflow(this._element),this._element.classList.add(lo),this._config.animation?(e=m.getTransitionDurationFromElement(this._element),p.default(this._element).one(m.TRANSITION_END,t).booklyEmulateTransitionEnd(e)):t())},t.hide=function(){var t;this._element.classList.contains(so)&&(t=p.default.Event(oo.HIDE),p.default(this._element).trigger(t),t.isDefaultPrevented()||this._close())},t.dispose=function(){clearTimeout(this._timeout),this._timeout=null,this._element.classList.contains(so)&&this._element.classList.remove(so),p.default(this._element).off(oo.CLICK_DISMISS),p.default.removeData(this._element,eo),this._element=null,this._config=null},t._getConfig=function(t){return t=l(l(l({},fo),p.default(this._element).data()),"object"==typeof t&&t?t:{}),m.typeCheckConfig(to,t,this.constructor.DefaultType),t},t._setListeners=function(){var t=this;p.default(this._element).on(oo.CLICK_DISMISS,co,function(){return t.hide()})},t._close=function(){function t(){n._element.classList.add(ao),p.default(n._element).trigger(oo.HIDDEN)}var e,n=this;this._element.classList.remove(so),this._config.animation?(e=m.getTransitionDurationFromElement(this._element),p.default(this._element).one(m.TRANSITION_END,t).booklyEmulateTransitionEnd(e)):t()},i._jQueryInterface=function(n){return this.each(function(){var t=p.default(this),e=t.data(eo);if(e||(e=new i(this,"object"==typeof n&&n),t.data(eo,e)),"string"==typeof n){if("undefined"==typeof e[n])throw new TypeError('No method named "'+n+'"');e[n](this)}})},a(i,null,[{key:"VERSION",get:function(){return"4.4.1"}},{key:"DefaultType",get:function(){return uo}},{key:"Default",get:function(){return fo}}]),i}();p.default.fn[to]=ho._jQueryInterface,p.default.fn[to].Constructor=ho,p.default.fn[to].noConflict=function(){return p.default.fn[to]=io,ho._jQueryInterface},t.Alert=y,t.Button=H,t.Carousel=ct,t.Collapse=At,t.Dropdown=on,t.Modal=An,t.Popover=mi,t.Scrollspy=ji,t.Tab=Zi,t.Toast=ho,t.Tooltip=ei,t.Util=m,Object.defineProperty(t,"__esModule",{value:!0})});
|
frontend/components/booking/InfoText.php
CHANGED
@@ -139,6 +139,7 @@ class InfoText
|
|
139 |
$chain_item->getNumberOfPersons(),
|
140 |
$chain_item->getExtras()
|
141 |
);
|
|
|
142 |
$deposit_price = Lib\Proxy\DepositPayments::prepareAmount( $price, $staff_service->getDeposit(), $chain_item->getNumberOfPersons() );
|
143 |
}
|
144 |
} else {
|
@@ -149,6 +150,7 @@ class InfoText
|
|
149 |
$chain_item->getNumberOfPersons(),
|
150 |
$chain_item->getExtras()
|
151 |
);
|
|
|
152 |
$deposit_price = $price;
|
153 |
}
|
154 |
$appointment_data['service_price'] = $price !== false ? Lib\Utils\Price::format( $price ) : '-';
|
@@ -223,7 +225,7 @@ class InfoText
|
|
223 |
|
224 |
$appointment_data['appointment_date'] = $slots[0][2] !== null ? $service_dp->formatI18nDate() : __( 'N/A', 'bookly' );
|
225 |
$appointment_data['category_name'] = $service->getTranslatedCategoryName();
|
226 |
-
$appointment_data['service_price'] = Lib\Utils\Price::format( $cart_item->getServicePrice() );
|
227 |
$appointment_data['service_name'] = $service->getTranslatedTitle();
|
228 |
|
229 |
$data['appointment_date'][] = $appointment_data['appointment_date'];
|
@@ -302,7 +304,7 @@ class InfoText
|
|
302 |
'total_price' => Lib\Utils\Price::format( $cart_info->getTotal() ),
|
303 |
);
|
304 |
if ( $step == Steps::DETAILS ) {
|
305 |
-
$codes['
|
306 |
? sprintf( '<a class="bookly-js-login-show" href="#">%s</a>', __( 'Log In' ) )
|
307 |
: '';
|
308 |
}
|
139 |
$chain_item->getNumberOfPersons(),
|
140 |
$chain_item->getExtras()
|
141 |
);
|
142 |
+
$price = Lib\Proxy\Discounts::prepareServicePrice( $price, $service->getId(), $chain_item->getNumberOfPersons() );
|
143 |
$deposit_price = Lib\Proxy\DepositPayments::prepareAmount( $price, $staff_service->getDeposit(), $chain_item->getNumberOfPersons() );
|
144 |
}
|
145 |
} else {
|
150 |
$chain_item->getNumberOfPersons(),
|
151 |
$chain_item->getExtras()
|
152 |
);
|
153 |
+
$price = Lib\Proxy\Discounts::prepareServicePrice( $price, $service->getId(), $chain_item->getNumberOfPersons() );
|
154 |
$deposit_price = $price;
|
155 |
}
|
156 |
$appointment_data['service_price'] = $price !== false ? Lib\Utils\Price::format( $price ) : '-';
|
225 |
|
226 |
$appointment_data['appointment_date'] = $slots[0][2] !== null ? $service_dp->formatI18nDate() : __( 'N/A', 'bookly' );
|
227 |
$appointment_data['category_name'] = $service->getTranslatedCategoryName();
|
228 |
+
$appointment_data['service_price'] = Lib\Utils\Price::format( $cart_item->getServicePrice( $cart_item->getNumberOfPersons() ) );
|
229 |
$appointment_data['service_name'] = $service->getTranslatedTitle();
|
230 |
|
231 |
$data['appointment_date'][] = $appointment_data['appointment_date'];
|
304 |
'total_price' => Lib\Utils\Price::format( $cart_info->getTotal() ),
|
305 |
);
|
306 |
if ( $step == Steps::DETAILS ) {
|
307 |
+
$codes['login_form'] = ! get_current_user_id() && ! $userData->getFacebookId()
|
308 |
? sprintf( '<a class="bookly-js-login-show" href="#">%s</a>', __( 'Log In' ) )
|
309 |
: '';
|
310 |
}
|
frontend/modules/booking/proxy/Discounts.php
ADDED
@@ -0,0 +1,15 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Bookly\Frontend\Modules\Booking\Proxy;
|
3 |
+
|
4 |
+
use Bookly\Lib;
|
5 |
+
|
6 |
+
/**
|
7 |
+
* Class Discounts
|
8 |
+
* @package Bookly\Frontend\Modules\Booking\Proxy
|
9 |
+
*
|
10 |
+
* @method static void renderCartDiscountRow( array $table, string $layout, Lib\UserBookingData $userData )
|
11 |
+
* @method static void renderCartItemInfo( Lib\UserBookingData $userData, $cart_key, $positions, $desktop ) Render extra info for cart item at Cart step.
|
12 |
+
*/
|
13 |
+
abstract class Discounts extends Lib\Base\Proxy
|
14 |
+
{
|
15 |
+
}
|
frontend/resources/css/bookly-main.css
CHANGED
@@ -868,6 +868,16 @@ label.bookly-square {
|
|
868 |
.bookly-cart table tfoot td {
|
869 |
border-top: 2px solid rgba(51, 51, 51, 0.1);
|
870 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
871 |
|
872 |
/* Details */
|
873 |
.bookly-guest > .bookly-btn {
|
868 |
.bookly-cart table tfoot td {
|
869 |
border-top: 2px solid rgba(51, 51, 51, 0.1);
|
870 |
}
|
871 |
+
.bookly-cart table tr.bookly-cart-sub-item td:first-child {
|
872 |
+
padding-left: 25px;
|
873 |
+
}
|
874 |
+
|
875 |
+
.bookly-cart tbody.bookly-desktop-version,
|
876 |
+
.bookly-cart tbody.bookly-desktop-version td,
|
877 |
+
.bookly-cart tbody.bookly-mobile-version tr.bookly-cart-sub-item th,
|
878 |
+
.bookly-cart tbody.bookly-mobile-version tr.bookly-cart-sub-item td {
|
879 |
+
border: 0 !important;
|
880 |
+
}
|
881 |
|
882 |
/* Details */
|
883 |
.bookly-guest > .bookly-btn {
|
languages/bookly-de_DE.mo
CHANGED
Binary file
|
languages/bookly-de_DE.po
CHANGED
@@ -8,8 +8,8 @@ msgstr ""
|
|
8 |
"Language: de_DE\n"
|
9 |
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
10 |
"Report-Msgid-Bugs-To: \n"
|
11 |
-
"POT-Creation-Date: 2020-
|
12 |
-
"PO-Revision-Date: 2020-
|
13 |
"Last-Translator: Tristan Schneiders <tristan.schneiders@yahoo.com>\n"
|
14 |
"Language-Team: German\n"
|
15 |
"X-Loco-Version: 2.3.1; wp-5.5"
|
@@ -74,9 +74,11 @@ msgstr "Fälligkeitsdatum"
|
|
74 |
msgid "INVOICE"
|
75 |
msgstr "RECHNUNG"
|
76 |
|
77 |
-
|
78 |
-
|
79 |
-
|
|
|
|
|
80 |
|
81 |
# Das Add-On für Rechnungen erfordert die Adressinformationen Ihrer Kunden. Daher werden die Optionen "Adressfeld als Pflichtfeld" in "Einstellungen / Kunden" und "Adressfeld anzeigen" in "Aussehen / Details" automatisch aktiviert und können deaktiviert werden, nachdem das Add-On "Rechnungen" deaktiviert wurde. wrong
|
82 |
msgid ""
|
@@ -166,6 +168,9 @@ msgstr "Steuer"
|
|
166 |
msgid "N/A"
|
167 |
msgstr "NICHT VERFÜGBAR"
|
168 |
|
|
|
|
|
|
|
169 |
msgid "Subtotal"
|
170 |
msgstr "Zwischensumme"
|
171 |
|
@@ -186,9 +191,6 @@ msgstr "Bezahlt"
|
|
186 |
msgid "Due"
|
187 |
msgstr "Fällig"
|
188 |
|
189 |
-
msgid "Discount"
|
190 |
-
msgstr "Rabatt"
|
191 |
-
|
192 |
# Outlook Kalender Ereignis wrong
|
193 |
msgid "Outlook Calendar event"
|
194 |
msgstr "Outlook-Kalender-Veranstaltung"
|
@@ -1861,6 +1863,9 @@ msgstr "API-Login-ID"
|
|
1861 |
msgid "API Transaction Key"
|
1862 |
msgstr "API-Transaktionsschlüssel"
|
1863 |
|
|
|
|
|
|
|
1864 |
# Name wrong
|
1865 |
msgid "Title"
|
1866 |
msgstr "Titel"
|
@@ -4255,6 +4260,12 @@ msgstr "Nächstes Abrechnungsdatum"
|
|
4255 |
msgid "Deactivation date"
|
4256 |
msgstr "Deaktivierungsdatum"
|
4257 |
|
|
|
|
|
|
|
|
|
|
|
|
|
4258 |
msgid "Stripe activation was not completed"
|
4259 |
msgstr "Die Stripe-Aktivierung wurde nicht abgeschlossen"
|
4260 |
|
@@ -7780,9 +7791,6 @@ msgstr ""
|
|
7780 |
msgid "Skip"
|
7781 |
msgstr "Überspringen"
|
7782 |
|
7783 |
-
msgid "Tasks"
|
7784 |
-
msgstr "Aufgaben"
|
7785 |
-
|
7786 |
msgid "Skip time selection"
|
7787 |
msgstr "Zeitauswahl überspringen"
|
7788 |
|
@@ -8723,6 +8731,48 @@ msgstr ""
|
|
8723 |
"Formular, zum Hinzufügen eines neuen Endpunkts, für den Empfang von "
|
8724 |
"Ereignissen anzuzeigen."
|
8725 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8726 |
msgid "Set maximum value for Quantity field."
|
8727 |
msgstr "Legen Sie den Maximalwert für das Feld Menge fest."
|
8728 |
|
8 |
"Language: de_DE\n"
|
9 |
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
10 |
"Report-Msgid-Bugs-To: \n"
|
11 |
+
"POT-Creation-Date: 2020-12-28 10:39+0000\n"
|
12 |
+
"PO-Revision-Date: 2020-12-28 12:09+0000\n"
|
13 |
"Last-Translator: Tristan Schneiders <tristan.schneiders@yahoo.com>\n"
|
14 |
"Language-Team: German\n"
|
15 |
"X-Loco-Version: 2.3.1; wp-5.5"
|
74 |
msgid "INVOICE"
|
75 |
msgstr "RECHNUNG"
|
76 |
|
77 |
+
msgid "Thank you for your business!"
|
78 |
+
msgstr "Vielen Dank für Ihr Vertrauen!"
|
79 |
+
|
80 |
+
msgid "We really appreciate it"
|
81 |
+
msgstr "Wir wissen es wirklich zu schätzen"
|
82 |
|
83 |
# Das Add-On für Rechnungen erfordert die Adressinformationen Ihrer Kunden. Daher werden die Optionen "Adressfeld als Pflichtfeld" in "Einstellungen / Kunden" und "Adressfeld anzeigen" in "Aussehen / Details" automatisch aktiviert und können deaktiviert werden, nachdem das Add-On "Rechnungen" deaktiviert wurde. wrong
|
84 |
msgid ""
|
168 |
msgid "N/A"
|
169 |
msgstr "NICHT VERFÜGBAR"
|
170 |
|
171 |
+
msgid "Discount"
|
172 |
+
msgstr "Rabatt"
|
173 |
+
|
174 |
msgid "Subtotal"
|
175 |
msgstr "Zwischensumme"
|
176 |
|
191 |
msgid "Due"
|
192 |
msgstr "Fällig"
|
193 |
|
|
|
|
|
|
|
194 |
# Outlook Kalender Ereignis wrong
|
195 |
msgid "Outlook Calendar event"
|
196 |
msgstr "Outlook-Kalender-Veranstaltung"
|
1863 |
msgid "API Transaction Key"
|
1864 |
msgstr "API-Transaktionsschlüssel"
|
1865 |
|
1866 |
+
msgid "ID"
|
1867 |
+
msgstr "ID"
|
1868 |
+
|
1869 |
# Name wrong
|
1870 |
msgid "Title"
|
1871 |
msgstr "Titel"
|
4260 |
msgid "Deactivation date"
|
4261 |
msgstr "Deaktivierungsdatum"
|
4262 |
|
4263 |
+
msgid "Tasks"
|
4264 |
+
msgstr "Aufgaben"
|
4265 |
+
|
4266 |
+
msgid "unlimited in trial"
|
4267 |
+
msgstr "unbegrenzt im Testzeitraum"
|
4268 |
+
|
4269 |
msgid "Stripe activation was not completed"
|
4270 |
msgstr "Die Stripe-Aktivierung wurde nicht abgeschlossen"
|
4271 |
|
7791 |
msgid "Skip"
|
7792 |
msgstr "Überspringen"
|
7793 |
|
|
|
|
|
|
|
7794 |
msgid "Skip time selection"
|
7795 |
msgstr "Zeitauswahl überspringen"
|
7796 |
|
8731 |
"Formular, zum Hinzufügen eines neuen Endpunkts, für den Empfang von "
|
8732 |
"Ereignissen anzuzeigen."
|
8733 |
|
8734 |
+
msgid "Condition"
|
8735 |
+
msgstr "Bedingung"
|
8736 |
+
|
8737 |
+
msgid "Discounts"
|
8738 |
+
msgstr "Rabatte"
|
8739 |
+
|
8740 |
+
msgid "number of persons"
|
8741 |
+
msgstr "Anzahl der Personen"
|
8742 |
+
|
8743 |
+
msgid "number of appointments"
|
8744 |
+
msgstr "Anzahl von Terminen"
|
8745 |
+
|
8746 |
+
msgid "Add discount"
|
8747 |
+
msgstr "Rabatt hinzufügen"
|
8748 |
+
|
8749 |
+
msgid "No discounts found."
|
8750 |
+
msgstr "Keine Rabatte gefunden."
|
8751 |
+
|
8752 |
+
#, php-format
|
8753 |
+
msgid "If %s equals or exceeds %s"
|
8754 |
+
msgstr "Wenn %s gleich oder größer als %s ist"
|
8755 |
+
|
8756 |
+
msgid ""
|
8757 |
+
"Select if the discount is enabled and applied to the booking price if the "
|
8758 |
+
"conditions are met, or if it is disabled and not applied"
|
8759 |
+
msgstr ""
|
8760 |
+
"Legen Sie fest, ob der Rabatt aktiviert ist und auf den Buchungspreis "
|
8761 |
+
"angewendet werden soll, wenn die Bedingungen erfüllt sind, oder ob er "
|
8762 |
+
"deaktiviert ist und nicht angewendet wird"
|
8763 |
+
|
8764 |
+
msgid "Condition to apply the discount"
|
8765 |
+
msgstr "Bedingung für die Nutzung des Rabatts"
|
8766 |
+
|
8767 |
+
msgid "and the service is one of the selected"
|
8768 |
+
msgstr "und der Dienst ist einer der gewählten"
|
8769 |
+
|
8770 |
+
msgid "New discount"
|
8771 |
+
msgstr "Neuer Rabatt"
|
8772 |
+
|
8773 |
+
msgid "Edit discount"
|
8774 |
+
msgstr "Rabatt ändern"
|
8775 |
+
|
8776 |
msgid "Set maximum value for Quantity field."
|
8777 |
msgstr "Legen Sie den Maximalwert für das Feld Menge fest."
|
8778 |
|
languages/bookly-es_ES.mo
CHANGED
Binary file
|
languages/bookly-es_ES.po
CHANGED
@@ -8,8 +8,8 @@ msgstr ""
|
|
8 |
"Language: es_ES\n"
|
9 |
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
10 |
"Report-Msgid-Bugs-To: \n"
|
11 |
-
"POT-Creation-Date: 2020-
|
12 |
-
"PO-Revision-Date: 2020-
|
13 |
"Last-Translator: support@bookly.info\n"
|
14 |
"Language-Team: Spanish (Spain)\n"
|
15 |
"X-Loco-Version: 2.3.1; wp-5.5"
|
@@ -67,8 +67,11 @@ msgstr "Fecha de vencimiento"
|
|
67 |
msgid "INVOICE"
|
68 |
msgstr "FACTURA"
|
69 |
|
70 |
-
msgid "Thank you for your business"
|
71 |
-
msgstr "
|
|
|
|
|
|
|
72 |
|
73 |
msgid ""
|
74 |
"Invoices add-on requires your customers address information. So options "
|
@@ -154,6 +157,9 @@ msgstr "Impuesto"
|
|
154 |
msgid "N/A"
|
155 |
msgstr "N/A"
|
156 |
|
|
|
|
|
|
|
157 |
msgid "Subtotal"
|
158 |
msgstr "Subtotal"
|
159 |
|
@@ -172,9 +178,6 @@ msgstr "Pagado"
|
|
172 |
msgid "Due"
|
173 |
msgstr "Debido"
|
174 |
|
175 |
-
msgid "Discount"
|
176 |
-
msgstr "Descuento"
|
177 |
-
|
178 |
msgid "Outlook Calendar event"
|
179 |
msgstr "Evento del calendario de Outlook"
|
180 |
|
@@ -1732,6 +1735,9 @@ msgstr "ID de Inicio de Sesión API"
|
|
1732 |
msgid "API Transaction Key"
|
1733 |
msgstr "Clave de Transacción API"
|
1734 |
|
|
|
|
|
|
|
1735 |
msgid "Title"
|
1736 |
msgstr "Titulo"
|
1737 |
|
@@ -3973,6 +3979,12 @@ msgstr "Siguiente fecha de facturación"
|
|
3973 |
msgid "Deactivation date"
|
3974 |
msgstr "Fecha de desactivación"
|
3975 |
|
|
|
|
|
|
|
|
|
|
|
|
|
3976 |
msgid "Stripe activation was not completed"
|
3977 |
msgstr "La activación de Stripe no se ha completado"
|
3978 |
|
@@ -7191,9 +7203,6 @@ msgstr ""
|
|
7191 |
msgid "Skip"
|
7192 |
msgstr "Omitir"
|
7193 |
|
7194 |
-
msgid "Tasks"
|
7195 |
-
msgstr "Tareas"
|
7196 |
-
|
7197 |
msgid "Skip time selection"
|
7198 |
msgstr "Omitir selección de tiempo"
|
7199 |
|
@@ -8043,6 +8052,47 @@ msgstr ""
|
|
8043 |
"acceso</b> para mostrar un formulario para añadir un nuevo punto de acceso "
|
8044 |
"para recibir eventos."
|
8045 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8046 |
msgid "Set maximum value for Quantity field."
|
8047 |
msgstr "Establecer el valor máximo para el campo Cantidad."
|
8048 |
|
8 |
"Language: es_ES\n"
|
9 |
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
10 |
"Report-Msgid-Bugs-To: \n"
|
11 |
+
"POT-Creation-Date: 2020-12-28 10:39+0000\n"
|
12 |
+
"PO-Revision-Date: 2020-12-29 11:02+0000\n"
|
13 |
"Last-Translator: support@bookly.info\n"
|
14 |
"Language-Team: Spanish (Spain)\n"
|
15 |
"X-Loco-Version: 2.3.1; wp-5.5"
|
67 |
msgid "INVOICE"
|
68 |
msgstr "FACTURA"
|
69 |
|
70 |
+
msgid "Thank you for your business!"
|
71 |
+
msgstr "¡Le agradecemos su confianza!"
|
72 |
+
|
73 |
+
msgid "We really appreciate it"
|
74 |
+
msgstr "Lo apreciamos mucho"
|
75 |
|
76 |
msgid ""
|
77 |
"Invoices add-on requires your customers address information. So options "
|
157 |
msgid "N/A"
|
158 |
msgstr "N/A"
|
159 |
|
160 |
+
msgid "Discount"
|
161 |
+
msgstr "Descuento"
|
162 |
+
|
163 |
msgid "Subtotal"
|
164 |
msgstr "Subtotal"
|
165 |
|
178 |
msgid "Due"
|
179 |
msgstr "Debido"
|
180 |
|
|
|
|
|
|
|
181 |
msgid "Outlook Calendar event"
|
182 |
msgstr "Evento del calendario de Outlook"
|
183 |
|
1735 |
msgid "API Transaction Key"
|
1736 |
msgstr "Clave de Transacción API"
|
1737 |
|
1738 |
+
msgid "ID"
|
1739 |
+
msgstr "ID"
|
1740 |
+
|
1741 |
msgid "Title"
|
1742 |
msgstr "Titulo"
|
1743 |
|
3979 |
msgid "Deactivation date"
|
3980 |
msgstr "Fecha de desactivación"
|
3981 |
|
3982 |
+
msgid "Tasks"
|
3983 |
+
msgstr "Tareas"
|
3984 |
+
|
3985 |
+
msgid "unlimited in trial"
|
3986 |
+
msgstr "prueba ilimitada"
|
3987 |
+
|
3988 |
msgid "Stripe activation was not completed"
|
3989 |
msgstr "La activación de Stripe no se ha completado"
|
3990 |
|
7203 |
msgid "Skip"
|
7204 |
msgstr "Omitir"
|
7205 |
|
|
|
|
|
|
|
7206 |
msgid "Skip time selection"
|
7207 |
msgstr "Omitir selección de tiempo"
|
7208 |
|
8052 |
"acceso</b> para mostrar un formulario para añadir un nuevo punto de acceso "
|
8053 |
"para recibir eventos."
|
8054 |
|
8055 |
+
msgid "Condition"
|
8056 |
+
msgstr "Condición"
|
8057 |
+
|
8058 |
+
msgid "Discounts"
|
8059 |
+
msgstr "Descuentos"
|
8060 |
+
|
8061 |
+
msgid "number of persons"
|
8062 |
+
msgstr "número de personas"
|
8063 |
+
|
8064 |
+
msgid "number of appointments"
|
8065 |
+
msgstr "número de citas"
|
8066 |
+
|
8067 |
+
msgid "Add discount"
|
8068 |
+
msgstr "Añadir descuento"
|
8069 |
+
|
8070 |
+
msgid "No discounts found."
|
8071 |
+
msgstr "No se encontraron descuentos."
|
8072 |
+
|
8073 |
+
#, php-format
|
8074 |
+
msgid "If %s equals or exceeds %s"
|
8075 |
+
msgstr "Si %s es igual o superior a %s"
|
8076 |
+
|
8077 |
+
msgid ""
|
8078 |
+
"Select if the discount is enabled and applied to the booking price if the "
|
8079 |
+
"conditions are met, or if it is disabled and not applied"
|
8080 |
+
msgstr ""
|
8081 |
+
"Seleccione si el descuento está habilitado y se aplica al precio de la "
|
8082 |
+
"reserva si se cumplen las condiciones, o si está deshabilitado y no se aplica"
|
8083 |
+
|
8084 |
+
msgid "Condition to apply the discount"
|
8085 |
+
msgstr "Condición para aplicar el descuento"
|
8086 |
+
|
8087 |
+
msgid "and the service is one of the selected"
|
8088 |
+
msgstr "y el servicio es uno de los seleccionados"
|
8089 |
+
|
8090 |
+
msgid "New discount"
|
8091 |
+
msgstr "Nuevo descuento"
|
8092 |
+
|
8093 |
+
msgid "Edit discount"
|
8094 |
+
msgstr "Editar descuento"
|
8095 |
+
|
8096 |
msgid "Set maximum value for Quantity field."
|
8097 |
msgstr "Establecer el valor máximo para el campo Cantidad."
|
8098 |
|
languages/bookly-fr_FR.mo
CHANGED
Binary file
|
languages/bookly-fr_FR.po
CHANGED
@@ -8,8 +8,8 @@ msgstr ""
|
|
8 |
"Language: fr_FR\n"
|
9 |
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
10 |
"Report-Msgid-Bugs-To: \n"
|
11 |
-
"POT-Creation-Date: 2020-
|
12 |
-
"PO-Revision-Date: 2020-
|
13 |
"Last-Translator: Mathilde Massardier <mathilde.mass@icloud.com>\n"
|
14 |
"Language-Team: French (France)\n"
|
15 |
"X-Loco-Version: 2.3.1; wp-5.5"
|
@@ -69,8 +69,11 @@ msgstr "Date de paiement"
|
|
69 |
msgid "INVOICE"
|
70 |
msgstr "FACTURE"
|
71 |
|
72 |
-
msgid "Thank you for your business"
|
73 |
-
msgstr "Merci pour votre
|
|
|
|
|
|
|
74 |
|
75 |
msgid ""
|
76 |
"Invoices add-on requires your customers address information. So options "
|
@@ -154,6 +157,9 @@ msgstr "Taxe"
|
|
154 |
msgid "N/A"
|
155 |
msgstr "N/A"
|
156 |
|
|
|
|
|
|
|
157 |
msgid "Subtotal"
|
158 |
msgstr "Sous-total"
|
159 |
|
@@ -172,9 +178,6 @@ msgstr "Payé"
|
|
172 |
msgid "Due"
|
173 |
msgstr "A payer"
|
174 |
|
175 |
-
msgid "Discount"
|
176 |
-
msgstr "Remise"
|
177 |
-
|
178 |
msgid "Outlook Calendar event"
|
179 |
msgstr "Évènement Outlook Calendar "
|
180 |
|
@@ -1722,6 +1725,9 @@ msgstr "ID de connexion de l'API"
|
|
1722 |
msgid "API Transaction Key"
|
1723 |
msgstr "Clé de Transaction de l'API"
|
1724 |
|
|
|
|
|
|
|
1725 |
msgid "Title"
|
1726 |
msgstr "Titre"
|
1727 |
|
@@ -3957,6 +3963,12 @@ msgstr "Prochaine date de facturation"
|
|
3957 |
msgid "Deactivation date"
|
3958 |
msgstr "Date de désactivation"
|
3959 |
|
|
|
|
|
|
|
|
|
|
|
|
|
3960 |
msgid "Stripe activation was not completed"
|
3961 |
msgstr "L'activation de Stripe n'est pas terminée"
|
3962 |
|
@@ -7165,9 +7177,6 @@ msgstr ""
|
|
7165 |
msgid "Skip"
|
7166 |
msgstr "Passer"
|
7167 |
|
7168 |
-
msgid "Tasks"
|
7169 |
-
msgstr "Tâches"
|
7170 |
-
|
7171 |
msgid "Skip time selection"
|
7172 |
msgstr "Passer la sélection du temps"
|
7173 |
|
@@ -8010,6 +8019,47 @@ msgstr ""
|
|
8010 |
"formulaire qui permet d'ajouter un nouvel enpoint pour les événements "
|
8011 |
"entrants."
|
8012 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8013 |
msgid "Set maximum value for Quantity field."
|
8014 |
msgstr "Définir une valeur maximale pour le champ Quantité."
|
8015 |
|
8 |
"Language: fr_FR\n"
|
9 |
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
10 |
"Report-Msgid-Bugs-To: \n"
|
11 |
+
"POT-Creation-Date: 2020-12-28 11:04+0000\n"
|
12 |
+
"PO-Revision-Date: 2020-12-28 11:04+0000\n"
|
13 |
"Last-Translator: Mathilde Massardier <mathilde.mass@icloud.com>\n"
|
14 |
"Language-Team: French (France)\n"
|
15 |
"X-Loco-Version: 2.3.1; wp-5.5"
|
69 |
msgid "INVOICE"
|
70 |
msgstr "FACTURE"
|
71 |
|
72 |
+
msgid "Thank you for your business!"
|
73 |
+
msgstr "Merci pour votre entreprise !"
|
74 |
+
|
75 |
+
msgid "We really appreciate it"
|
76 |
+
msgstr "Nous apprécions beaucoup"
|
77 |
|
78 |
msgid ""
|
79 |
"Invoices add-on requires your customers address information. So options "
|
157 |
msgid "N/A"
|
158 |
msgstr "N/A"
|
159 |
|
160 |
+
msgid "Discount"
|
161 |
+
msgstr "Remise"
|
162 |
+
|
163 |
msgid "Subtotal"
|
164 |
msgstr "Sous-total"
|
165 |
|
178 |
msgid "Due"
|
179 |
msgstr "A payer"
|
180 |
|
|
|
|
|
|
|
181 |
msgid "Outlook Calendar event"
|
182 |
msgstr "Évènement Outlook Calendar "
|
183 |
|
1725 |
msgid "API Transaction Key"
|
1726 |
msgstr "Clé de Transaction de l'API"
|
1727 |
|
1728 |
+
msgid "ID"
|
1729 |
+
msgstr "ID"
|
1730 |
+
|
1731 |
msgid "Title"
|
1732 |
msgstr "Titre"
|
1733 |
|
3963 |
msgid "Deactivation date"
|
3964 |
msgstr "Date de désactivation"
|
3965 |
|
3966 |
+
msgid "Tasks"
|
3967 |
+
msgstr "Tâches"
|
3968 |
+
|
3969 |
+
msgid "unlimited in trial"
|
3970 |
+
msgstr "illimité pendant l'essai"
|
3971 |
+
|
3972 |
msgid "Stripe activation was not completed"
|
3973 |
msgstr "L'activation de Stripe n'est pas terminée"
|
3974 |
|
7177 |
msgid "Skip"
|
7178 |
msgstr "Passer"
|
7179 |
|
|
|
|
|
|
|
7180 |
msgid "Skip time selection"
|
7181 |
msgstr "Passer la sélection du temps"
|
7182 |
|
8019 |
"formulaire qui permet d'ajouter un nouvel enpoint pour les événements "
|
8020 |
"entrants."
|
8021 |
|
8022 |
+
msgid "Condition"
|
8023 |
+
msgstr "Condition"
|
8024 |
+
|
8025 |
+
msgid "Discounts"
|
8026 |
+
msgstr "Remise"
|
8027 |
+
|
8028 |
+
msgid "number of persons"
|
8029 |
+
msgstr "nombre de personnes"
|
8030 |
+
|
8031 |
+
msgid "number of appointments"
|
8032 |
+
msgstr "nombre de rendez-vous"
|
8033 |
+
|
8034 |
+
msgid "Add discount"
|
8035 |
+
msgstr "Ajouter la remise"
|
8036 |
+
|
8037 |
+
msgid "No discounts found."
|
8038 |
+
msgstr "Aucune remise trouvée."
|
8039 |
+
|
8040 |
+
#, php-format
|
8041 |
+
msgid "If %s equals or exceeds %s"
|
8042 |
+
msgstr "Si %s est égal ou supérieur à %s"
|
8043 |
+
|
8044 |
+
msgid ""
|
8045 |
+
"Select if the discount is enabled and applied to the booking price if the "
|
8046 |
+
"conditions are met, or if it is disabled and not applied"
|
8047 |
+
msgstr ""
|
8048 |
+
"Sélectionnez si la remise est activée et appliquée au prix de la réservation "
|
8049 |
+
"si les conditions sont remplies, ou si elle est désactivée et non appliquée"
|
8050 |
+
|
8051 |
+
msgid "Condition to apply the discount"
|
8052 |
+
msgstr "Conditions d'application de la remise"
|
8053 |
+
|
8054 |
+
msgid "and the service is one of the selected"
|
8055 |
+
msgstr "et le service est l'un des services sélectionnés"
|
8056 |
+
|
8057 |
+
msgid "New discount"
|
8058 |
+
msgstr "Nouvelle remise "
|
8059 |
+
|
8060 |
+
msgid "Edit discount"
|
8061 |
+
msgstr "Editer la remise"
|
8062 |
+
|
8063 |
msgid "Set maximum value for Quantity field."
|
8064 |
msgstr "Définir une valeur maximale pour le champ Quantité."
|
8065 |
|
languages/bookly-it_IT.mo
CHANGED
Binary file
|
languages/bookly-it_IT.po
CHANGED
@@ -8,287 +8,466 @@ msgstr ""
|
|
8 |
"Language: it_IT\n"
|
9 |
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
10 |
"Report-Msgid-Bugs-To: \n"
|
11 |
-
"POT-Creation-Date: 2020-09
|
12 |
-
"PO-Revision-Date: 2020-09
|
13 |
"Last-Translator: support@bookly.info\n"
|
14 |
"Language-Team: Italian\n"
|
15 |
-
"X-Loco-Version: 2.3.1; wp-5.
|
16 |
|
17 |
-
msgid "
|
18 |
-
msgstr "
|
19 |
-
|
20 |
-
msgid "Settings saved."
|
21 |
-
msgstr "Impostazioni salvate."
|
22 |
-
|
23 |
-
msgid "The requested interval is not available"
|
24 |
-
msgstr "L'intervallo richiesto non è disponibile"
|
25 |
-
|
26 |
-
msgid "Schedule"
|
27 |
-
msgstr "Pianifica"
|
28 |
|
29 |
-
msgid "
|
30 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
31 |
|
32 |
-
msgid "
|
33 |
-
msgstr "
|
34 |
|
35 |
-
msgid "
|
36 |
-
|
|
|
|
|
|
|
|
|
37 |
|
38 |
-
msgid "
|
39 |
-
msgstr "
|
40 |
|
41 |
-
msgid "
|
42 |
-
msgstr "
|
43 |
|
44 |
-
msgid "
|
45 |
-
msgstr "
|
46 |
|
47 |
-
msgid "
|
48 |
-
msgstr "
|
49 |
|
50 |
-
msgid "
|
51 |
-
msgstr "
|
52 |
|
53 |
-
msgid "
|
54 |
-
msgstr "
|
55 |
|
56 |
msgid ""
|
57 |
-
"
|
|
|
|
|
|
|
58 |
msgstr ""
|
59 |
-
"Questo testo può essere inserito nelle notifiche ai clienti "
|
60 |
-
"dall'amministratore."
|
61 |
-
|
62 |
-
msgid "Visibility"
|
63 |
-
msgstr "Visibilità"
|
64 |
|
65 |
-
msgid ""
|
66 |
-
"If you want to become invisible to your customers set the visibility to "
|
67 |
-
"\"Private\"."
|
68 |
msgstr ""
|
69 |
-
"Se vuoi diventare invisibile ai tuoi clienti imposta la visibilità a "
|
70 |
-
"\"Privata\"."
|
71 |
|
72 |
-
msgid "
|
73 |
-
msgstr "
|
74 |
|
75 |
-
msgid "
|
76 |
-
msgstr "
|
77 |
|
78 |
-
msgid "
|
79 |
-
msgstr "
|
80 |
|
81 |
-
msgid "
|
82 |
-
msgstr "
|
83 |
|
84 |
-
msgid "
|
85 |
-
msgstr "
|
86 |
|
87 |
-
msgid "
|
88 |
-
msgstr "
|
89 |
|
90 |
-
msgid "
|
91 |
-
msgstr "
|
92 |
|
93 |
-
msgid "
|
94 |
-
msgstr "
|
95 |
|
96 |
-
msgid "
|
97 |
-
msgstr "
|
98 |
|
99 |
-
msgid "
|
100 |
-
msgstr "
|
101 |
|
102 |
-
msgid "
|
103 |
-
msgstr "
|
104 |
|
105 |
-
msgid "
|
106 |
-
msgstr "
|
107 |
|
108 |
-
msgid "
|
109 |
-
msgstr "
|
110 |
|
111 |
-
msgid "
|
112 |
-
msgstr "
|
113 |
|
114 |
-
msgid "
|
115 |
-
|
|
|
|
|
116 |
|
117 |
msgid "Service"
|
118 |
msgstr "Servizio"
|
119 |
|
120 |
-
msgid "
|
121 |
-
msgstr "
|
122 |
|
123 |
-
msgid "
|
124 |
-
msgstr "
|
125 |
|
126 |
-
msgid "
|
127 |
-
msgstr "
|
128 |
|
129 |
-
|
130 |
-
|
131 |
-
msgstr "%s di %s"
|
132 |
|
133 |
-
msgid "
|
134 |
-
msgstr "
|
135 |
|
136 |
-
msgid "
|
137 |
-
msgstr "
|
138 |
|
139 |
-
msgid "
|
140 |
-
msgstr "
|
141 |
|
142 |
-
msgid "
|
143 |
-
msgstr "
|
144 |
|
145 |
-
msgid "
|
146 |
-
msgstr "
|
147 |
|
148 |
-
msgid "
|
149 |
-
msgstr "
|
150 |
|
151 |
-
msgid "
|
152 |
-
msgstr "
|
153 |
|
154 |
-
msgid "
|
155 |
-
msgstr "
|
156 |
|
157 |
-
msgid "
|
158 |
msgstr ""
|
159 |
|
160 |
-
msgid "
|
161 |
-
msgstr "
|
162 |
|
163 |
-
msgid "
|
164 |
-
msgstr "
|
165 |
|
166 |
-
msgid "
|
167 |
-
msgstr "
|
|
|
|
|
|
|
168 |
|
169 |
msgid ""
|
170 |
-
"Your
|
171 |
-
"
|
|
|
172 |
msgstr ""
|
173 |
|
174 |
-
msgid "
|
175 |
-
msgstr "Non hai i permessi per vedere questo contenuto"
|
176 |
-
|
177 |
-
msgid "Calendar"
|
178 |
-
msgstr "Calendario"
|
179 |
-
|
180 |
-
msgid "A custom block for displaying staff calendar"
|
181 |
msgstr ""
|
182 |
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
msgstr ""
|
188 |
|
189 |
-
msgid "
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
msgstr ""
|
194 |
|
195 |
-
msgid "
|
|
|
|
|
196 |
msgstr ""
|
197 |
|
198 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
199 |
msgstr ""
|
200 |
|
201 |
-
msgid "
|
|
|
|
|
202 |
msgstr ""
|
203 |
|
204 |
-
msgid "
|
205 |
-
|
206 |
-
|
207 |
-
msgid "A custom block for displaying staff days off"
|
208 |
msgstr ""
|
209 |
|
210 |
-
msgid "
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
|
|
215 |
|
216 |
-
msgid "
|
217 |
-
|
|
|
|
|
|
|
|
|
218 |
|
219 |
-
msgid "
|
220 |
msgstr ""
|
221 |
|
222 |
msgid ""
|
223 |
-
"
|
224 |
-
"
|
225 |
msgstr ""
|
|
|
|
|
226 |
|
227 |
-
msgid "
|
228 |
msgstr ""
|
229 |
|
230 |
-
msgid "
|
231 |
msgstr ""
|
232 |
|
233 |
-
msgid "
|
234 |
msgstr ""
|
235 |
|
236 |
-
msgid "
|
237 |
-
|
|
|
|
|
238 |
|
239 |
-
msgid "
|
240 |
-
msgstr "
|
241 |
|
242 |
-
msgid "
|
243 |
-
|
|
|
244 |
|
245 |
-
msgid "
|
246 |
-
msgstr "
|
247 |
|
248 |
-
msgid "
|
249 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
250 |
|
251 |
-
msgid "
|
252 |
-
msgstr "
|
253 |
|
254 |
-
msgid "
|
255 |
-
msgstr "
|
256 |
|
257 |
-
msgid "
|
258 |
-
msgstr "
|
259 |
|
260 |
-
msgid "
|
261 |
-
msgstr "
|
262 |
|
263 |
-
msgid "
|
264 |
-
|
|
|
|
|
|
|
265 |
|
266 |
-
msgid "
|
267 |
-
msgstr "
|
268 |
|
269 |
-
msgid "
|
270 |
-
|
|
|
|
|
|
|
271 |
|
272 |
-
msgid "
|
273 |
-
msgstr "
|
274 |
|
275 |
-
msgid "
|
276 |
-
|
|
|
|
|
|
|
277 |
|
278 |
-
msgid "
|
279 |
-
msgstr "
|
|
|
|
|
|
|
|
|
|
|
280 |
|
281 |
-
msgid "
|
282 |
-
msgstr "
|
283 |
|
284 |
-
msgid "
|
285 |
msgstr ""
|
286 |
|
287 |
-
msgid "
|
288 |
msgstr ""
|
289 |
-
"valori combinati di tutti i campi personalizzati (formattati in 2 colonne)"
|
290 |
|
291 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
292 |
msgstr ""
|
293 |
|
294 |
msgid "Bind fields to services"
|
@@ -329,6 +508,9 @@ msgstr "Gruppo di caselle di scelta"
|
|
329 |
msgid "Drop Down"
|
330 |
msgstr "Menu a scomparsa"
|
331 |
|
|
|
|
|
|
|
332 |
msgid "HTML allowed in all texts and labels."
|
333 |
msgstr "HTML consentito in tutti i testi e le etichette."
|
334 |
|
@@ -356,59 +538,84 @@ msgstr "Opzione"
|
|
356 |
msgid "Remove item"
|
357 |
msgstr "Rimuovi elemento"
|
358 |
|
|
|
|
|
|
|
359 |
msgid "No service selected"
|
360 |
msgstr "Nessun servizio selezionato"
|
361 |
|
362 |
-
msgid "
|
363 |
msgstr ""
|
364 |
|
365 |
-
msgid "
|
366 |
msgstr ""
|
367 |
|
368 |
-
msgid "
|
369 |
msgstr ""
|
370 |
|
371 |
-
msgid "
|
372 |
-
msgstr "
|
373 |
|
374 |
-
msgid "
|
375 |
msgstr ""
|
376 |
|
377 |
-
msgid "
|
378 |
-
msgstr ""
|
379 |
|
380 |
-
msgid "
|
381 |
-
|
382 |
-
|
383 |
-
|
384 |
-
|
385 |
-
|
386 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
387 |
msgstr ""
|
388 |
|
389 |
-
msgid "Notification to
|
390 |
msgstr ""
|
391 |
|
392 |
-
msgid "
|
393 |
-
msgstr ""
|
394 |
|
395 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
396 |
msgstr ""
|
397 |
|
398 |
-
msgid "Notification to
|
399 |
msgstr ""
|
400 |
|
401 |
-
msgid "
|
402 |
-
msgstr "
|
403 |
-
|
404 |
-
msgid "Your package at {company_name}"
|
405 |
-
msgstr ""
|
406 |
|
407 |
msgid ""
|
408 |
"Dear {client_name}.\n"
|
409 |
"\n"
|
410 |
-
"
|
411 |
-
"
|
|
|
|
|
|
|
|
|
|
|
412 |
"\n"
|
413 |
"Thank you for choosing our company.\n"
|
414 |
"\n"
|
@@ -417,75 +624,121 @@ msgid ""
|
|
417 |
"{company_website}"
|
418 |
msgstr ""
|
419 |
|
420 |
-
msgid "
|
421 |
msgstr ""
|
422 |
|
423 |
msgid ""
|
424 |
"Hello.\n"
|
425 |
"\n"
|
426 |
-
"
|
427 |
"\n"
|
428 |
-
"
|
429 |
"\n"
|
|
|
|
|
|
|
430 |
"Client name: {client_name}\n"
|
431 |
-
"\n"
|
432 |
"Client phone: {client_phone}\n"
|
433 |
-
"\n"
|
434 |
"Client email: {client_email}"
|
435 |
msgstr ""
|
436 |
|
|
|
|
|
|
|
|
|
|
|
|
|
437 |
msgid ""
|
438 |
"Dear {client_name}.\n"
|
439 |
-
"
|
440 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
441 |
"Thank you for choosing our company.\n"
|
|
|
442 |
"{company_name}\n"
|
443 |
"{company_phone}\n"
|
444 |
"{company_website}"
|
445 |
msgstr ""
|
446 |
|
|
|
|
|
|
|
447 |
msgid ""
|
448 |
"Hello.\n"
|
449 |
-
"
|
450 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
451 |
"Client name: {client_name}\n"
|
452 |
"Client phone: {client_phone}\n"
|
453 |
"Client email: {client_email}"
|
454 |
msgstr ""
|
455 |
|
456 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
457 |
msgstr ""
|
458 |
|
459 |
msgid ""
|
460 |
"Dear {client_name}.\n"
|
461 |
"\n"
|
462 |
-
"
|
|
|
|
|
|
|
|
|
|
|
463 |
"\n"
|
464 |
"Thank you for choosing our company.\n"
|
465 |
"\n"
|
466 |
-
"If you have any questions, please contact us.\n"
|
467 |
"{company_name}\n"
|
468 |
"{company_phone}\n"
|
469 |
"{company_website}"
|
470 |
msgstr ""
|
471 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
472 |
msgid ""
|
473 |
"Hello.\n"
|
474 |
"\n"
|
475 |
-
"
|
476 |
"\n"
|
|
|
|
|
|
|
477 |
"Client name: {client_name}\n"
|
478 |
-
"\n"
|
479 |
"Client phone: {client_phone}\n"
|
480 |
-
"\n"
|
481 |
"Client email: {client_email}"
|
482 |
msgstr ""
|
483 |
|
484 |
msgid ""
|
485 |
"Dear {client_name}.\n"
|
486 |
-
"
|
|
|
|
|
|
|
|
|
|
|
487 |
"Thank you for choosing our company.\n"
|
488 |
-
"If you have any questions, please contact us.\n"
|
489 |
"{company_name}\n"
|
490 |
"{company_phone}\n"
|
491 |
"{company_website}"
|
@@ -493,1482 +746,1243 @@ msgstr ""
|
|
493 |
|
494 |
msgid ""
|
495 |
"Hello.\n"
|
496 |
-
"
|
|
|
|
|
|
|
497 |
"Client name: {client_name}\n"
|
498 |
"Client phone: {client_phone}\n"
|
499 |
"Client email: {client_email}"
|
500 |
msgstr ""
|
501 |
|
502 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
503 |
msgstr ""
|
504 |
|
505 |
-
msgid "
|
506 |
msgstr ""
|
507 |
|
508 |
-
msgid "
|
509 |
-
|
510 |
-
|
511 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
512 |
msgstr ""
|
513 |
|
514 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
515 |
msgstr ""
|
516 |
|
517 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
518 |
msgstr ""
|
519 |
|
520 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
521 |
msgstr ""
|
522 |
|
523 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
524 |
msgstr ""
|
525 |
|
526 |
-
msgid "
|
527 |
msgstr ""
|
528 |
|
529 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
530 |
msgstr ""
|
531 |
|
532 |
-
msgid "
|
533 |
-
msgstr "
|
534 |
|
535 |
-
msgid "
|
536 |
msgstr ""
|
537 |
|
538 |
-
msgid "
|
539 |
-
msgstr "
|
540 |
|
541 |
-
msgid "
|
542 |
-
msgstr "
|
543 |
|
544 |
-
msgid ""
|
545 |
-
"Enable this setting so that the package can be displayed and available for "
|
546 |
-
"booking when clients have not specified a particular provider."
|
547 |
msgstr ""
|
548 |
|
549 |
-
msgid "
|
550 |
msgstr ""
|
551 |
|
552 |
-
msgid "
|
553 |
msgstr ""
|
554 |
|
555 |
-
msgid "
|
|
|
|
|
556 |
msgstr ""
|
557 |
|
558 |
-
msgid "
|
559 |
msgstr ""
|
560 |
|
561 |
-
msgid "
|
562 |
-
msgstr "
|
563 |
-
|
564 |
-
msgid "No result found"
|
565 |
-
msgstr "Nessun risultato trovato"
|
566 |
|
567 |
-
msgid "
|
568 |
msgstr ""
|
569 |
|
570 |
-
msgid "
|
571 |
-
msgstr "
|
572 |
|
573 |
-
msgid "
|
574 |
-
msgstr "
|
575 |
|
576 |
-
msgid "
|
577 |
msgstr ""
|
578 |
|
579 |
-
msgid "
|
|
|
|
|
580 |
msgstr ""
|
581 |
|
582 |
-
msgid "
|
583 |
msgstr ""
|
584 |
|
585 |
-
msgid "
|
586 |
-
msgstr "
|
587 |
|
588 |
-
msgid ""
|
589 |
-
"Select service provider to see the packages provided. Or select unassigned "
|
590 |
-
"package to see packages with no particular provider."
|
591 |
msgstr ""
|
592 |
|
593 |
-
msgid "
|
594 |
msgstr ""
|
595 |
|
596 |
-
msgid "
|
597 |
msgstr ""
|
598 |
|
599 |
-
msgid "
|
600 |
-
msgstr "
|
601 |
|
602 |
-
msgid "
|
603 |
msgstr ""
|
604 |
|
605 |
-
msgid "
|
606 |
-
msgstr "
|
607 |
|
608 |
-
msgid "
|
609 |
-
msgstr "
|
610 |
|
611 |
-
msgid "
|
612 |
-
msgstr "
|
613 |
|
614 |
-
msgid "
|
615 |
msgstr ""
|
616 |
|
617 |
-
msgid "
|
618 |
-
msgstr "
|
619 |
-
|
620 |
-
msgid "Send notifications"
|
621 |
-
msgstr "Invia notifiche"
|
622 |
|
623 |
-
msgid "
|
624 |
msgstr ""
|
625 |
|
626 |
msgid ""
|
627 |
-
"
|
628 |
-
"
|
629 |
msgstr ""
|
630 |
|
631 |
-
msgid "
|
632 |
msgstr ""
|
633 |
|
634 |
-
msgid "
|
635 |
msgstr ""
|
636 |
|
637 |
-
msgid "
|
638 |
msgstr ""
|
639 |
|
640 |
-
msgid ""
|
641 |
-
"Unfortunately, you're not able to cancel the appointment because the "
|
642 |
-
"required time limit prior to canceling has expired."
|
643 |
msgstr ""
|
644 |
|
645 |
-
msgid ""
|
646 |
-
"Unfortunately, you're not able to book an appointment because the required "
|
647 |
-
"time limit prior to booking has expired."
|
648 |
msgstr ""
|
649 |
|
650 |
-
msgid ""
|
651 |
-
"You are trying to schedule an appointment in the past. Please select another "
|
652 |
-
"time slot."
|
653 |
msgstr ""
|
654 |
|
655 |
-
msgid "
|
656 |
msgstr ""
|
657 |
|
658 |
-
msgid "
|
659 |
msgstr ""
|
660 |
|
661 |
-
msgid "
|
662 |
msgstr ""
|
663 |
|
664 |
-
msgid "
|
665 |
msgstr ""
|
666 |
|
667 |
-
msgid "
|
668 |
msgstr ""
|
669 |
|
670 |
-
msgid "
|
671 |
-
|
672 |
-
|
673 |
-
msgid "Rate"
|
674 |
msgstr ""
|
675 |
|
676 |
-
msgid "
|
677 |
msgstr ""
|
678 |
|
679 |
-
msgid "
|
|
|
|
|
680 |
msgstr ""
|
681 |
|
682 |
-
msgid "
|
683 |
-
msgstr ""
|
684 |
|
685 |
-
msgid "
|
686 |
-
msgstr ""
|
687 |
|
688 |
-
msgid "
|
689 |
msgstr ""
|
690 |
|
691 |
-
msgid "
|
692 |
msgstr ""
|
693 |
|
694 |
-
msgid "
|
695 |
msgstr ""
|
696 |
|
697 |
-
msgid "
|
698 |
msgstr ""
|
699 |
|
700 |
-
msgid "
|
701 |
msgstr ""
|
702 |
|
703 |
-
msgid "
|
704 |
-
msgstr "Tutti"
|
705 |
-
|
706 |
-
msgid "Nothing selected"
|
707 |
msgstr ""
|
708 |
|
709 |
-
msgid "
|
|
|
|
|
|
|
710 |
msgstr ""
|
711 |
|
712 |
msgid ""
|
713 |
-
"
|
714 |
-
"
|
715 |
msgstr ""
|
716 |
|
717 |
-
msgid "
|
718 |
msgstr ""
|
719 |
|
720 |
-
msgid "
|
721 |
msgstr ""
|
722 |
|
723 |
-
msgid "
|
724 |
-
msgstr ""
|
725 |
|
726 |
-
msgid ""
|
727 |
-
"This setting affects the cost of the booking according to the payment "
|
728 |
-
"gateway used. Specify a percentage or fixed amount. Use minus (\"-\") sign "
|
729 |
-
"for decrease/discount. Note that tax will not be calculated for the "
|
730 |
-
"additional amount to the cost. If you need to report the exact tax amount to "
|
731 |
-
"the payment system, do not use additional charge."
|
732 |
msgstr ""
|
733 |
|
734 |
-
msgid "
|
735 |
-
msgstr "
|
736 |
|
737 |
-
msgid "
|
738 |
-
msgstr "
|
739 |
|
740 |
-
msgid "
|
741 |
-
msgstr "
|
742 |
|
743 |
-
msgid "
|
744 |
-
msgstr "
|
745 |
|
746 |
-
msgid "
|
747 |
msgstr ""
|
748 |
|
749 |
-
msgid "
|
750 |
msgstr ""
|
751 |
|
752 |
-
msgid "
|
753 |
msgstr ""
|
754 |
|
755 |
-
msgid "
|
756 |
msgstr ""
|
757 |
|
758 |
-
msgid "
|
759 |
msgstr ""
|
760 |
|
761 |
-
msgid "
|
762 |
-
msgstr "
|
763 |
|
764 |
-
msgid "
|
765 |
-
msgstr ""
|
766 |
|
767 |
-
msgid ""
|
768 |
-
|
769 |
-
|
770 |
-
|
|
|
|
|
|
|
771 |
msgstr ""
|
772 |
|
773 |
-
msgid "
|
774 |
msgstr ""
|
775 |
|
776 |
-
msgid ""
|
777 |
-
|
778 |
-
|
|
|
779 |
msgstr ""
|
780 |
|
781 |
-
msgid "
|
782 |
-
msgstr "
|
783 |
|
784 |
-
msgid "
|
785 |
-
msgstr "
|
786 |
|
787 |
-
msgid "
|
788 |
-
msgstr "
|
789 |
|
790 |
-
msgid "
|
791 |
-
msgstr ""
|
792 |
|
793 |
-
msgid "
|
794 |
-
msgstr ""
|
795 |
|
796 |
-
msgid "
|
797 |
msgstr ""
|
798 |
|
799 |
-
msgid "
|
800 |
msgstr ""
|
801 |
|
802 |
-
msgid "
|
803 |
-
msgstr ""
|
804 |
|
805 |
-
msgid "
|
806 |
msgstr ""
|
807 |
|
808 |
-
msgid "
|
809 |
-
msgstr "
|
810 |
|
811 |
-
msgid "
|
|
|
|
|
|
|
|
|
812 |
msgstr ""
|
813 |
|
814 |
-
msgid "
|
815 |
msgstr ""
|
816 |
|
817 |
-
msgid "
|
818 |
msgstr ""
|
819 |
|
820 |
-
msgid "
|
821 |
msgstr ""
|
822 |
|
823 |
-
msgid "
|
824 |
msgstr ""
|
825 |
|
826 |
-
msgid "
|
827 |
msgstr ""
|
828 |
|
829 |
-
msgid "
|
830 |
-
msgstr ""
|
831 |
|
832 |
-
msgid "
|
833 |
-
msgstr ""
|
834 |
|
835 |
-
msgid "
|
836 |
msgstr ""
|
837 |
|
838 |
-
msgid "
|
839 |
msgstr ""
|
840 |
|
841 |
-
msgid "
|
842 |
-
msgstr ""
|
843 |
|
844 |
-
msgid "
|
845 |
-
msgstr ""
|
846 |
|
847 |
-
msgid "
|
848 |
msgstr ""
|
849 |
|
850 |
-
msgid "
|
851 |
-
msgstr ""
|
852 |
-
|
853 |
-
msgid "After Time step (Extras duration settings will be ignored)"
|
854 |
-
msgstr ""
|
855 |
-
|
856 |
-
msgid "Show"
|
857 |
-
msgstr ""
|
858 |
|
859 |
-
msgid "
|
860 |
-
msgstr ""
|
861 |
|
862 |
-
msgid ""
|
863 |
-
"Dear {client_name}.\n"
|
864 |
-
"\n"
|
865 |
-
"Attached please find invoice #{invoice_number} for your appointment.\n"
|
866 |
-
"\n"
|
867 |
-
"Thank you for choosing our company.\n"
|
868 |
-
"\n"
|
869 |
-
"{company_name}\n"
|
870 |
-
"{company_phone}\n"
|
871 |
-
"{company_website}"
|
872 |
msgstr ""
|
873 |
|
874 |
-
msgid "
|
875 |
-
msgstr ""
|
876 |
|
877 |
-
msgid ""
|
878 |
-
"
|
879 |
-
"You have a new invoice #{invoice_number} for an appointment scheduled by "
|
880 |
-
"{client_first_name} {client_last_name}.\n"
|
881 |
-
"Please download invoice here: {invoice_link}"
|
882 |
-
msgstr ""
|
883 |
|
884 |
-
msgid "
|
885 |
-
msgstr ""
|
886 |
|
887 |
-
msgid "
|
888 |
msgstr ""
|
889 |
|
890 |
-
msgid "
|
891 |
-
msgstr "Data"
|
892 |
-
|
893 |
-
msgid "Due date"
|
894 |
msgstr ""
|
895 |
|
896 |
-
msgid "
|
897 |
msgstr ""
|
898 |
|
899 |
-
msgid "
|
900 |
msgstr ""
|
901 |
|
902 |
-
msgid "
|
903 |
msgstr ""
|
904 |
|
905 |
-
msgid "
|
906 |
msgstr ""
|
907 |
|
908 |
-
msgid "
|
909 |
msgstr ""
|
910 |
|
911 |
-
msgid "
|
|
|
|
|
|
|
912 |
msgstr ""
|
913 |
|
914 |
-
msgid "
|
915 |
-
msgstr ""
|
916 |
|
917 |
-
msgid "
|
918 |
-
msgstr ""
|
919 |
|
920 |
-
msgid "
|
921 |
-
msgstr ""
|
922 |
|
923 |
-
msgid "
|
924 |
msgstr ""
|
925 |
|
926 |
-
msgid ""
|
927 |
-
"
|
928 |
-
"\"Make address field mandatory\" in Settings/Customers and \"Show address "
|
929 |
-
"field\" in Appearance/Details are activated automatically and can be "
|
930 |
-
"disabled after Invoices add-on is deactivated."
|
931 |
-
msgstr ""
|
932 |
|
933 |
-
msgid "
|
934 |
-
msgstr ""
|
935 |
|
936 |
-
msgid "
|
937 |
-
msgstr ""
|
938 |
|
939 |
-
msgid "
|
|
|
|
|
940 |
msgstr ""
|
941 |
|
942 |
-
msgid "
|
943 |
-
msgstr ""
|
944 |
|
945 |
-
msgid "
|
946 |
-
msgstr ""
|
947 |
|
948 |
-
msgid "
|
949 |
-
msgstr ""
|
950 |
|
951 |
-
msgid ""
|
952 |
-
|
953 |
-
"365."
|
954 |
-
msgstr ""
|
955 |
|
956 |
-
msgid "
|
957 |
-
msgstr "
|
958 |
|
959 |
-
msgid "
|
960 |
msgstr ""
|
961 |
|
962 |
-
msgid "
|
963 |
-
msgstr "
|
964 |
|
965 |
-
msgid "
|
966 |
msgstr ""
|
967 |
|
968 |
-
msgid "
|
969 |
msgstr ""
|
970 |
|
971 |
-
msgid "
|
972 |
msgstr ""
|
973 |
|
974 |
-
msgid "
|
975 |
-
msgstr "
|
976 |
-
|
977 |
-
msgid "Due"
|
978 |
-
msgstr "Dovuto"
|
979 |
|
980 |
-
msgid "
|
981 |
msgstr ""
|
982 |
|
983 |
-
msgid "
|
984 |
msgstr ""
|
985 |
|
986 |
-
msgid "
|
987 |
msgstr ""
|
988 |
|
989 |
-
msgid "
|
990 |
msgstr ""
|
991 |
|
992 |
-
msgid ""
|
993 |
-
"
|
994 |
-
"with \"(N)\", where N is a number of customers on the waiting list."
|
995 |
-
msgstr ""
|
996 |
|
997 |
-
msgid "
|
998 |
msgstr ""
|
999 |
|
1000 |
-
msgid "
|
1001 |
-
msgstr ""
|
1002 |
|
1003 |
-
msgid ""
|
1004 |
-
"Dear {client_name}.\n"
|
1005 |
-
"\n"
|
1006 |
-
"This is a confirmation that you have been added to the waiting list for "
|
1007 |
-
"{service_name} on {appointment_date} at {appointment_time}.\n"
|
1008 |
-
"\n"
|
1009 |
-
"Thank you for choosing our company.\n"
|
1010 |
-
"\n"
|
1011 |
-
"{company_name}\n"
|
1012 |
-
"{company_phone}\n"
|
1013 |
-
"{company_website}"
|
1014 |
msgstr ""
|
1015 |
|
1016 |
-
msgid "
|
1017 |
msgstr ""
|
1018 |
|
1019 |
-
msgid ""
|
1020 |
-
"Hello.\n"
|
1021 |
-
"\n"
|
1022 |
-
"You have new customer in the waiting list.\n"
|
1023 |
-
"\n"
|
1024 |
-
"Service: {service_name}\n"
|
1025 |
-
"Date: {appointment_date}\n"
|
1026 |
-
"Time: {appointment_time}\n"
|
1027 |
-
"Client name: {client_name}\n"
|
1028 |
-
"Client phone: {client_phone}\n"
|
1029 |
-
"Client email: {client_email}"
|
1030 |
msgstr ""
|
1031 |
|
1032 |
-
msgid "
|
1033 |
msgstr ""
|
1034 |
|
1035 |
-
msgid ""
|
1036 |
-
"
|
1037 |
-
"\n"
|
1038 |
-
"The time slot on {appointment_date} at {appointment_time} for {service_name} "
|
1039 |
-
"is now available for booking. Please see the list of customers on the "
|
1040 |
-
"waiting list and make a new appointment.\n"
|
1041 |
-
"\n"
|
1042 |
-
"{appointment_waiting_list}"
|
1043 |
-
msgstr ""
|
1044 |
|
1045 |
-
msgid ""
|
1046 |
-
"
|
1047 |
-
"This is a confirmation that you have been added to the waiting list for "
|
1048 |
-
"{service_name} on {appointment_date} at {appointment_time}.\n"
|
1049 |
-
"Thank you for choosing our company.\n"
|
1050 |
-
"{company_name}\n"
|
1051 |
-
"{company_phone}\n"
|
1052 |
-
"{company_website}"
|
1053 |
-
msgstr ""
|
1054 |
|
1055 |
-
msgid ""
|
1056 |
-
"
|
1057 |
-
"You have new customer in the waiting list.\n"
|
1058 |
-
"Service: {service_name}\n"
|
1059 |
-
"Date: {appointment_date}\n"
|
1060 |
-
"Time: {appointment_time}\n"
|
1061 |
-
"Client name: {client_name}\n"
|
1062 |
-
"Client phone: {client_phone}\n"
|
1063 |
-
"Client email: {client_email}"
|
1064 |
-
msgstr ""
|
1065 |
|
1066 |
-
msgid ""
|
1067 |
-
"
|
1068 |
-
"The time slot on {appointment_date} at {appointment_time} for {service_name} "
|
1069 |
-
"is now available for booking. Please see the list of customers on the "
|
1070 |
-
"waiting list and make a new appointment.\n"
|
1071 |
-
"{appointment_waiting_list}"
|
1072 |
-
msgstr ""
|
1073 |
|
1074 |
-
msgid "
|
1075 |
-
msgstr ""
|
1076 |
|
1077 |
-
msgid "
|
1078 |
-
msgstr ""
|
1079 |
|
1080 |
-
msgid "
|
1081 |
-
msgstr ""
|
1082 |
|
1083 |
-
msgid "
|
1084 |
-
msgstr ""
|
1085 |
|
1086 |
-
msgid "
|
1087 |
-
msgstr "
|
1088 |
|
1089 |
-
msgid "
|
1090 |
-
msgstr ""
|
1091 |
|
1092 |
-
msgid "
|
1093 |
-
msgstr "
|
1094 |
|
1095 |
-
msgid "
|
1096 |
-
msgstr ""
|
1097 |
|
1098 |
-
msgid "
|
1099 |
-
msgstr ""
|
1100 |
|
1101 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1102 |
msgstr ""
|
1103 |
|
1104 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1105 |
msgstr ""
|
|
|
|
|
1106 |
|
1107 |
-
msgid "
|
1108 |
-
msgstr "
|
1109 |
|
1110 |
-
msgid "
|
|
|
|
|
1111 |
msgstr ""
|
|
|
|
|
1112 |
|
1113 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1114 |
msgstr ""
|
1115 |
|
1116 |
-
msgid "
|
1117 |
msgstr ""
|
1118 |
|
1119 |
-
msgid "
|
1120 |
msgstr ""
|
1121 |
|
1122 |
-
msgid "
|
|
|
|
|
|
|
1123 |
msgstr ""
|
1124 |
|
1125 |
-
|
1126 |
-
msgid "Rate the quality of the %s provided to you on %s at %s by %s"
|
1127 |
msgstr ""
|
1128 |
|
1129 |
-
msgid "
|
1130 |
msgstr ""
|
1131 |
|
1132 |
-
msgid "
|
|
|
|
|
1133 |
msgstr ""
|
1134 |
|
1135 |
-
msgid "
|
1136 |
msgstr ""
|
1137 |
|
1138 |
-
msgid "
|
1139 |
msgstr ""
|
1140 |
|
1141 |
-
msgid "
|
1142 |
msgstr ""
|
1143 |
|
1144 |
-
msgid "
|
1145 |
msgstr ""
|
1146 |
|
1147 |
-
msgid "
|
1148 |
msgstr ""
|
1149 |
|
1150 |
-
msgid "
|
1151 |
msgstr ""
|
1152 |
|
1153 |
-
msgid "
|
|
|
|
|
|
|
1154 |
msgstr ""
|
1155 |
|
1156 |
-
msgid "
|
1157 |
msgstr ""
|
1158 |
|
1159 |
-
msgid ""
|
1160 |
-
"Set a period of time after appointment when customer can rate and leave "
|
1161 |
-
"feedback for your services."
|
1162 |
msgstr ""
|
1163 |
|
1164 |
-
msgid "
|
1165 |
msgstr ""
|
1166 |
|
1167 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
1168 |
msgstr ""
|
1169 |
|
1170 |
-
msgid "
|
1171 |
msgstr ""
|
1172 |
|
1173 |
-
msgid "
|
1174 |
msgstr ""
|
1175 |
|
1176 |
-
msgid "
|
1177 |
msgstr ""
|
1178 |
|
1179 |
-
msgid "
|
1180 |
msgstr ""
|
1181 |
|
1182 |
-
msgid "
|
|
|
|
|
1183 |
msgstr ""
|
1184 |
|
1185 |
-
msgid "
|
1186 |
msgstr ""
|
1187 |
|
1188 |
-
msgid "
|
|
|
|
|
1189 |
msgstr ""
|
1190 |
|
1191 |
-
msgid "
|
|
|
|
|
|
|
1192 |
msgstr ""
|
1193 |
|
1194 |
-
msgid "
|
1195 |
msgstr ""
|
1196 |
|
1197 |
-
msgid "
|
1198 |
msgstr ""
|
1199 |
|
1200 |
-
msgid "
|
1201 |
msgstr ""
|
1202 |
|
1203 |
-
msgid ""
|
1204 |
-
"
|
1205 |
-
|
|
|
1206 |
msgstr ""
|
1207 |
|
1208 |
-
msgid "
|
1209 |
msgstr ""
|
1210 |
|
1211 |
-
msgid "
|
|
|
|
|
|
|
1212 |
msgstr ""
|
1213 |
|
1214 |
-
msgid "
|
1215 |
msgstr ""
|
1216 |
|
1217 |
-
msgid "
|
|
|
|
|
|
|
1218 |
msgstr ""
|
1219 |
|
1220 |
msgid ""
|
1221 |
-
"
|
1222 |
-
"appointment"
|
1223 |
msgstr ""
|
1224 |
|
1225 |
-
msgid "
|
1226 |
-
msgstr "o"
|
1227 |
-
|
1228 |
-
msgid "time(s)"
|
1229 |
msgstr ""
|
1230 |
|
1231 |
-
msgid ""
|
1232 |
-
"Dear {client_name}.\n"
|
1233 |
-
"\n"
|
1234 |
-
"This is a confirmation that you have been added to the waiting list for "
|
1235 |
-
"{service_name} (x {recurring_count}).\n"
|
1236 |
-
"\n"
|
1237 |
-
"Please find the service schedule below.\n"
|
1238 |
-
"\n"
|
1239 |
-
"{appointment_schedule}\n"
|
1240 |
-
"\n"
|
1241 |
-
"Thank you for choosing our company.\n"
|
1242 |
-
"\n"
|
1243 |
-
"{company_name}\n"
|
1244 |
-
"{company_phone}\n"
|
1245 |
-
"{company_website}"
|
1246 |
msgstr ""
|
1247 |
|
1248 |
-
msgid ""
|
1249 |
-
"Hello.\n"
|
1250 |
-
"\n"
|
1251 |
-
"You have new customer in the waiting list.\n"
|
1252 |
-
"\n"
|
1253 |
-
"Service: {service_name} (x {recurring_count})\n"
|
1254 |
-
"Schedule:\n"
|
1255 |
-
"{appointment_schedule}\n"
|
1256 |
-
"Client name: {client_name}\n"
|
1257 |
-
"Client phone: {client_phone}\n"
|
1258 |
-
"Client email: {client_email}"
|
1259 |
msgstr ""
|
1260 |
|
1261 |
-
msgid ""
|
1262 |
-
"Dear {client_name}.\n"
|
1263 |
-
"This is a confirmation that you have been added to the waiting list for "
|
1264 |
-
"{service_name} (x {recurring_count}).\n"
|
1265 |
-
"Please find the service schedule below.\n"
|
1266 |
-
"{appointment_schedule}\n"
|
1267 |
-
"Thank you for choosing our company.\n"
|
1268 |
-
"{company_name}\n"
|
1269 |
-
"{company_phone}\n"
|
1270 |
-
"{company_website}"
|
1271 |
msgstr ""
|
1272 |
|
1273 |
-
msgid ""
|
1274 |
-
"Hello.\n"
|
1275 |
-
"You have new customer in the waiting list.\n"
|
1276 |
-
"Service: {service_name} (x {recurring_count})\n"
|
1277 |
-
"Schedule:\n"
|
1278 |
-
"{appointment_schedule}\n"
|
1279 |
-
"Client name: {client_name}\n"
|
1280 |
-
"Client phone: {client_phone}\n"
|
1281 |
-
"Client email: {client_email}"
|
1282 |
msgstr ""
|
1283 |
|
1284 |
-
msgid "
|
1285 |
msgstr ""
|
1286 |
|
1287 |
-
msgid "
|
1288 |
msgstr ""
|
1289 |
|
1290 |
-
msgid "
|
1291 |
-
msgstr "
|
1292 |
|
1293 |
msgid ""
|
1294 |
-
"
|
1295 |
-
"
|
1296 |
-
"This is a confirmation that you have booked {service_name} (x "
|
1297 |
-
"{recurring_count}).\n"
|
1298 |
-
"\n"
|
1299 |
-
"Please find the schedule of your booking below.\n"
|
1300 |
-
"\n"
|
1301 |
-
"{appointment_schedule}\n"
|
1302 |
-
"\n"
|
1303 |
-
"We are waiting you at {company_address}.\n"
|
1304 |
-
"\n"
|
1305 |
-
"Thank you for choosing our company.\n"
|
1306 |
-
"\n"
|
1307 |
-
"{company_name}\n"
|
1308 |
-
"{company_phone}\n"
|
1309 |
-
"{company_website}"
|
1310 |
msgstr ""
|
|
|
|
|
1311 |
|
1312 |
-
msgid "
|
1313 |
-
msgstr "
|
1314 |
|
1315 |
msgid ""
|
1316 |
-
"
|
1317 |
-
"
|
1318 |
-
"You have a new booking.\n"
|
1319 |
-
"\n"
|
1320 |
-
"Service: {service_name} (x {recurring_count})\n"
|
1321 |
-
"Schedule:\n"
|
1322 |
-
"{appointment_schedule}\n"
|
1323 |
-
"Client name: {client_name}\n"
|
1324 |
-
"Client phone: {client_phone}\n"
|
1325 |
-
"Client email: {client_email}"
|
1326 |
msgstr ""
|
1327 |
|
1328 |
-
msgid "
|
1329 |
-
msgstr "
|
1330 |
-
|
1331 |
-
msgid ""
|
1332 |
-
"Dear {client_name}.\n"
|
1333 |
-
"\n"
|
1334 |
-
"Your booking of {service_name} (x {recurring_count}) has been cancelled.\n"
|
1335 |
-
"\n"
|
1336 |
-
"Reason: {cancellation_reason}\n"
|
1337 |
-
"\n"
|
1338 |
-
"Please find the schedule of the cancelled booking below:\n"
|
1339 |
-
"\n"
|
1340 |
-
"{appointment_schedule}\n"
|
1341 |
-
"\n"
|
1342 |
-
"Thank you for choosing our company.\n"
|
1343 |
-
"\n"
|
1344 |
-
"{company_name}\n"
|
1345 |
-
"{company_phone}\n"
|
1346 |
-
"{company_website}"
|
1347 |
-
msgstr ""
|
1348 |
|
1349 |
-
msgid "
|
1350 |
msgstr ""
|
1351 |
|
1352 |
msgid ""
|
1353 |
-
"
|
1354 |
-
"\
|
1355 |
-
"
|
1356 |
-
"\n"
|
1357 |
-
"Reason: {cancellation_reason}\n"
|
1358 |
-
"\n"
|
1359 |
-
"Service: {service_name} (x {recurring_count})\n"
|
1360 |
-
"Schedule:\n"
|
1361 |
-
"{appointment_schedule}\n"
|
1362 |
-
"Client name: {client_name}\n"
|
1363 |
-
"Client phone: {client_phone}\n"
|
1364 |
-
"Client email: {client_email}"
|
1365 |
msgstr ""
|
1366 |
|
1367 |
-
msgid "
|
1368 |
-
msgstr "
|
1369 |
|
1370 |
msgid ""
|
1371 |
-
"
|
1372 |
-
"
|
1373 |
-
"
|
1374 |
-
"\n"
|
1375 |
-
"Reason: {cancellation_reason}\n"
|
1376 |
-
"\n"
|
1377 |
-
"Please find the schedule of the cancelled booking below:\n"
|
1378 |
-
"\n"
|
1379 |
-
"{appointment_schedule}\n"
|
1380 |
-
"\n"
|
1381 |
-
"Thank you for choosing our company.\n"
|
1382 |
-
"\n"
|
1383 |
-
"{company_name}\n"
|
1384 |
-
"{company_phone}\n"
|
1385 |
-
"{company_website}"
|
1386 |
msgstr ""
|
1387 |
|
1388 |
msgid ""
|
1389 |
-
"
|
1390 |
-
"
|
1391 |
-
"The following booking has been rejected.\n"
|
1392 |
-
"\n"
|
1393 |
-
"Reason: {cancellation_reason}\n"
|
1394 |
-
"\n"
|
1395 |
-
"Service: {service_name} (x {recurring_count})\n"
|
1396 |
-
"Schedule:\n"
|
1397 |
-
"{appointment_schedule}\n"
|
1398 |
-
"Client name: {client_name}\n"
|
1399 |
-
"Client phone: {client_phone}\n"
|
1400 |
-
"Client email: {client_email}"
|
1401 |
msgstr ""
|
1402 |
|
1403 |
-
msgid ""
|
1404 |
-
"Notification to staff member about placing on waiting list for recurring "
|
1405 |
-
"appointment "
|
1406 |
msgstr ""
|
1407 |
|
1408 |
msgid ""
|
1409 |
-
"
|
1410 |
-
"
|
1411 |
-
"{recurring_count}).\n"
|
1412 |
-
"Please find the schedule of your booking below.\n"
|
1413 |
-
"{appointment_schedule}\n"
|
1414 |
-
"\n"
|
1415 |
-
"We are waiting you at {company_address}.\n"
|
1416 |
-
"Thank you for choosing our company.\n"
|
1417 |
-
"{company_name}\n"
|
1418 |
-
"{company_phone}\n"
|
1419 |
-
"{company_website}"
|
1420 |
msgstr ""
|
1421 |
|
1422 |
-
msgid ""
|
1423 |
-
"Hello.\n"
|
1424 |
-
"You have a new booking.\n"
|
1425 |
-
"Service: {service_name} (x {recurring_count})\n"
|
1426 |
-
"Schedule:\n"
|
1427 |
-
"{appointment_schedule}\n"
|
1428 |
-
"Client name: {client_name}\n"
|
1429 |
-
"Client phone: {client_phone}\n"
|
1430 |
-
"Client email: {client_email}"
|
1431 |
msgstr ""
|
1432 |
|
1433 |
-
msgid ""
|
1434 |
-
"Dear {client_name}.\n"
|
1435 |
-
"Your booking of {service_name} (x {recurring_count}) has been cancelled.\n"
|
1436 |
-
"Reason: {cancellation_reason}\n"
|
1437 |
-
"Please find the schedule of the cancelled booking below: "
|
1438 |
-
"{appointment_schedule}\n"
|
1439 |
-
"Thank you for choosing our company.\n"
|
1440 |
-
"{company_name}\n"
|
1441 |
-
"{company_phone}\n"
|
1442 |
-
"{company_website}"
|
1443 |
msgstr ""
|
1444 |
|
1445 |
-
msgid ""
|
1446 |
-
"Hello.\n"
|
1447 |
-
"The following booking has been cancelled.\n"
|
1448 |
-
"Reason: {cancellation_reason}\n"
|
1449 |
-
"Service: {service_name} (x {recurring_count})\n"
|
1450 |
-
"Schedule:\n"
|
1451 |
-
"{appointment_schedule}\n"
|
1452 |
-
"Client name: {client_name}\n"
|
1453 |
-
"Client phone: {client_phone}\n"
|
1454 |
-
"Client email: {client_email}"
|
1455 |
msgstr ""
|
1456 |
|
1457 |
-
msgid ""
|
1458 |
-
"Dear {client_name}.\n"
|
1459 |
-
"Your booking of {service_name} (x {recurring_count}) has been rejected.\n"
|
1460 |
-
"Reason: {cancellation_reason}\n"
|
1461 |
-
"Please find the schedule of the cancelled booking below: "
|
1462 |
-
"{appointment_schedule}\n"
|
1463 |
-
"Thank you for choosing our company.\n"
|
1464 |
-
"{company_name}\n"
|
1465 |
-
"{company_phone}\n"
|
1466 |
-
"{company_website}"
|
1467 |
msgstr ""
|
1468 |
|
1469 |
msgid ""
|
1470 |
-
"
|
1471 |
-
"
|
1472 |
-
"Reason: {cancellation_reason}\n"
|
1473 |
-
"Service: {service_name} (x {recurring_count})\n"
|
1474 |
-
"Schedule:\n"
|
1475 |
-
"{appointment_schedule}\n"
|
1476 |
-
"Client name: {client_name}\n"
|
1477 |
-
"Client phone: {client_phone}\n"
|
1478 |
-
"Client email: {client_email}"
|
1479 |
msgstr ""
|
1480 |
|
1481 |
-
msgid "
|
1482 |
msgstr ""
|
1483 |
|
1484 |
-
msgid ""
|
1485 |
-
"You selected a booking for {service_name} at {appointment_time} on "
|
1486 |
-
"{appointment_date}. If you would like to make this appointment recurring "
|
1487 |
-
"please check the box below and set appropriate parameters. Otherwise press "
|
1488 |
-
"Next button below."
|
1489 |
msgstr ""
|
1490 |
|
1491 |
-
msgid "
|
1492 |
msgstr ""
|
1493 |
|
1494 |
-
msgid "
|
1495 |
msgstr ""
|
1496 |
|
1497 |
-
msgid "
|
1498 |
msgstr ""
|
1499 |
|
1500 |
-
msgid "
|
1501 |
msgstr ""
|
1502 |
|
1503 |
-
msgid "
|
1504 |
msgstr ""
|
1505 |
|
1506 |
-
msgid "
|
1507 |
msgstr ""
|
1508 |
|
1509 |
-
msgid ""
|
1510 |
-
"The first recurring appointment was added to cart. You will be invoiced for "
|
1511 |
-
"the remaining appointments later."
|
1512 |
msgstr ""
|
1513 |
|
1514 |
-
msgid "
|
1515 |
-
msgstr ""
|
1516 |
|
1517 |
-
msgid "
|
1518 |
-
msgstr ""
|
1519 |
|
1520 |
-
msgid "
|
|
|
|
|
|
|
1521 |
msgstr ""
|
1522 |
|
1523 |
-
msgid "
|
1524 |
msgstr ""
|
1525 |
|
1526 |
-
msgid ""
|
1527 |
-
|
1528 |
-
|
|
|
1529 |
msgstr ""
|
1530 |
|
1531 |
-
msgid "
|
1532 |
msgstr ""
|
1533 |
|
1534 |
-
msgid "
|
1535 |
msgstr ""
|
1536 |
|
1537 |
-
msgid "
|
1538 |
msgstr ""
|
1539 |
|
1540 |
-
msgid "
|
1541 |
msgstr ""
|
1542 |
|
1543 |
-
msgid "
|
1544 |
msgstr ""
|
1545 |
|
1546 |
-
msgid "
|
1547 |
msgstr ""
|
1548 |
|
1549 |
-
msgid "
|
1550 |
msgstr ""
|
1551 |
|
1552 |
-
msgid "
|
1553 |
msgstr ""
|
1554 |
|
1555 |
-
msgid "
|
1556 |
-
msgstr "
|
1557 |
|
1558 |
-
msgid "
|
1559 |
-
msgstr "
|
1560 |
|
1561 |
-
msgid "
|
1562 |
-
msgstr "
|
1563 |
|
1564 |
-
msgid "
|
1565 |
msgstr ""
|
1566 |
|
1567 |
-
msgid "
|
1568 |
msgstr ""
|
1569 |
|
1570 |
-
msgid "
|
1571 |
-
msgstr ""
|
1572 |
|
1573 |
-
msgid "
|
1574 |
-
msgstr ""
|
1575 |
|
1576 |
-
msgid "
|
1577 |
msgstr ""
|
1578 |
|
1579 |
-
msgid "
|
1580 |
msgstr ""
|
1581 |
|
1582 |
-
msgid "
|
|
|
|
|
|
|
1583 |
msgstr ""
|
1584 |
|
1585 |
-
msgid "
|
1586 |
msgstr ""
|
1587 |
|
1588 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
1589 |
msgstr ""
|
1590 |
|
1591 |
-
msgid "
|
1592 |
msgstr ""
|
1593 |
|
1594 |
-
msgid "
|
|
|
|
|
1595 |
msgstr ""
|
1596 |
|
1597 |
msgid ""
|
1598 |
-
"
|
1599 |
-
"approved recurring appointment."
|
1600 |
-
msgstr ""
|
1601 |
-
|
1602 |
-
msgid "Approve recurring appointment URL (denied)"
|
1603 |
-
msgstr ""
|
1604 |
-
|
1605 |
-
msgid ""
|
1606 |
-
"Set the URL of a page that is shown to staff when the approval of recurring "
|
1607 |
-
"appointment cannot be done (changed status, etc.)."
|
1608 |
-
msgstr ""
|
1609 |
-
|
1610 |
-
msgid "Online Payments"
|
1611 |
-
msgstr ""
|
1612 |
-
|
1613 |
-
msgid "Customers must pay only for the 1st appointment"
|
1614 |
-
msgstr ""
|
1615 |
-
|
1616 |
-
msgid "Customers must pay for all appointments in series"
|
1617 |
msgstr ""
|
|
|
|
|
1618 |
|
1619 |
-
msgid "
|
1620 |
-
msgstr ""
|
1621 |
|
1622 |
-
msgid "
|
1623 |
msgstr ""
|
1624 |
|
1625 |
-
msgid "
|
1626 |
msgstr ""
|
1627 |
|
1628 |
-
msgid "
|
1629 |
-
msgstr "Applica"
|
1630 |
-
|
1631 |
-
msgid "Another time was offered on pages"
|
1632 |
msgstr ""
|
1633 |
|
1634 |
-
msgid "
|
1635 |
-
msgstr "Indietro"
|
1636 |
-
|
1637 |
-
msgid "Every"
|
1638 |
msgstr ""
|
1639 |
|
1640 |
-
msgid "
|
|
|
|
|
1641 |
msgstr ""
|
1642 |
|
1643 |
-
msgid "
|
|
|
|
|
1644 |
msgstr ""
|
1645 |
|
1646 |
-
msgid "
|
1647 |
msgstr ""
|
1648 |
|
1649 |
-
msgid "
|
1650 |
msgstr ""
|
1651 |
|
1652 |
-
|
1653 |
-
|
1654 |
-
|
1655 |
-
|
1656 |
-
msgstr ""
|
1657 |
|
1658 |
-
msgid "
|
1659 |
msgstr ""
|
1660 |
|
1661 |
-
msgid "
|
1662 |
msgstr ""
|
1663 |
|
1664 |
-
msgid "
|
1665 |
-
msgstr ""
|
1666 |
|
1667 |
-
msgid "
|
1668 |
-
msgstr ""
|
1669 |
|
1670 |
-
msgid "
|
1671 |
-
msgstr ""
|
1672 |
|
1673 |
-
msgid "
|
1674 |
-
msgstr ""
|
1675 |
|
1676 |
-
msgid "
|
1677 |
-
msgstr ""
|
1678 |
|
1679 |
-
msgid "
|
1680 |
-
msgstr ""
|
1681 |
|
1682 |
-
msgid "
|
1683 |
-
msgstr ""
|
1684 |
|
1685 |
-
msgid "
|
1686 |
msgstr ""
|
1687 |
|
1688 |
-
msgid "
|
1689 |
-
msgstr ""
|
1690 |
|
1691 |
-
msgid "
|
1692 |
msgstr ""
|
1693 |
|
1694 |
-
msgid "
|
1695 |
-
msgstr "Predefinito"
|
1696 |
-
|
1697 |
-
msgid "New group"
|
1698 |
msgstr ""
|
1699 |
|
1700 |
-
msgid "
|
1701 |
-
msgstr ""
|
1702 |
|
1703 |
-
msgid "
|
1704 |
-
msgstr ""
|
1705 |
|
1706 |
-
msgid "
|
1707 |
msgstr ""
|
1708 |
|
1709 |
-
msgid "
|
1710 |
-
msgstr "
|
1711 |
|
1712 |
-
msgid "
|
1713 |
-
msgstr ""
|
1714 |
|
1715 |
#, php-format
|
1716 |
msgid ""
|
1717 |
-
"
|
1718 |
-
"
|
|
|
|
|
|
|
|
|
|
|
1719 |
msgstr ""
|
1720 |
|
1721 |
-
msgid "
|
1722 |
msgstr ""
|
1723 |
|
1724 |
-
msgid "
|
|
|
|
|
1725 |
msgstr ""
|
1726 |
|
1727 |
-
msgid "
|
1728 |
-
msgstr "
|
1729 |
-
|
1730 |
-
msgid "Delete break"
|
1731 |
-
msgstr "Elimina pausa"
|
1732 |
-
|
1733 |
-
msgid "Add special day"
|
1734 |
-
msgstr ""
|
1735 |
|
1736 |
-
msgid "
|
1737 |
-
msgstr ""
|
1738 |
|
1739 |
-
msgid "
|
1740 |
-
msgstr "
|
1741 |
|
1742 |
-
msgid "
|
1743 |
-
msgstr "
|
1744 |
|
1745 |
-
msgid "
|
1746 |
-
msgstr ""
|
1747 |
|
1748 |
-
msgid "
|
1749 |
-
msgstr ""
|
1750 |
|
1751 |
-
msgid "
|
1752 |
-
msgstr "
|
1753 |
|
1754 |
-
msgid ""
|
1755 |
-
|
1756 |
-
msgstr ""
|
1757 |
|
1758 |
-
msgid "
|
1759 |
-
msgstr ""
|
1760 |
|
1761 |
-
msgid "
|
1762 |
-
msgstr ""
|
1763 |
|
1764 |
-
msgid "
|
1765 |
-
msgstr ""
|
1766 |
|
1767 |
-
msgid "
|
1768 |
-
msgstr ""
|
1769 |
|
1770 |
-
msgid "
|
1771 |
-
msgstr ""
|
1772 |
|
1773 |
-
msgid "
|
1774 |
-
msgstr "
|
1775 |
|
1776 |
-
msgid "
|
1777 |
-
msgstr ""
|
1778 |
|
1779 |
-
msgid "
|
1780 |
-
msgstr ""
|
1781 |
|
1782 |
-
msgid "
|
1783 |
-
msgstr ""
|
1784 |
|
1785 |
msgid "Notification to customer about approved appointment"
|
1786 |
msgstr "Notifica al cliente dell'appuntamento approvato"
|
1787 |
|
1788 |
-
msgid "Customer birthday greeting (requires cron setup)"
|
1789 |
-
msgstr "Auguri di compleanno per i clienti (richiede l'installazione cron)"
|
1790 |
-
|
1791 |
-
msgid "Notification to customer about cancelled appointment"
|
1792 |
-
msgstr "Notifica al cliente dell'appuntamento annullato"
|
1793 |
-
|
1794 |
msgid ""
|
1795 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1796 |
msgstr ""
|
1797 |
-
"
|
1798 |
-
"
|
1799 |
-
|
1800 |
-
|
1801 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1802 |
|
1803 |
-
msgid "Notification to
|
1804 |
-
msgstr "Notifica al
|
1805 |
|
1806 |
msgid ""
|
1807 |
-
"
|
1808 |
-
|
1809 |
-
"
|
1810 |
-
"
|
1811 |
-
|
1812 |
-
|
1813 |
-
"
|
1814 |
-
|
1815 |
-
"
|
1816 |
-
"
|
1817 |
-
|
1818 |
-
msgid ""
|
1819 |
-
"2nd reminder to customer about upcoming appointment (requires cron setup)"
|
1820 |
-
msgstr ""
|
1821 |
-
"2 ° promemoria al cliente sull'imminente appuntamento (richiede "
|
1822 |
-
"l'installazione di cron)"
|
1823 |
-
|
1824 |
-
msgid ""
|
1825 |
-
"3rd reminder to customer about upcoming appointment (requires cron setup)"
|
1826 |
-
msgstr ""
|
1827 |
-
"3 ° promemoria al cliente sull'imminente appuntamento (richiede "
|
1828 |
-
"l'installazione di cron)"
|
1829 |
-
|
1830 |
-
msgid "Last client's appointment"
|
1831 |
-
msgstr ""
|
1832 |
-
|
1833 |
-
msgid ""
|
1834 |
-
"Evening notification with the next day agenda to staff member (requires cron "
|
1835 |
-
"setup)"
|
1836 |
-
msgstr ""
|
1837 |
-
"Notifica serale allo staff con l'agenda del giorno dopo (richiede "
|
1838 |
-
"configurazione cron)"
|
1839 |
-
|
1840 |
-
msgid "Notification to staff member about approved appointment"
|
1841 |
-
msgstr "Notifica al membro del personale su appuntamento approvato"
|
1842 |
-
|
1843 |
-
msgid "Notification to staff member about cancelled appointment"
|
1844 |
-
msgstr "Notifica al membro del personale su appuntamento annullato"
|
1845 |
-
|
1846 |
-
msgid "Full day agenda"
|
1847 |
-
msgstr ""
|
1848 |
-
|
1849 |
-
msgid "Notification to staff member about pending appointment"
|
1850 |
-
msgstr "Notifica al membro del personale su appuntamento attesa"
|
1851 |
-
|
1852 |
-
msgid "Notification to staff member about rejected appointment"
|
1853 |
-
msgstr "Notifica al membro del personale su appuntamento rifiutato"
|
1854 |
-
|
1855 |
-
msgid "Confirm email"
|
1856 |
-
msgstr ""
|
1857 |
-
|
1858 |
-
msgid "Email confirmation doesn't match"
|
1859 |
-
msgstr ""
|
1860 |
-
|
1861 |
-
msgid "Birthday"
|
1862 |
-
msgstr ""
|
1863 |
-
|
1864 |
-
msgid "Invalid day"
|
1865 |
-
msgstr ""
|
1866 |
-
|
1867 |
-
msgid "Day is required"
|
1868 |
-
msgstr ""
|
1869 |
-
|
1870 |
-
msgid "Month is required"
|
1871 |
-
msgstr ""
|
1872 |
-
|
1873 |
-
msgid "Year is required"
|
1874 |
-
msgstr ""
|
1875 |
-
|
1876 |
-
msgid "Select day"
|
1877 |
-
msgstr ""
|
1878 |
-
|
1879 |
-
msgid "Select month"
|
1880 |
-
msgstr ""
|
1881 |
-
|
1882 |
-
msgid "Select year"
|
1883 |
-
msgstr ""
|
1884 |
-
|
1885 |
-
msgid "Address"
|
1886 |
-
msgstr "Indirizzo"
|
1887 |
-
|
1888 |
-
msgid "Country"
|
1889 |
-
msgstr "Paese"
|
1890 |
-
|
1891 |
-
msgid "State/Region"
|
1892 |
-
msgstr ""
|
1893 |
-
|
1894 |
-
msgid "Postal Code"
|
1895 |
-
msgstr "Codice Postale"
|
1896 |
-
|
1897 |
-
msgid "City"
|
1898 |
-
msgstr "Città"
|
1899 |
-
|
1900 |
-
msgid "Street Address"
|
1901 |
-
msgstr "Indirizzo"
|
1902 |
-
|
1903 |
-
msgid "Additional Address"
|
1904 |
-
msgstr "Indirizzo aggiuntivo"
|
1905 |
-
|
1906 |
-
msgid "Country is required"
|
1907 |
-
msgstr "Il campo Paese è obbligatorio"
|
1908 |
-
|
1909 |
-
msgid "State is required"
|
1910 |
-
msgstr "E' richiesto lo Stato"
|
1911 |
-
|
1912 |
-
msgid "Postcode is required"
|
1913 |
-
msgstr "E' richiesto il codice postale"
|
1914 |
-
|
1915 |
-
msgid "City is required"
|
1916 |
-
msgstr "Il campo Città è obbligatorio"
|
1917 |
-
|
1918 |
-
msgid "Street is required"
|
1919 |
-
msgstr "E' richiesto l'indirizzo"
|
1920 |
-
|
1921 |
-
msgid "Additional address is required"
|
1922 |
-
msgstr ""
|
1923 |
-
|
1924 |
-
msgid "Notes"
|
1925 |
-
msgstr "Note"
|
1926 |
-
|
1927 |
-
msgid ""
|
1928 |
-
"You are trying to use the service too often. Please contact us to make a "
|
1929 |
-
"booking."
|
1930 |
-
msgstr ""
|
1931 |
-
|
1932 |
-
msgid "Your payment has been accepted for processing."
|
1933 |
-
msgstr ""
|
1934 |
-
|
1935 |
-
msgid "First name"
|
1936 |
-
msgstr "Nome"
|
1937 |
-
|
1938 |
-
msgid "Last name"
|
1939 |
-
msgstr "Cognome"
|
1940 |
-
|
1941 |
-
msgid "Please tell us your first name"
|
1942 |
-
msgstr "Comunicaci il tuo nome"
|
1943 |
-
|
1944 |
-
msgid "Please tell us your last name"
|
1945 |
-
msgstr "Comunicaci il tuo cognome"
|
1946 |
-
|
1947 |
-
msgid "Signed up"
|
1948 |
-
msgstr "Loggato"
|
1949 |
-
|
1950 |
-
msgid ""
|
1951 |
-
"The selected time is not available anymore. Please, choose another time slot."
|
1952 |
-
msgstr ""
|
1953 |
-
"La fascia oraria selezionata non è più disponibile. Per favore seleziona un "
|
1954 |
-
"altro orario."
|
1955 |
-
|
1956 |
-
msgid ""
|
1957 |
-
"The highlighted time is not available anymore. Please, choose another time "
|
1958 |
-
"slot."
|
1959 |
msgstr ""
|
1960 |
-
"
|
1961 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1962 |
|
1963 |
-
msgid "
|
1964 |
-
msgstr "
|
1965 |
|
1966 |
msgid ""
|
1967 |
-
"Dear {client_name}
|
1968 |
"\n"
|
1969 |
-
"
|
1970 |
-
"
|
1971 |
-
"May you and your family be happy and healthy.\n"
|
1972 |
"\n"
|
1973 |
"Thank you for choosing our company.\n"
|
1974 |
"\n"
|
@@ -1976,39 +1990,25 @@ msgid ""
|
|
1976 |
"{company_phone}\n"
|
1977 |
"{company_website}"
|
1978 |
msgstr ""
|
1979 |
-
|
1980 |
-
"
|
1981 |
-
"
|
1982 |
-
"Ti auguriamo il meglio.\n"
|
1983 |
-
"Possiate voi e la vostra famiglia essere felici e sani.\n"
|
1984 |
-
"\n"
|
1985 |
-
"Grazie per aver scelto la nostra azienda.\n"
|
1986 |
-
"\n"
|
1987 |
-
"{company_name}\n"
|
1988 |
-
"{company_phone}\n"
|
1989 |
-
"{company_website}"
|
1990 |
|
1991 |
msgid ""
|
1992 |
-
"
|
1993 |
-
"Happy birthday!\n"
|
1994 |
-
"We wish you all the best.\n"
|
1995 |
-
"May you and your family be happy and healthy.\n"
|
1996 |
-
"Thank you for choosing our company.\n"
|
1997 |
-
"{company_name}\n"
|
1998 |
-
"{company_phone}\n"
|
1999 |
-
"{company_website}"
|
2000 |
-
msgstr ""
|
2001 |
-
"Caro {client_name},\n"
|
2002 |
-
"Buon compleanno!\n"
|
2003 |
-
"\n"
|
2004 |
-
"Ti auguriamo tutto il meglio.\n"
|
2005 |
"\n"
|
2006 |
-
"
|
2007 |
"\n"
|
2008 |
-
"
|
2009 |
-
"{
|
2010 |
-
"{
|
2011 |
-
"{
|
|
|
|
|
|
|
|
|
|
|
|
|
2012 |
|
2013 |
msgid ""
|
2014 |
"Dear {client_name}.\n"
|
@@ -2037,6 +2037,9 @@ msgstr ""
|
|
2037 |
"{company_phone}\n"
|
2038 |
"{company_website}"
|
2039 |
|
|
|
|
|
|
|
2040 |
msgid ""
|
2041 |
"Hello.\n"
|
2042 |
"\n"
|
@@ -2066,27 +2069,18 @@ msgstr ""
|
|
2066 |
|
2067 |
msgid ""
|
2068 |
"Dear {client_name}.\n"
|
2069 |
-
"
|
2070 |
-
"
|
2071 |
-
"
|
2072 |
"Thank you for choosing our company.\n"
|
2073 |
"{company_name}\n"
|
2074 |
"{company_phone}\n"
|
2075 |
"{company_website}"
|
2076 |
msgstr ""
|
2077 |
-
"Caro {client_name}.\n"
|
2078 |
-
"La prenotazione di {service_name} il {appointment_date} alle ore "
|
2079 |
-
"{appointment_time} è stata rifiutata.\n"
|
2080 |
-
"Motivo: {cancellation_reason}\n"
|
2081 |
-
"Grazie per aver scelto la nostra azienda.\n"
|
2082 |
-
"{company_name}\n"
|
2083 |
-
"{company_phone}\n"
|
2084 |
-
"{company_website}"
|
2085 |
|
2086 |
msgid ""
|
2087 |
"Hello.\n"
|
2088 |
-
"
|
2089 |
-
"Reason: {cancellation_reason}\n"
|
2090 |
"Service: {service_name}\n"
|
2091 |
"Date: {appointment_date}\n"
|
2092 |
"Time: {appointment_time}\n"
|
@@ -2094,234 +2088,20 @@ msgid ""
|
|
2094 |
"Client phone: {client_phone}\n"
|
2095 |
"Client email: {client_email}"
|
2096 |
msgstr ""
|
2097 |
-
"Ciao.\n"
|
2098 |
-
"La seguente prenotazione è stata rifiutata.\n"
|
2099 |
-
"Motivo: {cancellation_reason}\n"
|
2100 |
-
"Servizio: {service_nameo}\n"
|
2101 |
-
"Data: {appointment_date}\n"
|
2102 |
-
"Tempo: {appointment_time}\n"
|
2103 |
-
"Nome Cliente: {client_name}\n"
|
2104 |
-
"telefono Cliente: {client_phone}\n"
|
2105 |
-
"Client di posta: {client_email}"
|
2106 |
-
|
2107 |
-
msgid "Please tell us your email"
|
2108 |
-
msgstr "Per favore inserisci il tuo indirizzo eMail"
|
2109 |
-
|
2110 |
-
msgid "Please select an employee"
|
2111 |
-
msgstr "Per favore seleziona un dipendente"
|
2112 |
-
|
2113 |
-
msgid "Please tell us your name"
|
2114 |
-
msgstr "Per favore inserisci il tuo nome"
|
2115 |
-
|
2116 |
-
msgid "Please tell us your phone"
|
2117 |
-
msgstr "Per favore inserisci il tuo numero di telefono"
|
2118 |
-
|
2119 |
-
msgid "Please select a service"
|
2120 |
-
msgstr "Per favore seleziona un servizio"
|
2121 |
-
|
2122 |
-
msgid "Time"
|
2123 |
-
msgstr "Orario"
|
2124 |
-
|
2125 |
-
msgid "Internal Notes"
|
2126 |
-
msgstr ""
|
2127 |
-
|
2128 |
-
msgid ""
|
2129 |
-
"To view the details of these appointments, please contact your website "
|
2130 |
-
"administrator in order to verify Bookly Pro license."
|
2131 |
-
msgstr ""
|
2132 |
-
|
2133 |
-
msgid "Admins"
|
2134 |
-
msgstr ""
|
2135 |
-
|
2136 |
-
msgid "sent to our system"
|
2137 |
-
msgstr "inviato al nostro sistema"
|
2138 |
-
|
2139 |
-
msgid ""
|
2140 |
-
"Hope you had a good weekend! Here's a summary of messages we've delivered "
|
2141 |
-
"last week:\n"
|
2142 |
-
"{notification_list}\n"
|
2143 |
-
"\n"
|
2144 |
-
"Your system sent a total of {total} messages last week (that's {delta} {sign}"
|
2145 |
-
" than the week before).\n"
|
2146 |
-
"Cost of sending {total} messages was {amount}. Your current Bookly SMS "
|
2147 |
-
"balance is {balance}.\n"
|
2148 |
-
"\n"
|
2149 |
-
"Thank you for using Bookly SMS. We wish you a lucky week!\n"
|
2150 |
-
"Bookly SMS Team"
|
2151 |
-
msgstr ""
|
2152 |
-
|
2153 |
-
msgid "more"
|
2154 |
-
msgstr "di più"
|
2155 |
-
|
2156 |
-
msgid "less"
|
2157 |
-
msgstr "meno"
|
2158 |
-
|
2159 |
-
msgid "Bookly SMS weekly summary"
|
2160 |
-
msgstr "Bookly SMS riepilogo settimanale"
|
2161 |
-
|
2162 |
-
#, php-format
|
2163 |
-
msgid " and %d more item"
|
2164 |
-
msgid_plural " and %d more items"
|
2165 |
-
msgstr[0] " e %d altro elemento"
|
2166 |
-
msgstr[1] " e %d più elementi"
|
2167 |
-
|
2168 |
-
#, php-format
|
2169 |
-
msgid "%d year"
|
2170 |
-
msgid_plural "%d years"
|
2171 |
-
msgstr[0] "%d anno"
|
2172 |
-
msgstr[1] "%d anni"
|
2173 |
-
|
2174 |
-
#, php-format
|
2175 |
-
msgid "%d month"
|
2176 |
-
msgid_plural "%d months"
|
2177 |
-
msgstr[0] "%d mese"
|
2178 |
-
msgstr[1] "%d mesi"
|
2179 |
-
|
2180 |
-
#, php-format
|
2181 |
-
msgid "%d week"
|
2182 |
-
msgid_plural "%d weeks"
|
2183 |
-
msgstr[0] "%d settimana"
|
2184 |
-
msgstr[1] "%d settimane"
|
2185 |
-
|
2186 |
-
#, php-format
|
2187 |
-
msgid "%d day"
|
2188 |
-
msgid_plural "%d days"
|
2189 |
-
msgstr[0] "%d giorno"
|
2190 |
-
msgstr[1] "%d giorni"
|
2191 |
-
|
2192 |
-
#, php-format
|
2193 |
-
msgid "%d h"
|
2194 |
-
msgstr "%d h"
|
2195 |
-
|
2196 |
-
#, php-format
|
2197 |
-
msgid "%d min"
|
2198 |
-
msgstr "%d min"
|
2199 |
-
|
2200 |
-
msgid "Cancel"
|
2201 |
-
msgstr "Annulla"
|
2202 |
-
|
2203 |
-
msgid "From"
|
2204 |
-
msgstr "Da"
|
2205 |
-
|
2206 |
-
msgid "To"
|
2207 |
-
msgstr "A"
|
2208 |
-
|
2209 |
-
msgid "Custom range"
|
2210 |
-
msgstr ""
|
2211 |
-
|
2212 |
-
msgid "Tomorrow"
|
2213 |
-
msgstr "Domani"
|
2214 |
-
|
2215 |
-
msgid "Yesterday"
|
2216 |
-
msgstr "Ieri"
|
2217 |
-
|
2218 |
-
msgid "Last 7 days"
|
2219 |
-
msgstr ""
|
2220 |
-
|
2221 |
-
msgid "Last 30 days"
|
2222 |
-
msgstr ""
|
2223 |
-
|
2224 |
-
msgid "This month"
|
2225 |
-
msgstr ""
|
2226 |
-
|
2227 |
-
msgid "Next month"
|
2228 |
-
msgstr "Prossimo mese"
|
2229 |
-
|
2230 |
-
msgid "Appointment date"
|
2231 |
-
msgstr ""
|
2232 |
-
|
2233 |
-
msgid "Created"
|
2234 |
-
msgstr ""
|
2235 |
-
|
2236 |
-
msgid "Type"
|
2237 |
-
msgstr "Tipo"
|
2238 |
-
|
2239 |
-
msgid "Amount"
|
2240 |
-
msgstr "Importo"
|
2241 |
-
|
2242 |
-
msgid "User"
|
2243 |
-
msgstr "Utente"
|
2244 |
-
|
2245 |
-
msgid "Last appointment"
|
2246 |
-
msgstr "Ultimo appuntamento"
|
2247 |
-
|
2248 |
-
msgid "Total appointments"
|
2249 |
-
msgstr "Totale appuntamenti"
|
2250 |
-
|
2251 |
-
msgid "Payments"
|
2252 |
-
msgstr "Pagamenti"
|
2253 |
-
|
2254 |
-
msgid "Name"
|
2255 |
-
msgstr "Nome"
|
2256 |
-
|
2257 |
-
msgid "State"
|
2258 |
-
msgstr ""
|
2259 |
-
|
2260 |
-
msgid "Category"
|
2261 |
-
msgstr "Fornitore"
|
2262 |
-
|
2263 |
-
msgid "Text"
|
2264 |
-
msgstr "Testo"
|
2265 |
-
|
2266 |
-
msgid "Sender ID"
|
2267 |
-
msgstr "ID del mittente"
|
2268 |
-
|
2269 |
-
msgid "Cost"
|
2270 |
-
msgstr "Costo"
|
2271 |
-
|
2272 |
-
msgid "Flag"
|
2273 |
-
msgstr ""
|
2274 |
-
|
2275 |
-
msgid "Code"
|
2276 |
-
msgstr "Codice"
|
2277 |
-
|
2278 |
-
msgid "Regular price"
|
2279 |
-
msgstr "Prezzo regolare"
|
2280 |
-
|
2281 |
-
msgid "Price with custom Sender ID"
|
2282 |
-
msgstr "Prezzo con ID del mittente personalizzato"
|
2283 |
-
|
2284 |
-
msgid "Requested ID"
|
2285 |
-
msgstr "ID richiesto"
|
2286 |
-
|
2287 |
-
msgid "Status date"
|
2288 |
-
msgstr ""
|
2289 |
-
|
2290 |
-
msgid "Uncategorized"
|
2291 |
-
msgstr "Senza categoria"
|
2292 |
|
2293 |
msgid ""
|
2294 |
"Dear {client_name}.\n"
|
2295 |
-
"
|
2296 |
-
"This is a confirmation that you have booked {service_name}.\n"
|
2297 |
-
"\n"
|
2298 |
-
"We are waiting you at {company_address} on {appointment_date} at "
|
2299 |
"{appointment_time}.\n"
|
2300 |
-
"\n"
|
2301 |
"Thank you for choosing our company.\n"
|
2302 |
-
"\n"
|
2303 |
"{company_name}\n"
|
2304 |
"{company_phone}\n"
|
2305 |
"{company_website}"
|
2306 |
msgstr ""
|
2307 |
-
"Gentile {client_name}.\n"
|
2308 |
-
"\n"
|
2309 |
-
"Questa è la conferma per la tua prenotazione per {service_name}.\n"
|
2310 |
-
"\n"
|
2311 |
-
"Ti spettiamo presso {company_address} il {appointment_date} alle "
|
2312 |
-
"{appointment_time}.\n"
|
2313 |
-
"\n"
|
2314 |
-
"Grazie per aver scelto la nostra azienda.\n"
|
2315 |
-
"\n"
|
2316 |
-
"{company_name}\n"
|
2317 |
-
"{company_phone}\n"
|
2318 |
-
"{company_website}"
|
2319 |
|
2320 |
msgid ""
|
2321 |
"Hello.\n"
|
2322 |
-
"
|
2323 |
-
"You have a new booking.\n"
|
2324 |
-
"\n"
|
2325 |
"Service: {service_name}\n"
|
2326 |
"Date: {appointment_date}\n"
|
2327 |
"Time: {appointment_time}\n"
|
@@ -2329,57 +2109,30 @@ msgid ""
|
|
2329 |
"Client phone: {client_phone}\n"
|
2330 |
"Client email: {client_email}"
|
2331 |
msgstr ""
|
2332 |
-
"Ciao.\n"
|
2333 |
-
"\n"
|
2334 |
-
"Hai una nuova prenotazione.\n"
|
2335 |
-
"\n"
|
2336 |
-
"Servizio: {service_name}\n"
|
2337 |
-
"Data: {appointment_date}\n"
|
2338 |
-
"Orario: {appointment_time}\n"
|
2339 |
-
"Nome del cliente: {client_name}\n"
|
2340 |
-
"Telefono del cliente: {client_phone}\n"
|
2341 |
-
"eMail del cliente: {client_email}"
|
2342 |
|
2343 |
msgid ""
|
2344 |
"Dear {client_name}.\n"
|
2345 |
-
"
|
2346 |
-
"
|
2347 |
-
"{
|
2348 |
-
"\n"
|
2349 |
"Thank you for choosing our company.\n"
|
2350 |
-
"\n"
|
2351 |
"{company_name}\n"
|
2352 |
"{company_phone}\n"
|
2353 |
"{company_website}"
|
2354 |
msgstr ""
|
2355 |
-
|
2356 |
-
|
2357 |
-
"
|
2358 |
-
"\n"
|
2359 |
-
"
|
2360 |
-
"\n"
|
2361 |
-
"Service: {service_name}\n"
|
2362 |
-
"Date: {appointment_date}\n"
|
2363 |
-
"Time: {appointment_time}\n"
|
2364 |
-
"Client name: {client_name}\n"
|
2365 |
-
"Client phone: {client_phone}\n"
|
2366 |
-
"Client email: {client_email}"
|
2367 |
-
msgstr ""
|
2368 |
-
|
2369 |
-
msgid ""
|
2370 |
-
"Dear {client_name}.\n"
|
2371 |
-
"This is a confirmation that you have booked {service_name}.\n"
|
2372 |
-
"We are waiting you at {company_address} on {appointment_date} at "
|
2373 |
-
"{appointment_time}.\n"
|
2374 |
-
"Thank you for choosing our company.\n"
|
2375 |
"{company_name}\n"
|
2376 |
"{company_phone}\n"
|
2377 |
"{company_website}"
|
2378 |
-
msgstr ""
|
2379 |
|
2380 |
msgid ""
|
2381 |
"Hello.\n"
|
2382 |
-
"
|
|
|
2383 |
"Service: {service_name}\n"
|
2384 |
"Date: {appointment_date}\n"
|
2385 |
"Time: {appointment_time}\n"
|
@@ -2387,27 +2140,21 @@ msgid ""
|
|
2387 |
"Client phone: {client_phone}\n"
|
2388 |
"Client email: {client_email}"
|
2389 |
msgstr ""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2390 |
|
2391 |
msgid ""
|
2392 |
-
"
|
2393 |
-
"You have cancelled your booking of {service_name} on {appointment_date} at "
|
2394 |
-
"{appointment_time}.\n"
|
2395 |
-
"Thank you for choosing our company.\n"
|
2396 |
-
"{company_name}\n"
|
2397 |
-
"{company_phone}\n"
|
2398 |
-
"{company_website}"
|
2399 |
-
msgstr ""
|
2400 |
-
|
2401 |
-
msgid ""
|
2402 |
-
"Hello.\n"
|
2403 |
-
"The following booking has been cancelled.\n"
|
2404 |
-
"Service: {service_name}\n"
|
2405 |
-
"Date: {appointment_date}\n"
|
2406 |
-
"Time: {appointment_time}\n"
|
2407 |
-
"Client name: {client_name}\n"
|
2408 |
-
"Client phone: {client_phone}\n"
|
2409 |
-
"Client email: {client_email}"
|
2410 |
msgstr ""
|
|
|
|
|
2411 |
|
2412 |
msgid ""
|
2413 |
"Dear {client_name}.\n"
|
@@ -2419,6 +2166,12 @@ msgid ""
|
|
2419 |
"{company_website}"
|
2420 |
msgstr ""
|
2421 |
|
|
|
|
|
|
|
|
|
|
|
|
|
2422 |
msgid ""
|
2423 |
"Dear {client_name}.\n"
|
2424 |
"Thank you for choosing {company_name}. We hope you were satisfied with your "
|
@@ -2429,6 +2182,13 @@ msgid ""
|
|
2429 |
"{company_website}"
|
2430 |
msgstr ""
|
2431 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2432 |
msgid ""
|
2433 |
"Hello.\n"
|
2434 |
"Your agenda for tomorrow is:\n"
|
@@ -2442,6 +2202,14 @@ msgstr ""
|
|
2442 |
"Grazie! La tua prenotazione è stata completata. Ti abbiamo inviato una eMail "
|
2443 |
"con i dettagli del tuo appuntamento."
|
2444 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2445 |
msgid ""
|
2446 |
"You selected a booking for {service_name} by {staff_name} at "
|
2447 |
"{appointment_time} on {appointment_date}. The price for the service is "
|
@@ -2468,12 +2236,21 @@ msgstr ""
|
|
2468 |
"{service_name} con {staff_name}.\n"
|
2469 |
"Clicca su una fascia oraria per procedere con la prenotazione."
|
2470 |
|
2471 |
-
msgid "
|
2472 |
-
msgstr "
|
2473 |
|
2474 |
msgid "Finish by"
|
2475 |
msgstr "Fino alle"
|
2476 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2477 |
msgid "I will pay locally"
|
2478 |
msgstr "Pagherò localmente"
|
2479 |
|
@@ -2486,183 +2263,330 @@ msgstr "A partire dalle"
|
|
2486 |
msgid "Select category"
|
2487 |
msgstr "Seleziona una categoria"
|
2488 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2489 |
msgid "Login"
|
2490 |
msgstr "Login"
|
2491 |
|
2492 |
msgid "Done"
|
2493 |
msgstr "Fatto"
|
2494 |
|
2495 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
2496 |
msgstr ""
|
2497 |
|
2498 |
-
msgid "New booking
|
2499 |
msgstr ""
|
2500 |
|
2501 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2502 |
msgstr ""
|
2503 |
|
2504 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2505 |
msgstr ""
|
2506 |
|
2507 |
-
msgid "
|
2508 |
-
msgstr ""
|
2509 |
|
2510 |
-
msgid "
|
2511 |
-
msgstr ""
|
2512 |
|
2513 |
-
msgid "
|
2514 |
-
msgstr ""
|
2515 |
|
2516 |
-
msgid "
|
2517 |
-
msgstr "
|
2518 |
|
2519 |
-
msgid "
|
2520 |
-
msgstr "
|
2521 |
|
2522 |
-
msgid "
|
2523 |
-
msgstr "
|
2524 |
|
2525 |
-
msgid "
|
2526 |
-
msgstr "
|
2527 |
|
2528 |
-
msgid "
|
2529 |
-
msgstr "
|
2530 |
|
2531 |
-
msgid "
|
2532 |
-
msgstr "
|
2533 |
|
2534 |
-
msgid "
|
2535 |
msgstr ""
|
2536 |
|
2537 |
-
msgid "
|
2538 |
-
|
|
|
|
|
|
|
|
|
2539 |
|
2540 |
-
msgid "
|
2541 |
-
msgstr "
|
2542 |
|
2543 |
-
msgid "
|
2544 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2545 |
|
2546 |
-
msgid "
|
2547 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2548 |
|
2549 |
-
|
2550 |
-
|
|
|
|
|
|
|
2551 |
|
2552 |
-
|
2553 |
-
|
|
|
|
|
|
|
2554 |
|
2555 |
-
|
2556 |
-
|
|
|
|
|
|
|
2557 |
|
2558 |
-
|
2559 |
-
|
|
|
|
|
|
|
2560 |
|
2561 |
-
|
2562 |
-
|
|
|
2563 |
|
2564 |
-
|
2565 |
-
|
|
|
2566 |
|
2567 |
-
msgid "
|
2568 |
-
msgstr ""
|
2569 |
|
2570 |
-
msgid "
|
2571 |
-
msgstr "
|
2572 |
|
2573 |
-
msgid "
|
2574 |
-
msgstr "
|
2575 |
|
2576 |
-
msgid "
|
2577 |
-
msgstr "
|
2578 |
|
2579 |
-
msgid "
|
2580 |
-
msgstr "
|
2581 |
|
2582 |
-
|
2583 |
-
msgid ""
|
2584 |
-
"Dear Bookly Cloud customer.\n"
|
2585 |
-
"We would like to notify you that your Bookly Cloud balance fell below 5 USD. "
|
2586 |
-
"To use our service without interruptions please recharge your balance by "
|
2587 |
-
"visiting Bookly Cloud page <a href='%s'>here</a>.\n"
|
2588 |
-
"\n"
|
2589 |
-
"If you want to stop receiving these notifications, please update your "
|
2590 |
-
"settings <a href='%s'>here</a>."
|
2591 |
msgstr ""
|
2592 |
|
2593 |
-
msgid "
|
2594 |
msgstr ""
|
2595 |
|
2596 |
-
msgid ""
|
2597 |
-
"You don't have enough Bookly Cloud credits to send this message. Please add "
|
2598 |
-
"funds to your balance and try again."
|
2599 |
msgstr ""
|
2600 |
|
2601 |
-
msgid "
|
2602 |
-
msgstr "
|
2603 |
|
2604 |
-
msgid "
|
2605 |
-
msgstr "
|
2606 |
|
2607 |
-
msgid "
|
2608 |
-
msgstr "
|
2609 |
|
2610 |
-
msgid "
|
2611 |
-
msgstr "
|
2612 |
|
2613 |
-
msgid "
|
2614 |
-
msgstr "
|
2615 |
|
2616 |
-
msgid "
|
2617 |
-
msgstr "
|
2618 |
|
2619 |
-
msgid "
|
2620 |
-
msgstr "
|
2621 |
|
2622 |
-
msgid "
|
2623 |
-
msgstr "
|
2624 |
|
2625 |
-
msgid "
|
2626 |
-
msgstr "
|
2627 |
|
2628 |
-
msgid "
|
2629 |
-
msgstr "
|
2630 |
|
2631 |
-
msgid "
|
2632 |
-
msgstr "
|
2633 |
|
2634 |
-
msgid "
|
2635 |
-
msgstr "
|
2636 |
|
2637 |
-
msgid "
|
2638 |
-
msgstr ""
|
2639 |
|
2640 |
-
msgid "
|
2641 |
msgstr ""
|
2642 |
|
2643 |
-
msgid "
|
2644 |
-
msgstr "
|
2645 |
|
2646 |
-
msgid "
|
2647 |
-
msgstr "
|
2648 |
|
2649 |
-
|
2650 |
-
|
2651 |
-
msgstr "\"%s\" è troppo lungo (%d caratteri max)."
|
2652 |
|
2653 |
-
msgid "
|
2654 |
-
msgstr "
|
2655 |
|
2656 |
-
msgid "
|
2657 |
msgstr ""
|
2658 |
|
2659 |
-
msgid "
|
2660 |
-
msgstr ""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2661 |
|
2662 |
-
|
2663 |
-
msgid ""
|
2664 |
-
"Your %s: %s is already associated with another %s.<br/>Press Update if we "
|
2665 |
-
"should update your user data, or press Cancel to edit entered data."
|
2666 |
msgstr ""
|
2667 |
|
2668 |
#, php-format
|
@@ -2708,602 +2632,551 @@ msgstr ""
|
|
2708 |
msgid "No updates available"
|
2709 |
msgstr ""
|
2710 |
|
2711 |
-
msgid "
|
2712 |
-
msgstr "
|
2713 |
-
|
2714 |
-
msgid "Show more"
|
2715 |
-
msgstr "Mostra di più"
|
2716 |
-
|
2717 |
-
msgid "Session error."
|
2718 |
-
msgstr "Errore di sessione."
|
2719 |
-
|
2720 |
-
msgid "Form ID error."
|
2721 |
-
msgstr "Errore Form ID."
|
2722 |
-
|
2723 |
-
msgid "Pay locally is not available."
|
2724 |
-
msgstr "Pagare in loco non è disponibile."
|
2725 |
-
|
2726 |
-
msgid "Invalid gateway."
|
2727 |
-
msgstr "Gateway non valido."
|
2728 |
|
2729 |
-
msgid "
|
2730 |
msgstr ""
|
2731 |
|
2732 |
-
msgid "
|
2733 |
-
msgstr ""
|
2734 |
|
2735 |
-
msgid "
|
2736 |
-
msgstr "
|
2737 |
|
2738 |
-
msgid "
|
2739 |
-
msgstr ""
|
2740 |
|
2741 |
-
msgid "
|
2742 |
msgstr ""
|
2743 |
|
2744 |
-
msgid "
|
2745 |
-
msgstr "Login"
|
2746 |
-
|
2747 |
-
msgid "Data already in use"
|
2748 |
-
msgstr "Dati già in uso"
|
2749 |
-
|
2750 |
-
msgid "Update"
|
2751 |
msgstr ""
|
2752 |
|
2753 |
-
msgid "
|
2754 |
-
msgstr "Caricamento in corso ..."
|
2755 |
-
|
2756 |
-
msgid "Powered by"
|
2757 |
msgstr ""
|
2758 |
|
2759 |
-
msgid "
|
2760 |
-
msgstr "Pagina di re-indirizzamento"
|
2761 |
-
|
2762 |
-
#, php-format
|
2763 |
-
msgid ""
|
2764 |
-
"If you are not redirected automatically, follow the <a href=\"%s\">link</a>."
|
2765 |
msgstr ""
|
2766 |
-
"Se non vieni automaticamente re-indirizzato, segui questo <a href=\"%s\">"
|
2767 |
-
"link</a>."
|
2768 |
-
|
2769 |
-
msgid "No time is available for selected criteria."
|
2770 |
-
msgstr "Nessun orario disponibile per i criteri selezionati."
|
2771 |
|
2772 |
-
msgid "
|
2773 |
msgstr ""
|
2774 |
|
2775 |
-
msgid "
|
2776 |
msgstr ""
|
2777 |
|
2778 |
-
msgid ""
|
2779 |
-
"See the number of appointments and total revenue for the selected period"
|
2780 |
msgstr ""
|
2781 |
|
2782 |
-
msgid "
|
2783 |
-
msgstr "
|
2784 |
-
|
2785 |
-
msgid "Edit customer"
|
2786 |
-
msgstr "Modifica cliente"
|
2787 |
-
|
2788 |
-
msgid "Create customer"
|
2789 |
-
msgstr "Crea cliente"
|
2790 |
|
2791 |
-
msgid "
|
2792 |
-
msgstr "
|
2793 |
|
2794 |
-
msgid "
|
2795 |
-
msgstr ""
|
2796 |
|
2797 |
-
|
2798 |
-
|
|
|
2799 |
|
2800 |
-
msgid "
|
2801 |
-
msgstr ""
|
2802 |
|
2803 |
-
msgid "
|
2804 |
msgstr ""
|
2805 |
|
2806 |
-
msgid "
|
2807 |
msgstr ""
|
2808 |
|
|
|
2809 |
msgid ""
|
2810 |
-
"
|
2811 |
-
"
|
2812 |
-
"appointments to the selected customer. Are you sure you want to continue?"
|
2813 |
-
msgstr ""
|
2814 |
-
|
2815 |
-
msgid "Merge"
|
2816 |
-
msgstr ""
|
2817 |
-
|
2818 |
-
msgid "Bookly Cloud Purchases"
|
2819 |
msgstr ""
|
2820 |
|
2821 |
-
msgid "
|
2822 |
-
msgstr "Nessun record per il periodo selezionato."
|
2823 |
-
|
2824 |
-
msgid "Invoice"
|
2825 |
msgstr ""
|
2826 |
|
2827 |
msgid ""
|
2828 |
-
"To
|
2829 |
-
"
|
2830 |
msgstr ""
|
2831 |
|
2832 |
-
msgid "
|
2833 |
msgstr ""
|
2834 |
|
2835 |
-
msgid "
|
2836 |
msgstr ""
|
2837 |
|
2838 |
-
|
2839 |
-
|
2840 |
-
msgid_plural "%d sales"
|
2841 |
-
msgstr[0] "%d vendita"
|
2842 |
-
msgstr[1] "%d vendite"
|
2843 |
-
|
2844 |
-
#, php-format
|
2845 |
-
msgid "%d review"
|
2846 |
-
msgid_plural "%d reviews"
|
2847 |
-
msgstr[0] "%d revisione"
|
2848 |
-
msgstr[1] "%d revisioni"
|
2849 |
|
2850 |
-
msgid "
|
2851 |
-
msgstr ""
|
2852 |
|
2853 |
-
msgid "
|
2854 |
-
msgstr ""
|
2855 |
|
2856 |
-
msgid "
|
2857 |
-
msgstr ""
|
2858 |
|
2859 |
-
msgid "
|
2860 |
-
msgstr ""
|
2861 |
|
2862 |
-
msgid "
|
2863 |
msgstr ""
|
2864 |
|
2865 |
-
msgid "
|
2866 |
msgstr ""
|
2867 |
|
2868 |
-
msgid "
|
2869 |
msgstr ""
|
2870 |
|
2871 |
-
msgid "
|
2872 |
-
msgstr ""
|
2873 |
|
2874 |
-
msgid "
|
2875 |
-
msgstr ""
|
2876 |
|
2877 |
-
msgid "
|
2878 |
-
msgstr ""
|
2879 |
|
2880 |
msgid "No records."
|
2881 |
msgstr "Nessuna registrazione."
|
2882 |
|
2883 |
-
msgid "
|
2884 |
-
msgstr ""
|
2885 |
-
|
2886 |
-
msgid "Auto-Recharge"
|
2887 |
-
msgstr "Auto-ricarica"
|
2888 |
-
|
2889 |
-
msgid "Notifications"
|
2890 |
-
msgstr "Notifiche"
|
2891 |
-
|
2892 |
-
msgid "Change password"
|
2893 |
-
msgstr "Cambia password"
|
2894 |
-
|
2895 |
-
#, php-format
|
2896 |
-
msgid "We will only charge you when your balance falls below %s"
|
2897 |
-
msgstr ""
|
2898 |
-
|
2899 |
-
msgid "Company name"
|
2900 |
-
msgstr "Nome dell'azienda"
|
2901 |
-
|
2902 |
-
msgid "Company address"
|
2903 |
-
msgstr ""
|
2904 |
-
|
2905 |
-
msgid "Company address line 2"
|
2906 |
-
msgstr ""
|
2907 |
-
|
2908 |
-
msgid "You can change the country <a href=\"#\">here</a>"
|
2909 |
-
msgstr ""
|
2910 |
-
|
2911 |
-
msgid "Company number"
|
2912 |
-
msgstr ""
|
2913 |
-
|
2914 |
-
msgid "VAT / Tax number"
|
2915 |
-
msgstr ""
|
2916 |
-
|
2917 |
-
msgid "Additional text to include in invoice"
|
2918 |
-
msgstr ""
|
2919 |
-
|
2920 |
-
msgid "Send invoice"
|
2921 |
-
msgstr ""
|
2922 |
-
|
2923 |
-
#, php-format
|
2924 |
-
msgid "The invoice will be sent to <a href=\"mailto:%1$s\">%1$s</a>"
|
2925 |
-
msgstr ""
|
2926 |
-
|
2927 |
-
msgid "Copy invoice to another email(s)"
|
2928 |
-
msgstr ""
|
2929 |
-
|
2930 |
-
msgid "Enter one or more email addresses separated by commas."
|
2931 |
-
msgstr ""
|
2932 |
-
|
2933 |
-
msgid "Save invoice settings"
|
2934 |
-
msgstr ""
|
2935 |
-
|
2936 |
-
msgid "Send email notification to administrators at low balance"
|
2937 |
-
msgstr "Invia notifica e-mail agli amministratori a basso equilibrio"
|
2938 |
-
|
2939 |
-
msgid "Send weekly summary to administrators"
|
2940 |
-
msgstr "Invia riepilogo settimanale per gli amministratori"
|
2941 |
-
|
2942 |
-
msgid ""
|
2943 |
-
"Your country is the location from where you consume Bookly SMS services and "
|
2944 |
-
"is used to provide you with the payment methods available in that country."
|
2945 |
-
msgstr ""
|
2946 |
-
|
2947 |
-
msgid "Update country"
|
2948 |
msgstr ""
|
2949 |
|
2950 |
-
msgid "
|
2951 |
-
msgstr "
|
2952 |
-
|
2953 |
-
msgid "New password"
|
2954 |
-
msgstr "Nuova password"
|
2955 |
-
|
2956 |
-
msgid "Repeat new password"
|
2957 |
-
msgstr "Ripetere la nuova password"
|
2958 |
-
|
2959 |
-
msgid "date of appointment"
|
2960 |
-
msgstr "data dell'appuntamento"
|
2961 |
-
|
2962 |
-
msgid "end date of appointment"
|
2963 |
-
msgstr "data di fine dell'appuntamento"
|
2964 |
|
2965 |
-
msgid "
|
2966 |
-
msgstr "
|
2967 |
|
2968 |
-
msgid "
|
2969 |
msgstr ""
|
2970 |
|
2971 |
-
msgid "time
|
2972 |
-
msgstr "
|
2973 |
|
2974 |
-
msgid "
|
2975 |
-
msgstr "
|
2976 |
|
2977 |
-
msgid "
|
2978 |
-
msgstr "
|
2979 |
|
2980 |
-
msgid "
|
2981 |
-
msgstr "
|
2982 |
|
2983 |
-
msgid "
|
2984 |
-
msgstr "
|
2985 |
|
2986 |
-
msgid "
|
2987 |
-
msgstr "
|
2988 |
|
2989 |
-
msgid "
|
2990 |
-
msgstr "
|
2991 |
|
2992 |
-
msgid "
|
2993 |
-
msgstr "
|
2994 |
|
2995 |
-
msgid "
|
2996 |
-
msgstr "
|
2997 |
|
2998 |
-
msgid "
|
2999 |
-
msgstr "
|
3000 |
|
3001 |
-
msgid "
|
3002 |
-
msgstr "
|
3003 |
|
3004 |
-
msgid "
|
3005 |
-
msgstr "
|
3006 |
|
3007 |
-
msgid "
|
3008 |
-
msgstr "
|
3009 |
|
3010 |
-
msgid "
|
3011 |
-
msgstr "
|
3012 |
|
3013 |
-
msgid "
|
3014 |
-
msgstr "
|
3015 |
|
3016 |
-
msgid "
|
|
|
|
|
3017 |
msgstr ""
|
|
|
|
|
3018 |
|
3019 |
-
msgid "
|
3020 |
msgstr ""
|
3021 |
-
"URL di collegamento per l'approvazione appuntamento (da utilizzare "
|
3022 |
-
"all'interno <a> tag)"
|
3023 |
|
3024 |
msgid ""
|
3025 |
-
"
|
|
|
3026 |
msgstr ""
|
|
|
|
|
3027 |
|
3028 |
-
msgid "
|
3029 |
-
msgstr ""
|
3030 |
-
"URL di collegamento per l'annullamento appuntamento (da utilizzare "
|
3031 |
-
"all'interno <a> tag)"
|
3032 |
|
3033 |
-
msgid "
|
3034 |
-
msgstr "
|
3035 |
|
3036 |
-
msgid ""
|
3037 |
-
"
|
|
|
|
|
3038 |
msgstr ""
|
3039 |
-
"
|
3040 |
-
"all'interno <a> tag)"
|
3041 |
|
3042 |
-
msgid "
|
|
|
|
|
|
|
3043 |
msgstr ""
|
3044 |
|
3045 |
-
msgid "
|
3046 |
-
msgstr "
|
3047 |
|
3048 |
-
msgid "
|
|
|
|
|
|
|
3049 |
msgstr ""
|
|
|
|
|
|
|
3050 |
|
3051 |
-
msgid "
|
3052 |
-
msgstr "
|
3053 |
|
3054 |
-
msgid "
|
3055 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3056 |
|
3057 |
-
msgid "
|
3058 |
-
msgstr "
|
3059 |
|
3060 |
-
msgid "
|
3061 |
-
|
|
|
|
|
|
|
3062 |
|
3063 |
-
msgid "
|
3064 |
-
msgstr "
|
3065 |
|
3066 |
-
msgid "
|
3067 |
-
|
|
|
|
|
|
|
3068 |
|
3069 |
-
msgid "
|
3070 |
-
msgstr "
|
3071 |
|
3072 |
-
msgid "
|
3073 |
-
msgstr "
|
3074 |
|
3075 |
-
msgid "
|
3076 |
msgstr ""
|
3077 |
|
3078 |
-
msgid "
|
3079 |
-
msgstr "
|
3080 |
|
3081 |
-
msgid "
|
3082 |
-
msgstr "
|
3083 |
|
3084 |
-
msgid "
|
3085 |
-
msgstr "
|
3086 |
|
3087 |
-
msgid "
|
3088 |
-
msgstr "
|
3089 |
|
3090 |
-
msgid "
|
3091 |
-
msgstr "
|
3092 |
|
3093 |
-
msgid "
|
3094 |
-
|
|
|
|
|
3095 |
|
3096 |
-
msgid "
|
3097 |
-
msgstr "
|
3098 |
|
3099 |
-
msgid "
|
3100 |
-
|
|
|
|
|
3101 |
|
3102 |
-
msgid "
|
3103 |
-
msgstr "
|
3104 |
|
3105 |
-
msgid "
|
|
|
|
|
3106 |
msgstr ""
|
|
|
|
|
3107 |
|
3108 |
-
msgid "
|
3109 |
-
msgstr ""
|
3110 |
|
3111 |
-
msgid "
|
|
|
|
|
3112 |
msgstr ""
|
|
|
|
|
3113 |
|
3114 |
-
msgid "
|
3115 |
msgstr ""
|
3116 |
|
3117 |
msgid ""
|
3118 |
-
"Set
|
3119 |
-
"
|
3120 |
msgstr ""
|
3121 |
|
3122 |
-
msgid "
|
3123 |
msgstr ""
|
3124 |
|
3125 |
-
msgid "Sender name"
|
3126 |
-
msgstr "Nome del mittente"
|
3127 |
-
|
3128 |
-
msgid "Sender email"
|
3129 |
-
msgstr "eMail del mittente"
|
3130 |
-
|
3131 |
-
msgid "Send emails as"
|
3132 |
-
msgstr "Inviare email come"
|
3133 |
-
|
3134 |
msgid ""
|
3135 |
-
"
|
3136 |
-
"
|
3137 |
-
"are sent successfully."
|
3138 |
msgstr ""
|
3139 |
-
"HTML consente la formattazione, i colori, i font, posizionamento, ecc Con "
|
3140 |
-
"testo è necessario utilizzare la modalità Testo di editor rich-text di "
|
3141 |
-
"seguito. Su alcuni server solo i messaggi di posta elettronica di testo "
|
3142 |
-
"vengono inviati correttamente."
|
3143 |
|
3144 |
-
msgid "
|
3145 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3146 |
|
3147 |
-
msgid "
|
3148 |
-
msgstr "
|
3149 |
|
3150 |
-
msgid ""
|
3151 |
-
"If this option is enabled then the email address of the customer is used as "
|
3152 |
-
"a sender email address for notifications sent to staff members and "
|
3153 |
-
"administrators."
|
3154 |
msgstr ""
|
3155 |
-
"Se questa opzione è abilitata, l'indirizzo di posta elettronica del cliente "
|
3156 |
-
"viene utilizzato come indirizzo di posta elettronica del mittente per le "
|
3157 |
-
"notifiche inviate ai membri del personale e gli amministratori."
|
3158 |
|
3159 |
-
msgid "
|
3160 |
msgstr ""
|
3161 |
|
3162 |
-
msgid "
|
|
|
|
|
3163 |
msgstr ""
|
3164 |
|
3165 |
-
msgid "
|
3166 |
msgstr ""
|
3167 |
|
3168 |
-
#, php-format
|
3169 |
msgid ""
|
3170 |
-
"
|
3171 |
-
"
|
|
|
|
|
|
|
3172 |
msgstr ""
|
3173 |
-
"Per inviare notifiche pianificate fare riferimento al <a href=\"%2$s\">"
|
3174 |
-
"messaggio</a> di <a href=\"%1$s\">Bookly Multisite</a> add-on."
|
3175 |
|
3176 |
msgid ""
|
3177 |
-
"
|
3178 |
-
"
|
3179 |
msgstr ""
|
3180 |
-
"Per inviare notifiche pianificate, eseguire il seguente comando ogni ora con "
|
3181 |
-
"il tuo cron:"
|
3182 |
|
3183 |
-
msgid "
|
3184 |
-
msgstr "
|
3185 |
|
3186 |
-
msgid "
|
3187 |
-
msgstr "
|
3188 |
|
3189 |
-
msgid "
|
3190 |
-
msgstr "
|
3191 |
|
3192 |
-
msgid "
|
3193 |
-
msgstr "
|
3194 |
|
3195 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3196 |
msgstr ""
|
|
|
|
|
|
|
3197 |
|
3198 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3199 |
msgstr ""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3200 |
|
3201 |
-
msgid "
|
3202 |
-
msgstr "
|
3203 |
|
3204 |
-
msgid "
|
|
|
|
|
|
|
3205 |
msgstr ""
|
|
|
|
|
|
|
3206 |
|
3207 |
-
msgid "
|
3208 |
-
msgstr "Semplice"
|
3209 |
-
|
3210 |
-
#, php-format
|
3211 |
-
msgid "%d service"
|
3212 |
-
msgid_plural "%d services"
|
3213 |
-
msgstr[0] "%d servizio"
|
3214 |
-
msgstr[1] "%d servizi"
|
3215 |
-
|
3216 |
-
#, php-format
|
3217 |
-
msgid "Copy of %s"
|
3218 |
msgstr ""
|
3219 |
|
3220 |
-
msgid "
|
|
|
|
|
3221 |
msgstr ""
|
3222 |
|
3223 |
-
msgid "
|
3224 |
msgstr ""
|
3225 |
|
3226 |
-
msgid "
|
|
|
|
|
3227 |
msgstr ""
|
3228 |
|
3229 |
-
msgid "
|
3230 |
-
msgstr "
|
3231 |
|
3232 |
msgid ""
|
3233 |
-
"
|
3234 |
-
"
|
3235 |
-
"
|
|
|
3236 |
msgstr ""
|
3237 |
-
"Stai per modificare un servizio che è configurabile separatamente per ogni "
|
3238 |
-
"membro dello staff. Vuoi aggiornarlo anche nelle impostazioni dello staff?"
|
3239 |
-
|
3240 |
-
msgid "Remember my choice"
|
3241 |
-
msgstr "Ricorda la mia scelta"
|
3242 |
-
|
3243 |
-
msgid "No, update just here in services"
|
3244 |
-
msgstr "No, aggiorna il servizio solo qui"
|
3245 |
-
|
3246 |
-
msgid "Color"
|
3247 |
-
msgstr "Colore"
|
3248 |
-
|
3249 |
-
msgid "Providers"
|
3250 |
-
msgstr "Provider"
|
3251 |
|
3252 |
-
msgid "
|
3253 |
-
msgstr "
|
3254 |
|
3255 |
-
msgid "
|
3256 |
-
msgstr "
|
3257 |
|
3258 |
-
|
3259 |
-
|
3260 |
-
msgstr "Questo testo può essere inserito in notifiche con %s codice."
|
3261 |
|
3262 |
-
msgid "
|
3263 |
msgstr ""
|
3264 |
|
3265 |
-
msgid ""
|
3266 |
-
"Allows to set the start and end times for an appointment for services with "
|
3267 |
-
"the duration of 1 day or longer. This time will be displayed in "
|
3268 |
-
"notifications to customers, backend calendar and codes for booking form."
|
3269 |
msgstr ""
|
3270 |
|
3271 |
-
msgid "
|
3272 |
-
msgstr "
|
3273 |
|
3274 |
-
msgid "
|
3275 |
msgstr ""
|
3276 |
|
|
|
3277 |
msgid ""
|
3278 |
-
"
|
3279 |
-
"
|
3280 |
-
|
|
|
|
|
|
|
|
|
3281 |
msgstr ""
|
3282 |
|
3283 |
msgid "SMS Notifications"
|
3284 |
msgstr "Avvisi via SMS"
|
3285 |
|
3286 |
-
msgid "Sender ID request is sent."
|
3287 |
-
msgstr "Richiesta di ID del mittente è stato inviato."
|
3288 |
-
|
3289 |
-
msgid "Sender ID is reset to default."
|
3290 |
-
msgstr "ID mittente viene reimpostato ai valori predefiniti."
|
3291 |
-
|
3292 |
-
msgid "SMS has been sent successfully."
|
3293 |
-
msgstr "SMS è stato inviato correttamente."
|
3294 |
-
|
3295 |
msgid "Approved at"
|
3296 |
msgstr "Approvato a"
|
3297 |
|
3298 |
msgid "Change the sender's name to your phone number or any other name"
|
3299 |
msgstr ""
|
3300 |
|
|
|
|
|
|
|
3301 |
msgid "SMS Details"
|
3302 |
msgstr "SMS Dettagli"
|
3303 |
|
3304 |
msgid "Price list"
|
3305 |
msgstr "Listino prezzi"
|
3306 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3307 |
msgid ""
|
3308 |
"Please take into account that not all countries by law allow custom SMS "
|
3309 |
"sender ID. Please check if particular country supports custom sender ID in "
|
@@ -3332,257 +3205,228 @@ msgstr "Annulla richiesta"
|
|
3332 |
msgid "Can only contain letters or digits (up to 11 characters)."
|
3333 |
msgstr "Può contenere solo lettere o cifre (fino a 11 caratteri)."
|
3334 |
|
3335 |
-
msgid ""
|
3336 |
-
"
|
3337 |
-
"href=\"mailto:support@bookly.info\">support@bookly.info</a>."
|
3338 |
-
msgstr ""
|
3339 |
|
3340 |
-
msgid "
|
3341 |
-
msgstr "
|
3342 |
|
3343 |
-
msgid "
|
3344 |
-
msgstr "
|
3345 |
|
3346 |
-
msgid "
|
3347 |
msgstr ""
|
3348 |
|
3349 |
-
msgid ""
|
3350 |
-
"Enter a phone number in international format. E.g. for the United States a "
|
3351 |
-
"valid phone number would be +17327572923."
|
3352 |
msgstr ""
|
3353 |
-
"Digitare un numero di telefono in formato internazionale. Ad es per l'Italia "
|
3354 |
-
"un numero di telefono valido sarebbe +393555333222."
|
3355 |
|
3356 |
-
msgid "
|
3357 |
-
msgstr ""
|
3358 |
|
3359 |
-
msgid "
|
3360 |
msgstr ""
|
3361 |
|
3362 |
-
msgid "
|
3363 |
msgstr ""
|
3364 |
|
3365 |
-
msgid "
|
|
|
|
|
3366 |
msgstr ""
|
3367 |
|
3368 |
-
msgid "
|
3369 |
msgstr ""
|
3370 |
|
3371 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3372 |
msgstr ""
|
3373 |
|
3374 |
-
msgid ""
|
3375 |
-
"Bookly will simplify the booking process for your customers. This plugin "
|
3376 |
-
"creates another touchpoint to convert your visitors into customers. With "
|
3377 |
-
"Bookly your clients can see your availability, pick the services you provide,"
|
3378 |
-
" book them online and much more."
|
3379 |
msgstr ""
|
3380 |
|
3381 |
-
msgid ""
|
3382 |
-
"To start using Bookly, you need to set up the services you provide and "
|
3383 |
-
"specify the staff members who will provide those services."
|
3384 |
msgstr ""
|
3385 |
|
3386 |
-
msgid ""
|
3387 |
-
"Add a staff member (you can add only one service provider with a free "
|
3388 |
-
"version of Bookly)."
|
3389 |
msgstr ""
|
3390 |
|
3391 |
-
msgid ""
|
3392 |
-
"Add services you provide (up to five with a free version of Bookly) and "
|
3393 |
-
"assign them to a staff member."
|
3394 |
msgstr ""
|
3395 |
|
3396 |
-
msgid ""
|
3397 |
-
"Go to Posts/Pages and click on the 'Add Bookly booking form' button in the "
|
3398 |
-
"page editor to publish the booking form on your website."
|
3399 |
msgstr ""
|
3400 |
|
3401 |
-
|
3402 |
-
msgid ""
|
3403 |
-
"Bookly can boost your sales and scale together with your business. Get more "
|
3404 |
-
"features and remove the limits by upgrading to the paid version with the <a "
|
3405 |
-
"href=\"%s\" target=\"_blank\">Bookly Pro add-on</a>, which allows you to use "
|
3406 |
-
"a vast number of additional features and settings for booking services, "
|
3407 |
-
"install other add-ons for Bookly, and includes six months of customer "
|
3408 |
-
"support."
|
3409 |
msgstr ""
|
3410 |
|
3411 |
-
msgid "
|
3412 |
-
msgstr "
|
3413 |
|
3414 |
-
|
3415 |
-
|
|
|
3416 |
|
3417 |
-
msgid "
|
3418 |
msgstr ""
|
3419 |
|
3420 |
-
msgid "
|
3421 |
msgstr ""
|
3422 |
|
3423 |
-
msgid "
|
3424 |
msgstr ""
|
3425 |
|
3426 |
-
msgid "
|
3427 |
-
msgstr "
|
3428 |
|
3429 |
-
msgid "
|
3430 |
msgstr ""
|
3431 |
|
3432 |
-
msgid "
|
|
|
|
|
3433 |
msgstr ""
|
3434 |
|
3435 |
-
msgid "
|
3436 |
-
msgstr "Appuntamenti"
|
3437 |
-
|
3438 |
-
msgid "New appointment"
|
3439 |
-
msgstr "Nuovo appuntamento"
|
3440 |
-
|
3441 |
-
msgid "Custom"
|
3442 |
msgstr ""
|
3443 |
|
3444 |
-
msgid "
|
3445 |
-
msgstr "
|
3446 |
|
3447 |
-
msgid "
|
3448 |
-
msgstr "
|
3449 |
|
3450 |
-
msgid "
|
3451 |
msgstr ""
|
3452 |
|
3453 |
-
msgid "
|
3454 |
msgstr ""
|
3455 |
|
3456 |
-
msgid "
|
3457 |
msgstr ""
|
3458 |
|
3459 |
-
msgid "
|
3460 |
msgstr ""
|
3461 |
|
3462 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
3463 |
msgstr ""
|
|
|
|
|
3464 |
|
3465 |
-
msgid "
|
3466 |
-
msgstr "
|
3467 |
|
3468 |
-
msgid "
|
3469 |
-
msgstr "
|
3470 |
|
3471 |
-
msgid "
|
3472 |
-
msgstr "
|
3473 |
|
3474 |
-
msgid "
|
3475 |
-
msgstr "
|
3476 |
|
3477 |
-
msgid "
|
3478 |
msgstr ""
|
3479 |
-
"Il tuo CSS personalizzato è stato salvato. Aggiorna la pagina per vedere le "
|
3480 |
-
"tue modifiche."
|
3481 |
|
3482 |
-
msgid "
|
3483 |
-
msgstr "
|
3484 |
|
3485 |
-
|
3486 |
-
|
|
|
|
|
|
|
3487 |
|
3488 |
-
|
|
|
3489 |
msgstr ""
|
3490 |
|
3491 |
-
msgid "
|
3492 |
-
msgstr "Clicca sui testi sottolineati per modificarli."
|
3493 |
-
|
3494 |
-
msgid "How to publish this form on your web site?"
|
3495 |
msgstr ""
|
3496 |
|
|
|
3497 |
msgid ""
|
3498 |
-
"
|
3499 |
-
"
|
3500 |
-
"like to keep or remove from the booking form. Click Insert, and the booking "
|
3501 |
-
"form will be added to the page."
|
3502 |
msgstr ""
|
3503 |
|
3504 |
-
|
|
|
|
|
|
|
3505 |
msgstr ""
|
3506 |
|
3507 |
-
msgid "
|
3508 |
-
|
3509 |
-
|
3510 |
-
|
3511 |
-
msgstr "Mostra il prezzo del servizio accanto al nome del dipendente"
|
3512 |
-
|
3513 |
-
msgid "Show service duration next to service name"
|
3514 |
-
msgstr "Mostra la durata del servizio accanto al nome del servizio"
|
3515 |
-
|
3516 |
-
msgid "Show calendar"
|
3517 |
-
msgstr "Mostra il calendario"
|
3518 |
-
|
3519 |
-
msgid "Show blocked timeslots"
|
3520 |
-
msgstr "Mostra le fasce orarie occupate"
|
3521 |
|
3522 |
-
msgid "
|
3523 |
-
|
|
|
|
|
3524 |
|
3525 |
-
msgid "
|
3526 |
-
msgstr "
|
3527 |
|
3528 |
-
msgid "
|
3529 |
-
|
|
|
|
|
3530 |
|
3531 |
-
msgid "
|
3532 |
-
msgstr "
|
3533 |
|
3534 |
-
msgid "
|
3535 |
-
msgstr "
|
3536 |
|
3537 |
-
msgid "
|
3538 |
msgstr ""
|
3539 |
-
"Non dimenticare di aggiornare la tua email e i codici SMS per i nomi dei "
|
3540 |
-
"clienti"
|
3541 |
|
3542 |
-
|
3543 |
-
|
3544 |
-
|
|
|
3545 |
|
3546 |
-
msgid "
|
3547 |
msgstr ""
|
3548 |
|
3549 |
-
msgid "
|
3550 |
msgstr ""
|
3551 |
|
3552 |
msgid ""
|
3553 |
-
"
|
3554 |
-
"
|
3555 |
-
"ons, settings configuration or choices made on previous steps. Select option "
|
3556 |
-
"and click on the underlined text to edit."
|
3557 |
msgstr ""
|
3558 |
-
"Il modulo di prenotazione su questo passaggio può avere diversi set o stati "
|
3559 |
-
"dei suoi elementi. Dipende da varie condizioni come i componenti aggiuntivi "
|
3560 |
-
"installati/attivati, la configurazione delle impostazioni o le scelte "
|
3561 |
-
"eseguite nei passaggi precedenti. Seleziona l'opzione e fai clic sul testo "
|
3562 |
-
"sottolineato da modificare."
|
3563 |
|
3564 |
-
msgid "
|
3565 |
msgstr ""
|
3566 |
|
3567 |
-
|
|
|
3568 |
msgstr ""
|
3569 |
|
3570 |
-
msgid "
|
3571 |
msgstr ""
|
3572 |
|
3573 |
-
msgid "
|
3574 |
-
msgstr "
|
3575 |
-
|
3576 |
-
msgid "Edit custom CSS"
|
3577 |
-
msgstr "Modifica CSS personalizzato"
|
3578 |
-
|
3579 |
-
msgid "Set up your custom CSS styles"
|
3580 |
-
msgstr "Impostare gli stili CSS personalizzati"
|
3581 |
|
3582 |
-
msgid "
|
3583 |
-
msgstr "
|
3584 |
|
3585 |
-
msgid "
|
3586 |
msgstr ""
|
3587 |
|
3588 |
msgid "Congrats!"
|
@@ -3591,750 +3435,686 @@ msgstr ""
|
|
3591 |
msgid "Oops!"
|
3592 |
msgstr ""
|
3593 |
|
3594 |
-
msgid "
|
3595 |
msgstr ""
|
3596 |
|
3597 |
-
|
3598 |
-
msgid "Bookly %s required"
|
3599 |
msgstr ""
|
3600 |
|
3601 |
-
msgid "
|
3602 |
msgstr ""
|
3603 |
|
3604 |
-
msgid ""
|
3605 |
-
"This product is not supported by your version of Bookly plugin. Please "
|
3606 |
-
"update Bookly to the latest version."
|
3607 |
msgstr ""
|
3608 |
|
3609 |
-
msgid "
|
3610 |
msgstr ""
|
3611 |
|
3612 |
-
msgid "
|
3613 |
-
msgstr "
|
3614 |
|
3615 |
-
msgid "
|
3616 |
-
msgstr "
|
3617 |
|
3618 |
-
|
3619 |
-
msgid ""
|
3620 |
-
"WooCommerce cart is not set up. Follow the <a href=\"%s\">link</a> to "
|
3621 |
-
"correct this problem."
|
3622 |
msgstr ""
|
3623 |
-
"WooCommerce carrello non è impostato. Seguite il <a href=\"%s\">"
|
3624 |
-
"collegamento</a> per correggere questo problema."
|
3625 |
-
|
3626 |
-
msgid "Appointment with one participant"
|
3627 |
-
msgstr "Appuntamento con un partecipante"
|
3628 |
-
|
3629 |
-
msgid "Appointment with many participants"
|
3630 |
-
msgstr "Appuntamento con molti partecipanti"
|
3631 |
|
3632 |
-
msgid "
|
3633 |
msgstr ""
|
3634 |
|
3635 |
-
msgid "
|
3636 |
-
msgstr "
|
3637 |
|
3638 |
-
msgid ""
|
3639 |
-
"Select default country for the phone field in the 'Details' step of booking. "
|
3640 |
-
"You can also let Bookly determine the country based on the IP address of the "
|
3641 |
-
"client."
|
3642 |
msgstr ""
|
3643 |
-
"Selezionare un paese predefinito per il campo telefono nella fase 'Dettagli' "
|
3644 |
-
"di prenotazione. È anche possibile lasciare Bookly di determinare il paese "
|
3645 |
-
"in base all'indirizzo IP del client."
|
3646 |
|
3647 |
-
msgid "
|
3648 |
-
msgstr "
|
3649 |
|
3650 |
-
msgid "
|
3651 |
-
msgstr "
|
3652 |
|
3653 |
msgid ""
|
3654 |
-
"
|
3655 |
-
"
|
3656 |
-
"
|
3657 |
-
"
|
3658 |
-
"client enters their phone as \"(600) 555-2222\" the resulting phone number "
|
3659 |
-
"to send the SMS to will be \"+1600555222\"."
|
3660 |
msgstr ""
|
3661 |
-
"I vostri clienti devono avere i loro numeri di telefono in formato "
|
3662 |
-
"internazionale, al fine di ricevere messaggi di testo. Tuttavia è possibile "
|
3663 |
-
"specificare un codice di paese di default che verrà utilizzato come prefisso "
|
3664 |
-
"per tutti i numeri di telefono che non cominciano con \"+\" o \"00\". Ad es "
|
3665 |
-
"se si inserisce \"1\", come il codice del paese di default e un cliente "
|
3666 |
-
"entra nel loro telefono cellulare come \"(600) 555-2222\" il numero di "
|
3667 |
-
"telefono risultante per inviare l'SMS al sarà \"+1600555222\"."
|
3668 |
-
|
3669 |
-
msgid "Remember personal information in cookies"
|
3670 |
-
msgstr "Ricorda le informazioni personali nei cookie"
|
3671 |
|
3672 |
msgid ""
|
3673 |
-
"
|
3674 |
-
"
|
3675 |
-
"saved in cookies."
|
3676 |
msgstr ""
|
3677 |
-
"Se questa impostazione è abilitata, i clienti restituiti avranno i propri "
|
3678 |
-
"campi di informazioni personali nel punto Dettagli con i dati "
|
3679 |
-
"precedentemente salvati nei cookie."
|
3680 |
|
3681 |
-
msgid "
|
|
|
|
|
3682 |
msgstr ""
|
3683 |
|
3684 |
msgid ""
|
3685 |
-
"
|
3686 |
-
"
|
3687 |
msgstr ""
|
3688 |
|
3689 |
-
msgid "
|
|
|
|
|
3690 |
msgstr ""
|
3691 |
|
|
|
3692 |
msgid ""
|
3693 |
-
"
|
3694 |
-
"
|
|
|
|
|
|
|
|
|
3695 |
msgstr ""
|
3696 |
|
3697 |
-
msgid "
|
3698 |
-
msgstr "
|
3699 |
|
3700 |
-
msgid "
|
3701 |
-
msgstr "
|
3702 |
|
3703 |
-
msgid "
|
3704 |
msgstr ""
|
3705 |
|
3706 |
-
msgid "
|
3707 |
-
msgstr "
|
3708 |
|
3709 |
-
msgid "
|
3710 |
-
msgstr "
|
3711 |
|
3712 |
-
msgid "
|
3713 |
-
msgstr "
|
3714 |
|
3715 |
-
msgid "
|
3716 |
-
msgstr ""
|
3717 |
|
3718 |
-
msgid "
|
3719 |
-
msgstr "
|
3720 |
|
3721 |
-
msgid "
|
3722 |
-
msgstr "
|
3723 |
|
3724 |
-
msgid "
|
3725 |
-
msgstr "
|
3726 |
|
3727 |
-
msgid "
|
3728 |
msgstr ""
|
3729 |
-
"Prezzo totale della prenotazione (somma di tutte le voci della spesa dopo "
|
3730 |
-
"l'applicazione coupon)"
|
3731 |
|
3732 |
msgid ""
|
3733 |
-
"
|
3734 |
-
"
|
3735 |
-
"
|
3736 |
-
"
|
3737 |
-
"behavior of the booking system."
|
3738 |
msgstr ""
|
3739 |
-
"Si prega di notare, le ore di lavoro sotto il lavoro come un modello per "
|
3740 |
-
"tutti i nuovi membri del personale. Per effettuare il rendering di un elenco "
|
3741 |
-
"di intervalli di tempo disponibili il sistema tiene conto solo di "
|
3742 |
-
"pianificazione dei membri del personale, non le ore di lavoro dell'azienda. "
|
3743 |
-
"Assicuratevi di controllare il calendario dei vostri membri dello staff se "
|
3744 |
-
"avete qualche comportamento imprevisto del sistema di prenotazione."
|
3745 |
|
3746 |
-
msgid "
|
3747 |
-
msgstr "
|
3748 |
|
3749 |
-
msgid "
|
3750 |
-
msgstr "
|
3751 |
|
3752 |
-
msgid "
|
3753 |
-
msgstr "
|
3754 |
|
3755 |
-
msgid "
|
3756 |
-
msgstr "
|
3757 |
|
3758 |
-
msgid "
|
3759 |
-
msgstr "
|
3760 |
|
3761 |
-
msgid ""
|
3762 |
-
"
|
3763 |
-
"approved the appointment."
|
3764 |
-
msgstr ""
|
3765 |
|
3766 |
-
msgid "
|
3767 |
-
msgstr "
|
3768 |
|
3769 |
-
msgid ""
|
3770 |
-
"
|
3771 |
-
"appointment cannot be done (due to capacity, changed status, etc.)."
|
3772 |
-
msgstr ""
|
3773 |
|
3774 |
-
msgid "
|
3775 |
-
msgstr "
|
3776 |
|
3777 |
-
msgid ""
|
3778 |
-
"
|
3779 |
-
"cancelled their appointment."
|
3780 |
-
msgstr ""
|
3781 |
-
"Impostare la URL di una pagina che viene mostrata ai clienti dopo aver "
|
3782 |
-
"annullato con successo il loro appuntamento."
|
3783 |
|
3784 |
-
msgid "
|
3785 |
-
msgstr "
|
3786 |
|
3787 |
-
msgid ""
|
3788 |
-
"Set the URL of a page that is shown to clients when the cancellation of "
|
3789 |
-
"appointment is not available anymore."
|
3790 |
msgstr ""
|
3791 |
-
"
|
3792 |
-
"
|
3793 |
|
3794 |
-
|
3795 |
-
|
|
|
3796 |
|
3797 |
-
msgid ""
|
3798 |
-
"Set the URL of a page that is shown to staff after they successfully "
|
3799 |
-
"rejected the appointment."
|
3800 |
msgstr ""
|
3801 |
|
3802 |
-
msgid "
|
3803 |
msgstr ""
|
3804 |
|
3805 |
msgid ""
|
3806 |
-
"
|
3807 |
-
"
|
|
|
|
|
3808 |
msgstr ""
|
|
|
|
|
|
|
|
|
|
|
3809 |
|
3810 |
-
msgid ""
|
3811 |
-
"Select a time interval which will be used as a step when building all time "
|
3812 |
-
"slots in the system."
|
3813 |
msgstr ""
|
3814 |
-
"Selezionare un intervallo di tempo che sarà utilizzato come un passo nella "
|
3815 |
-
"costruzione tutte le fasce orarie nel sistema."
|
3816 |
|
3817 |
-
msgid "
|
3818 |
msgstr ""
|
3819 |
|
3820 |
-
msgid ""
|
3821 |
-
"Enable this option to make slot length equal to service duration at the Time "
|
3822 |
-
"step of booking form."
|
3823 |
msgstr ""
|
3824 |
-
"Attivare questa opzione per rendere la lunghezza di slot pari alla durata "
|
3825 |
-
"del servizio al Time step del modulo di prenotazione."
|
3826 |
-
|
3827 |
-
msgid "Select status for newly booked appointments."
|
3828 |
-
msgstr "Selezionare Stato per gli appuntamenti di recente prenotati."
|
3829 |
|
3830 |
-
msgid "
|
3831 |
-
msgstr "
|
3832 |
|
3833 |
-
msgid "
|
3834 |
-
msgstr ""
|
3835 |
-
"Imposta quanto lontano nel futuro i clienti possono prenotare appuntamenti."
|
3836 |
|
3837 |
-
msgid "
|
3838 |
-
msgstr "
|
3839 |
|
3840 |
-
|
|
|
|
|
|
|
3841 |
msgstr ""
|
|
|
|
|
3842 |
|
3843 |
-
msgid "
|
3844 |
-
msgstr "
|
|
|
|
|
3845 |
|
3846 |
-
msgid ""
|
3847 |
-
"If this option is enabled then all staff members who are associated with "
|
3848 |
-
"WordPress users will be able to edit their own profiles, services, schedule "
|
3849 |
-
"and days off."
|
3850 |
msgstr ""
|
3851 |
-
"Se quest'opzione è abilitata tutti i membri dello staff associati con un "
|
3852 |
-
"account WordPress, potranno modificare li proprie impostazioni, i servizi, "
|
3853 |
-
"gli orari e i giorni di chiusura. "
|
3854 |
|
3855 |
-
msgid "
|
3856 |
-
msgstr "
|
3857 |
|
3858 |
-
msgid ""
|
3859 |
-
"With \"Enqueue\" method the JavaScript and CSS files of Bookly will be "
|
3860 |
-
"included on all pages of your website. This method should work with all "
|
3861 |
-
"themes. With \"Print\" method the files will be included only on the pages "
|
3862 |
-
"which contain Bookly booking form. This method may not work with all themes."
|
3863 |
msgstr ""
|
3864 |
-
"Con method \"Enqueue\" i file JavaScript e CSS di Bookly saranno inclusi in "
|
3865 |
-
"tutte le pagine del tuo sito web. Questo metodo dovrebbe funzionare con "
|
3866 |
-
"tutti i temi. Con \"Print\" metodo i file verranno inclusi solo sulle pagine "
|
3867 |
-
"che contengono modulo di prenotazione Bookly. Questo metodo potrebbe non "
|
3868 |
-
"funzionare con tutti i temi."
|
3869 |
-
|
3870 |
-
msgid "Help us improve Bookly by sending anonymous usage stats"
|
3871 |
-
msgstr "Aiutaci a migliorare Bookly inviando statistiche di utilizzo anonime"
|
3872 |
|
3873 |
-
msgid ""
|
3874 |
-
"Allow the plugin to set a Powered by Bookly notice on the booking widget to "
|
3875 |
-
"spread information about the plugin. This will allow the team to improve the "
|
3876 |
-
"product and enhance its functionality"
|
3877 |
msgstr ""
|
3878 |
|
3879 |
-
msgid "
|
3880 |
msgstr ""
|
3881 |
|
3882 |
-
msgid ""
|
3883 |
-
"Select \"Prevent\" if you want Bookly to prevent caching by third-party "
|
3884 |
-
"caching plugins by adding a DONOTCACHEPAGE constant on pages with booking "
|
3885 |
-
"form."
|
3886 |
msgstr ""
|
3887 |
|
3888 |
-
msgid "
|
|
|
|
|
|
|
3889 |
msgstr ""
|
3890 |
|
3891 |
-
msgid "
|
3892 |
msgstr ""
|
3893 |
|
3894 |
-
msgid "
|
3895 |
-
msgstr "
|
3896 |
|
3897 |
-
msgid "
|
3898 |
-
msgstr ""
|
3899 |
|
3900 |
-
msgid "
|
3901 |
-
msgstr "
|
3902 |
|
3903 |
-
msgid "
|
3904 |
-
msgstr ""
|
3905 |
|
3906 |
-
msgid "
|
3907 |
msgstr ""
|
3908 |
|
3909 |
-
msgid "
|
3910 |
msgstr ""
|
3911 |
|
3912 |
-
msgid "
|
3913 |
msgstr ""
|
3914 |
|
3915 |
-
msgid "
|
3916 |
msgstr ""
|
3917 |
|
3918 |
-
msgid "
|
3919 |
msgstr ""
|
3920 |
|
3921 |
-
msgid "
|
3922 |
msgstr ""
|
3923 |
|
3924 |
-
msgid "
|
3925 |
msgstr ""
|
3926 |
|
3927 |
-
msgid "
|
3928 |
msgstr ""
|
3929 |
|
3930 |
-
msgid "
|
3931 |
-
msgstr "Numero di persone"
|
3932 |
-
|
3933 |
-
msgid "Week days"
|
3934 |
-
msgstr "Giorni della settimana"
|
3935 |
-
|
3936 |
-
msgid "Time range"
|
3937 |
-
msgstr "Intervallo di tempo"
|
3938 |
-
|
3939 |
-
msgid "hide"
|
3940 |
msgstr ""
|
3941 |
|
3942 |
-
|
3943 |
-
|
|
|
|
|
|
|
3944 |
|
3945 |
-
|
3946 |
-
|
|
|
|
|
|
|
3947 |
|
3948 |
-
msgid "
|
3949 |
msgstr ""
|
3950 |
|
3951 |
-
msgid "
|
3952 |
-
msgstr "
|
3953 |
|
3954 |
msgid ""
|
3955 |
-
"
|
3956 |
msgstr ""
|
3957 |
|
3958 |
-
msgid "
|
3959 |
msgstr ""
|
3960 |
|
3961 |
-
msgid "
|
3962 |
msgstr ""
|
3963 |
|
3964 |
-
msgid "
|
3965 |
msgstr ""
|
3966 |
|
3967 |
-
msgid "
|
3968 |
msgstr ""
|
3969 |
|
3970 |
-
msgid "
|
3971 |
msgstr ""
|
3972 |
|
3973 |
-
msgid "
|
3974 |
msgstr ""
|
3975 |
|
3976 |
-
msgid "
|
3977 |
msgstr ""
|
|
|
|
|
3978 |
|
3979 |
-
msgid "
|
|
|
3980 |
msgstr ""
|
3981 |
|
3982 |
-
msgid "
|
3983 |
msgstr ""
|
|
|
|
|
3984 |
|
3985 |
-
msgid "
|
3986 |
msgstr ""
|
3987 |
|
3988 |
-
msgid "
|
|
|
3989 |
msgstr ""
|
|
|
|
|
3990 |
|
3991 |
-
msgid "
|
3992 |
msgstr ""
|
3993 |
|
3994 |
-
msgid "
|
3995 |
msgstr ""
|
3996 |
|
3997 |
-
|
3998 |
-
msgid ""
|
3999 |
-
"<b>Bookly Lite rebrands into Bookly with more features available.</b><br/>"
|
4000 |
-
"<br/>We have changed the architecture of Bookly Lite and Bookly to optimize "
|
4001 |
-
"the development of both plugin versions and add more features to the new "
|
4002 |
-
"free Bookly. To learn more about the major Bookly update, check our <a "
|
4003 |
-
"href=\"%s\" target=\"_blank\">blog post</a>."
|
4004 |
msgstr ""
|
4005 |
|
4006 |
-
msgid ""
|
4007 |
-
"Allow the plugin to set a Powered by Bookly notice on the booking widget to "
|
4008 |
-
"spread information about the plugin. This will allow the team to improve the "
|
4009 |
-
"product and enhance its functionality."
|
4010 |
msgstr ""
|
4011 |
|
4012 |
-
msgid "
|
4013 |
msgstr ""
|
4014 |
|
4015 |
-
msgid "
|
4016 |
msgstr ""
|
4017 |
|
4018 |
-
|
4019 |
-
msgid "Recharge your account balance and get up to %s extra."
|
4020 |
msgstr ""
|
4021 |
|
4022 |
-
msgid ""
|
4023 |
-
"Take advantage of Bookly Cloud products which increase customers' loyalty "
|
4024 |
-
"and involvement."
|
4025 |
msgstr ""
|
4026 |
|
4027 |
-
|
4028 |
-
msgid "Enable Auto-Recharge and get up to %s extra."
|
4029 |
msgstr ""
|
4030 |
|
4031 |
-
msgid "
|
4032 |
msgstr ""
|
4033 |
|
4034 |
-
msgid "
|
4035 |
-
msgstr "Registrare"
|
4036 |
-
|
4037 |
-
msgid "Enable"
|
4038 |
msgstr ""
|
4039 |
|
4040 |
-
msgid "
|
4041 |
msgstr ""
|
4042 |
|
4043 |
-
msgid "
|
4044 |
msgstr ""
|
4045 |
|
4046 |
-
msgid "
|
|
|
|
|
4047 |
msgstr ""
|
4048 |
|
4049 |
-
msgid ""
|
4050 |
-
"To get access to all Bookly features, lifetime free updates and 24/7 support,"
|
4051 |
-
" please upgrade to the Pro version of Bookly.<br>For more information visit"
|
4052 |
msgstr ""
|
4053 |
|
4054 |
-
msgid ""
|
4055 |
-
"How likely is it that you would recommend Bookly to a friend or colleague?"
|
4056 |
msgstr ""
|
4057 |
-
"Quante probabilità ci sono che si dovrebbe raccomandare Bookly ad un amico o "
|
4058 |
-
"un collega?"
|
4059 |
|
4060 |
-
msgid "
|
4061 |
-
msgstr "
|
4062 |
|
4063 |
-
msgid "
|
4064 |
-
msgstr "
|
4065 |
|
4066 |
-
msgid "
|
4067 |
-
msgstr ""
|
4068 |
-
"Iscriviti alle e-mail mensili circa miglioramenti Bookly e nuove uscite."
|
4069 |
|
4070 |
-
msgid ""
|
4071 |
-
|
4072 |
-
" You can opt out of sharing the information in Settings > General."
|
4073 |
-
msgstr ""
|
4074 |
|
4075 |
-
msgid ""
|
4076 |
-
"Let the plugin anonymously collect usage information to help Bookly team "
|
4077 |
-
"improve the product."
|
4078 |
msgstr ""
|
4079 |
|
4080 |
-
msgid "
|
4081 |
-
msgstr "
|
4082 |
-
|
4083 |
-
msgid "Error sending support request."
|
4084 |
-
msgstr "Errore durante l'invio richiesta di supporto."
|
4085 |
|
4086 |
-
msgid "
|
4087 |
-
msgstr "
|
4088 |
|
4089 |
-
msgid "
|
4090 |
-
msgstr "
|
4091 |
|
4092 |
-
msgid "
|
|
|
|
|
|
|
4093 |
msgstr ""
|
|
|
|
|
|
|
|
|
4094 |
|
4095 |
-
msgid "
|
4096 |
-
msgstr ""
|
|
|
|
|
|
|
4097 |
|
4098 |
msgid ""
|
4099 |
-
"
|
4100 |
-
"
|
4101 |
-
"
|
4102 |
msgstr ""
|
|
|
|
|
|
|
4103 |
|
4104 |
-
msgid "
|
4105 |
-
msgstr ""
|
4106 |
|
4107 |
-
msgid "
|
4108 |
-
msgstr ""
|
4109 |
|
4110 |
-
msgid "
|
4111 |
-
msgstr "
|
4112 |
|
4113 |
-
msgid "
|
|
|
|
|
|
|
4114 |
msgstr ""
|
|
|
|
|
4115 |
|
4116 |
-
msgid "
|
4117 |
-
msgstr "
|
4118 |
|
4119 |
-
msgid "
|
4120 |
-
msgstr "
|
4121 |
|
4122 |
-
msgid "
|
4123 |
-
msgstr "
|
4124 |
|
4125 |
-
msgid "
|
4126 |
-
msgstr "
|
4127 |
|
4128 |
-
msgid "
|
4129 |
-
msgstr "
|
4130 |
|
4131 |
-
msgid "
|
4132 |
msgstr ""
|
4133 |
|
4134 |
-
msgid ""
|
4135 |
-
"In the Feature Requests section of our Community, you can make suggestions "
|
4136 |
-
"about what you'd like to see in our future releases."
|
4137 |
msgstr ""
|
4138 |
|
4139 |
-
msgid ""
|
4140 |
-
"Before you post, please check if the same suggestion has already been made. "
|
4141 |
-
"If so, vote for ideas you like and add a comment with the details about your "
|
4142 |
-
"situation."
|
4143 |
msgstr ""
|
4144 |
|
4145 |
-
msgid ""
|
4146 |
-
"It's much easier for us to address a suggestion if we clearly understand the "
|
4147 |
-
"context of the issue, the problem, and why it matters to you. When "
|
4148 |
-
"commenting or posting, please consider these questions so we can get a "
|
4149 |
-
"better idea of the problem you're facing:"
|
4150 |
msgstr ""
|
4151 |
|
4152 |
-
msgid "
|
|
|
|
|
|
|
4153 |
msgstr ""
|
4154 |
|
4155 |
-
msgid "
|
4156 |
-
msgstr ""
|
4157 |
|
4158 |
-
msgid ""
|
4159 |
-
"Is this something that impacts just you, your whole team, or your customers?"
|
4160 |
msgstr ""
|
4161 |
|
4162 |
-
msgid "
|
4163 |
msgstr ""
|
4164 |
|
4165 |
-
msgid "
|
4166 |
-
msgstr "
|
4167 |
|
4168 |
msgid ""
|
4169 |
-
"
|
4170 |
-
"
|
4171 |
msgstr ""
|
4172 |
|
4173 |
-
msgid "
|
|
|
|
|
|
|
4174 |
msgstr ""
|
4175 |
|
4176 |
-
msgid "
|
|
|
|
|
4177 |
msgstr ""
|
4178 |
|
4179 |
-
msgid "
|
4180 |
-
msgstr "Completare il pagamento"
|
4181 |
-
|
4182 |
-
msgid "Bind payment"
|
4183 |
msgstr ""
|
4184 |
|
4185 |
-
msgid "
|
4186 |
-
msgstr "Modifica i dettagli della prenotazione"
|
4187 |
-
|
4188 |
-
msgid ""
|
4189 |
-
"You are going to delete appointment(s). Notifications will be sent in "
|
4190 |
-
"accordance with your settings."
|
4191 |
msgstr ""
|
4192 |
|
4193 |
-
msgid "
|
4194 |
-
msgstr "
|
4195 |
|
4196 |
-
msgid "
|
4197 |
-
msgstr "
|
4198 |
|
4199 |
-
msgid "
|
4200 |
-
msgstr "
|
4201 |
|
4202 |
-
|
4203 |
-
|
4204 |
-
|
|
|
|
|
4205 |
|
4206 |
-
msgid "
|
4207 |
-
msgstr "
|
|
|
|
|
|
|
4208 |
|
4209 |
#, php-format
|
4210 |
-
msgid "
|
|
|
|
|
4211 |
msgstr ""
|
4212 |
|
4213 |
-
msgid "
|
4214 |
-
msgstr "
|
4215 |
|
4216 |
-
msgid "
|
4217 |
-
msgstr "
|
4218 |
|
4219 |
-
msgid "
|
4220 |
msgstr ""
|
4221 |
-
"Il periodo selezionato non corrisponde alla durata predefinita del servizio "
|
4222 |
-
"scelto"
|
4223 |
|
4224 |
-
msgid "
|
4225 |
-
|
|
|
|
|
4226 |
|
4227 |
-
msgid "
|
4228 |
-
msgstr "
|
4229 |
|
4230 |
-
msgid "
|
4231 |
msgstr ""
|
4232 |
-
"Il periodo selezionato non corrisponde alla pianificazione del servizio"
|
4233 |
|
4234 |
-
msgid "
|
4235 |
msgstr ""
|
4236 |
|
4237 |
-
msgid "
|
4238 |
msgstr ""
|
4239 |
|
4240 |
-
|
4241 |
-
|
|
|
4242 |
|
4243 |
-
msgid "
|
4244 |
-
msgstr "
|
4245 |
|
4246 |
-
msgid "
|
4247 |
msgstr ""
|
4248 |
|
4249 |
-
msgid "
|
4250 |
-
msgstr "
|
4251 |
|
4252 |
-
msgid "
|
4253 |
msgstr ""
|
4254 |
|
4255 |
-
msgid "
|
4256 |
msgstr ""
|
4257 |
|
4258 |
-
msgid ""
|
4259 |
-
"If you have added a new customer to this appointment or changed the "
|
4260 |
-
"appointment status for an existing customer, and for these records you want "
|
4261 |
-
"the corresponding email or SMS notifications to be sent to their recipients, "
|
4262 |
-
"select the \"Send if new or status changed\" option before clicking Send. "
|
4263 |
-
"You can also send notifications as if all customers were added as new by "
|
4264 |
-
"selecting \"Send as for new\"."
|
4265 |
msgstr ""
|
4266 |
|
4267 |
-
msgid "
|
4268 |
msgstr ""
|
4269 |
|
4270 |
-
msgid "
|
4271 |
msgstr ""
|
4272 |
|
4273 |
-
msgid "
|
4274 |
msgstr ""
|
4275 |
|
4276 |
-
msgid "
|
4277 |
msgstr ""
|
4278 |
|
4279 |
-
msgid "
|
4280 |
msgstr ""
|
4281 |
|
4282 |
-
msgid "
|
4283 |
msgstr ""
|
4284 |
|
4285 |
-
msgid "
|
4286 |
msgstr ""
|
4287 |
|
4288 |
-
msgid "
|
4289 |
msgstr ""
|
4290 |
|
4291 |
-
msgid ""
|
4292 |
-
"This notification is sent once for a booking made by a customer and includes "
|
4293 |
-
"all cart items."
|
4294 |
msgstr ""
|
4295 |
|
4296 |
-
msgid "
|
4297 |
-
msgstr "
|
4298 |
|
4299 |
-
msgid "
|
4300 |
msgstr ""
|
4301 |
|
4302 |
-
msgid "
|
4303 |
msgstr ""
|
4304 |
|
4305 |
-
msgid "
|
4306 |
msgstr ""
|
4307 |
|
4308 |
-
msgid "
|
4309 |
msgstr ""
|
4310 |
|
4311 |
-
msgid "
|
4312 |
msgstr ""
|
4313 |
|
4314 |
-
msgid "
|
4315 |
msgstr ""
|
4316 |
|
4317 |
-
msgid "
|
|
|
|
|
|
|
4318 |
msgstr ""
|
4319 |
|
4320 |
-
msgid "
|
4321 |
msgstr ""
|
4322 |
|
4323 |
-
msgid "
|
|
|
|
|
|
|
|
|
4324 |
msgstr ""
|
4325 |
|
4326 |
-
msgid "
|
4327 |
msgstr ""
|
|
|
4328 |
|
4329 |
-
msgid "
|
4330 |
msgstr ""
|
4331 |
|
4332 |
-
msgid "
|
4333 |
msgstr ""
|
4334 |
|
4335 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
4336 |
msgstr ""
|
4337 |
|
|
|
|
|
|
|
4338 |
msgid "Notification settings"
|
4339 |
msgstr ""
|
4340 |
|
@@ -4352,15 +4132,35 @@ msgstr ""
|
|
4352 |
msgid "Client"
|
4353 |
msgstr "Cliente"
|
4354 |
|
4355 |
-
msgid "Staff"
|
4356 |
-
msgstr "Staff"
|
4357 |
-
|
4358 |
msgid "Administrators"
|
4359 |
msgstr ""
|
4360 |
|
4361 |
msgid "Choose who will receive this notification."
|
4362 |
msgstr ""
|
4363 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4364 |
msgid ""
|
4365 |
"Select what status an appointment should have for the notification to be "
|
4366 |
"sent."
|
@@ -4382,29 +4182,23 @@ msgstr ""
|
|
4382 |
msgid "on the same day"
|
4383 |
msgstr ""
|
4384 |
|
4385 |
-
msgid "
|
4386 |
-
msgstr "L'orario iniziale deve essere precedente l'orario finale"
|
4387 |
-
|
4388 |
-
msgid "Error adding the break interval"
|
4389 |
-
msgstr "Errore nell'aggiunta di un intervallo"
|
4390 |
-
|
4391 |
-
msgid "The date has already passed."
|
4392 |
msgstr ""
|
4393 |
|
4394 |
-
msgid "
|
4395 |
msgstr ""
|
4396 |
|
4397 |
-
msgid "
|
4398 |
msgstr ""
|
4399 |
|
4400 |
-
msgid "
|
4401 |
msgstr ""
|
4402 |
|
4403 |
-
msgid "
|
4404 |
-
msgstr "
|
4405 |
|
4406 |
-
msgid "
|
4407 |
-
msgstr "
|
4408 |
|
4409 |
msgid "Select from WP users"
|
4410 |
msgstr "Seleziona da utenti WP"
|
@@ -4430,40 +4224,153 @@ msgid ""
|
|
4430 |
"If you leave this field blank, this staff member will not be able to access "
|
4431 |
"personal calendar using WP backend."
|
4432 |
msgstr ""
|
4433 |
-
"Se lasci questo campo vuoto, questo membro dello staff non sarà in grado di "
|
4434 |
-
"accedere al calendario personale utilizzando il backend di WordPress."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4435 |
|
4436 |
-
msgid "
|
4437 |
msgstr ""
|
4438 |
|
4439 |
-
msgid ""
|
4440 |
-
"
|
4441 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4442 |
msgstr ""
|
4443 |
-
"Per rendere membro del personale invisibile ai vostri clienti impostare la "
|
4444 |
-
"visibilità su \"Private\"."
|
4445 |
|
4446 |
-
msgid "
|
4447 |
msgstr ""
|
4448 |
|
4449 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
4450 |
msgstr ""
|
4451 |
|
4452 |
-
msgid "
|
4453 |
msgstr ""
|
4454 |
|
4455 |
msgid ""
|
4456 |
-
"
|
4457 |
-
"
|
4458 |
-
"
|
|
|
|
|
|
|
4459 |
msgstr ""
|
4460 |
|
4461 |
-
msgid "Edit
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4462 |
msgstr ""
|
4463 |
|
4464 |
-
msgid "
|
|
|
|
|
4465 |
msgstr ""
|
4466 |
|
|
|
|
|
|
|
4467 |
msgid "Delete customers"
|
4468 |
msgstr "Elimina i clienti"
|
4469 |
|
@@ -4481,779 +4388,916 @@ msgstr ""
|
|
4481 |
msgid "Delete customers' WordPress accounts if there are any"
|
4482 |
msgstr ""
|
4483 |
|
4484 |
-
msgid "
|
4485 |
-
msgstr "Nuovo cliente"
|
4486 |
-
|
4487 |
-
msgid ""
|
4488 |
-
"An email containing the confirmation code has been sent to your email "
|
4489 |
-
"address."
|
4490 |
msgstr ""
|
4491 |
|
4492 |
-
msgid "Please accept terms and conditions."
|
4493 |
-
msgstr "Si prega di accettare i termini e le condizioni."
|
4494 |
-
|
4495 |
-
msgid "Registration"
|
4496 |
-
msgstr "Registrazione"
|
4497 |
-
|
4498 |
-
msgid "Forgot password"
|
4499 |
-
msgstr "Password dimenticata"
|
4500 |
-
|
4501 |
-
msgid "Repeat password"
|
4502 |
-
msgstr "Ripeti la password"
|
4503 |
-
|
4504 |
msgid ""
|
4505 |
-
"
|
4506 |
-
"
|
|
|
4507 |
msgstr ""
|
4508 |
|
4509 |
-
|
4510 |
-
msgid ""
|
4511 |
-
"I accept <a href=\"%1$s\" target=\"_blank\">Service Terms</a> and <a "
|
4512 |
-
"href=\"%2$s\" target=\"_blank\">Privacy Policy</a>"
|
4513 |
msgstr ""
|
4514 |
|
4515 |
-
msgid "
|
4516 |
-
msgstr "Inserisci il codice da e-mail"
|
4517 |
-
|
4518 |
-
msgid "Thank you for registration."
|
4519 |
msgstr ""
|
4520 |
|
4521 |
-
msgid "
|
4522 |
msgstr ""
|
4523 |
|
4524 |
-
msgid "
|
4525 |
msgstr ""
|
4526 |
|
4527 |
-
msgid "
|
4528 |
-
msgstr ""
|
4529 |
|
4530 |
-
msgid "
|
4531 |
-
msgstr ""
|
4532 |
|
4533 |
-
msgid "
|
4534 |
msgstr ""
|
4535 |
|
4536 |
-
msgid "
|
|
|
|
|
|
|
4537 |
msgstr ""
|
4538 |
|
4539 |
-
|
4540 |
-
msgid "Click %s here %s to resend the email."
|
4541 |
msgstr ""
|
4542 |
|
4543 |
-
msgid "
|
|
|
|
|
|
|
4544 |
msgstr ""
|
4545 |
|
4546 |
-
msgid "
|
4547 |
msgstr ""
|
4548 |
|
4549 |
-
msgid ""
|
4550 |
-
"Please spend a minute to setup your country. This will help us provide you "
|
4551 |
-
"with appropriate payment methods when replenishing your account."
|
4552 |
msgstr ""
|
4553 |
|
4554 |
-
msgid ""
|
4555 |
-
"The country will also be displayed in the invoice on a separate line below "
|
4556 |
-
"the company address. Make sure the other fields in the invoice do not "
|
4557 |
-
"contain the name of the country."
|
4558 |
msgstr ""
|
4559 |
|
4560 |
-
msgid "
|
4561 |
msgstr ""
|
4562 |
|
4563 |
-
msgid "
|
4564 |
-
msgstr "Uscire"
|
4565 |
-
|
4566 |
-
msgid "Auto-Recharge has failed, please replenish your balance directly."
|
4567 |
msgstr ""
|
4568 |
-
"L'Auto-ricarica è fallita, si prega di ricostituire il saldo direttamente."
|
4569 |
|
4570 |
-
msgid "
|
4571 |
msgstr ""
|
4572 |
|
4573 |
-
msgid "
|
4574 |
msgstr ""
|
4575 |
|
4576 |
-
msgid "
|
4577 |
msgstr ""
|
4578 |
|
4579 |
-
msgid "
|
4580 |
-
msgstr "Il pagamento è stato accettato per l'elaborazione"
|
4581 |
-
|
4582 |
-
msgid "Your payment has been cancelled"
|
4583 |
msgstr ""
|
4584 |
|
4585 |
-
msgid "
|
4586 |
msgstr ""
|
4587 |
|
4588 |
-
msgid "
|
4589 |
msgstr ""
|
4590 |
|
4591 |
-
msgid "
|
4592 |
msgstr ""
|
4593 |
|
4594 |
-
msgid "
|
4595 |
msgstr ""
|
4596 |
|
4597 |
-
msgid "
|
4598 |
msgstr ""
|
4599 |
|
4600 |
-
msgid "
|
4601 |
msgstr ""
|
4602 |
|
4603 |
-
msgid "
|
4604 |
msgstr ""
|
4605 |
|
4606 |
-
msgid "
|
4607 |
msgstr ""
|
4608 |
|
4609 |
-
msgid "
|
4610 |
msgstr ""
|
4611 |
|
4612 |
-
msgid "
|
4613 |
-
msgstr "Auto-ricarica disattivata"
|
4614 |
-
|
4615 |
-
#, php-format
|
4616 |
-
msgid "Can't disable Auto-Recharge, please contact us at %s"
|
4617 |
msgstr ""
|
4618 |
|
4619 |
-
msgid "
|
4620 |
msgstr ""
|
4621 |
|
4622 |
-
msgid "
|
4623 |
msgstr ""
|
4624 |
|
4625 |
-
msgid "
|
4626 |
msgstr ""
|
4627 |
|
4628 |
-
msgid "
|
4629 |
-
|
4630 |
-
|
4631 |
-
msgid "Are you sure you want to disable Auto-Recharge?"
|
4632 |
msgstr ""
|
4633 |
|
4634 |
-
msgid "
|
4635 |
msgstr ""
|
4636 |
|
4637 |
-
msgid "
|
4638 |
msgstr ""
|
4639 |
|
4640 |
-
msgid "
|
4641 |
msgstr ""
|
4642 |
|
4643 |
-
msgid "Thank you"
|
4644 |
msgstr ""
|
4645 |
|
4646 |
-
msgid "
|
4647 |
msgstr ""
|
4648 |
|
4649 |
-
msgid "
|
4650 |
msgstr ""
|
4651 |
|
4652 |
-
msgid "
|
4653 |
msgstr ""
|
4654 |
|
4655 |
-
msgid "
|
4656 |
msgstr ""
|
4657 |
|
4658 |
-
msgid "
|
4659 |
-
msgstr "Reset"
|
4660 |
-
|
4661 |
-
msgid "Add Bookly booking form"
|
4662 |
-
msgstr "Aggiungi un form Bookly"
|
4663 |
-
|
4664 |
-
msgid "Insert Appointment Booking Form"
|
4665 |
-
msgstr "Inserisci un form Prenotazioni"
|
4666 |
-
|
4667 |
-
msgid "Default value for category select"
|
4668 |
-
msgstr "Valore predefinito per la selezione delle categorie"
|
4669 |
-
|
4670 |
-
msgid "Hide this field"
|
4671 |
-
msgstr "Nascondi questo campo"
|
4672 |
-
|
4673 |
-
msgid "Default value for service select"
|
4674 |
-
msgstr "Valore predefinito per la selezione dei servizi"
|
4675 |
-
|
4676 |
-
msgid ""
|
4677 |
-
"Please be aware that a value in this field is required in the frontend. If "
|
4678 |
-
"you choose to hide this field, please be sure to select a default value for "
|
4679 |
-
"it"
|
4680 |
msgstr ""
|
4681 |
-
"Attenzione, nel frontend questo campo è richiesto. Se decidi di nasconderlo, "
|
4682 |
-
"assicurati di indicare il valore predefinito"
|
4683 |
|
4684 |
-
msgid "
|
4685 |
-
msgstr "Valore predefinito per la selezione degli impiegati"
|
4686 |
-
|
4687 |
-
msgid "total quantity of appointments in cart"
|
4688 |
-
msgstr "la quantità totale di appuntamenti in carrello"
|
4689 |
-
|
4690 |
-
msgid "login form"
|
4691 |
-
msgstr "form di login"
|
4692 |
-
|
4693 |
-
msgid "total price of booking"
|
4694 |
-
msgstr "costo totale della prenotazione"
|
4695 |
-
|
4696 |
-
msgid "Send tax information"
|
4697 |
msgstr ""
|
4698 |
|
4699 |
-
msgid "
|
4700 |
-
|
|
|
|
|
4701 |
|
4702 |
-
msgid "
|
|
|
|
|
4703 |
msgstr ""
|
4704 |
|
4705 |
-
msgid "
|
4706 |
msgstr ""
|
4707 |
|
4708 |
-
msgid ""
|
4709 |
-
"This setting affects the cost of the booking according to the payment "
|
4710 |
-
"gateway used. Specify a percentage or fixed amount. Use minus (\"-\") sign "
|
4711 |
-
"for decrease/discount."
|
4712 |
msgstr ""
|
4713 |
|
4714 |
#, php-format
|
4715 |
msgid ""
|
4716 |
-
"
|
4717 |
-
"<
|
|
|
|
|
|
|
4718 |
msgstr ""
|
4719 |
|
4720 |
#, php-format
|
|
|
|
|
|
|
4721 |
msgid ""
|
4722 |
-
"
|
4723 |
-
"
|
4724 |
-
"for receiving events."
|
4725 |
msgstr ""
|
4726 |
|
4727 |
#, php-format
|
4728 |
-
msgid ""
|
4729 |
-
"Enter the following URL as the destination for events <b>%s</b> and click <b>"
|
4730 |
-
"Add endpoint</b>."
|
4731 |
msgstr ""
|
4732 |
|
4733 |
-
msgid ""
|
4734 |
-
"Add these events: <b>payment_intent.succeeded</b>, <b>payment_intent."
|
4735 |
-
"payment_failed</b> and click <b>Add endpoint</b>."
|
4736 |
msgstr ""
|
4737 |
|
4738 |
-
msgid "
|
4739 |
msgstr ""
|
4740 |
|
4741 |
-
msgid "
|
4742 |
msgstr ""
|
4743 |
|
4744 |
-
#, php-format
|
4745 |
msgid ""
|
4746 |
-
"
|
4747 |
-
"
|
4748 |
-
"integration with the upgraded add-on."
|
4749 |
msgstr ""
|
4750 |
|
4751 |
-
|
|
|
|
|
|
|
4752 |
msgid ""
|
4753 |
-
"
|
4754 |
-
"
|
|
|
4755 |
msgstr ""
|
4756 |
|
4757 |
-
#, php-format
|
4758 |
msgid ""
|
4759 |
-
"
|
4760 |
-
"section, click <b>Add endpoint</b> to reveal a form to add a new endpoint "
|
4761 |
-
"for receiving events."
|
4762 |
msgstr ""
|
|
|
|
|
4763 |
|
4764 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
4765 |
msgstr ""
|
4766 |
|
4767 |
-
msgid "
|
4768 |
msgstr ""
|
4769 |
|
4770 |
-
msgid "
|
4771 |
msgstr ""
|
4772 |
|
4773 |
-
msgid "
|
4774 |
msgstr ""
|
4775 |
|
4776 |
-
msgid "
|
4777 |
msgstr ""
|
4778 |
|
4779 |
-
msgid "
|
4780 |
msgstr ""
|
4781 |
|
4782 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4783 |
msgstr ""
|
4784 |
|
4785 |
-
msgid "
|
4786 |
msgstr ""
|
4787 |
|
4788 |
msgid ""
|
4789 |
-
"
|
4790 |
-
"
|
|
|
4791 |
msgstr ""
|
4792 |
|
4793 |
-
msgid "
|
4794 |
msgstr ""
|
4795 |
|
4796 |
-
msgid "
|
4797 |
msgstr ""
|
4798 |
|
4799 |
-
msgid "
|
|
|
|
|
|
|
4800 |
msgstr ""
|
4801 |
|
4802 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4803 |
msgstr ""
|
4804 |
|
4805 |
-
msgid "
|
|
|
|
|
4806 |
msgstr ""
|
4807 |
|
4808 |
-
msgid "
|
|
|
|
|
|
|
4809 |
msgstr ""
|
4810 |
|
4811 |
msgid ""
|
4812 |
-
"
|
4813 |
-
"
|
4814 |
-
"
|
|
|
4815 |
msgstr ""
|
4816 |
|
4817 |
-
msgid "
|
4818 |
msgstr ""
|
4819 |
|
4820 |
-
msgid "
|
4821 |
msgstr ""
|
4822 |
|
4823 |
-
msgid "
|
|
|
4824 |
msgstr ""
|
4825 |
|
4826 |
-
msgid "
|
4827 |
msgstr ""
|
4828 |
|
4829 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
4830 |
msgstr ""
|
4831 |
|
4832 |
-
msgid "
|
4833 |
msgstr ""
|
4834 |
|
4835 |
-
msgid ""
|
4836 |
-
"Go to the <a href=\"https://console.developers.google.com/flows/enableapi?"
|
4837 |
-
"apiid=places_backend&reusekey=true\" target=\"_blank\">Google API Console</a>"
|
4838 |
-
"."
|
4839 |
msgstr ""
|
4840 |
|
4841 |
-
msgid "
|
4842 |
msgstr ""
|
4843 |
|
4844 |
-
msgid ""
|
4845 |
-
"On the <b>Credentials</b> page, get an <b>API key</b> (and set the API key "
|
4846 |
-
"restrictions). Note: If you have an existing unrestricted API key, or a key "
|
4847 |
-
"with server restrictions, you may use that key."
|
4848 |
msgstr ""
|
4849 |
|
4850 |
-
msgid ""
|
4851 |
-
"Click <b>Library</b> on the left sidebar menu. Select Google Maps JavaScript "
|
4852 |
-
"API and make sure it's enabled."
|
4853 |
msgstr ""
|
4854 |
|
4855 |
-
msgid "
|
4856 |
msgstr ""
|
4857 |
|
4858 |
-
msgid ""
|
4859 |
-
"Enter a Google API key that you got after registering your app project on "
|
4860 |
-
"the Google API Console."
|
4861 |
msgstr ""
|
4862 |
|
4863 |
-
msgid "
|
4864 |
msgstr ""
|
4865 |
|
4866 |
-
msgid "
|
4867 |
msgstr ""
|
4868 |
|
4869 |
-
msgid "
|
4870 |
msgstr ""
|
4871 |
|
4872 |
-
msgid "
|
4873 |
msgstr ""
|
4874 |
|
4875 |
-
msgid "
|
4876 |
msgstr ""
|
4877 |
|
4878 |
-
msgid "
|
4879 |
msgstr ""
|
4880 |
|
4881 |
-
msgid "
|
4882 |
-
msgstr "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4883 |
|
4884 |
#, php-format
|
4885 |
-
msgid "
|
|
|
4886 |
msgstr ""
|
|
|
|
|
4887 |
|
4888 |
-
msgid "
|
4889 |
-
msgstr "
|
4890 |
|
4891 |
-
msgid "
|
4892 |
-
msgstr "
|
4893 |
|
4894 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4895 |
msgstr ""
|
4896 |
|
4897 |
-
msgid "
|
4898 |
msgstr ""
|
4899 |
|
4900 |
-
msgid ""
|
4901 |
-
"When you connect a calendar all future and past events will be synchronized "
|
4902 |
-
"according to the selected synchronization mode. This may take a few minutes. "
|
4903 |
-
"Please wait."
|
4904 |
msgstr ""
|
4905 |
|
4906 |
msgid ""
|
4907 |
-
"
|
4908 |
-
"
|
4909 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4910 |
msgstr ""
|
4911 |
|
4912 |
-
msgid "
|
|
|
|
|
|
|
4913 |
msgstr ""
|
4914 |
|
4915 |
-
#, php-format
|
4916 |
msgid ""
|
4917 |
-
"
|
4918 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4919 |
msgstr ""
|
4920 |
|
4921 |
msgid ""
|
4922 |
-
"
|
4923 |
-
"
|
4924 |
-
"
|
|
|
|
|
|
|
|
|
4925 |
msgstr ""
|
4926 |
|
4927 |
msgid ""
|
4928 |
-
"
|
4929 |
-
"
|
|
|
|
|
|
|
|
|
4930 |
msgstr ""
|
4931 |
|
4932 |
-
msgid ""
|
4933 |
-
"When the <b>Register an application</b> page appears, enter your "
|
4934 |
-
"application's <b>Name</b> and <b>Redirect URI</b> found below on this page. "
|
4935 |
-
"Make sure that the <b>Supported account types</b> is set to <b>Accounts in "
|
4936 |
-
"any organizational directory and personal Microsoft accounts</b>. When "
|
4937 |
-
"finished, select <b>Register</b>."
|
4938 |
msgstr ""
|
4939 |
|
4940 |
-
msgid ""
|
4941 |
-
"Azure AD assigns a unique application (client) ID to your app, and you're "
|
4942 |
-
"taken to your application's <b>Overview</b> page."
|
4943 |
msgstr ""
|
4944 |
|
4945 |
msgid ""
|
4946 |
-
"
|
4947 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4948 |
msgstr ""
|
4949 |
|
4950 |
-
msgid ""
|
4951 |
-
"Under <b>Certificates & secrets</b>, choose <b>New client secret</b>, "
|
4952 |
-
"set <b>Expires</b> to <b>Never</b> and click <b>Add</b>. Copy the app secret "
|
4953 |
-
"from the <b>Client secrets</b> list before leaving the page. Insert the "
|
4954 |
-
"secret into the form below on this page."
|
4955 |
msgstr ""
|
4956 |
|
4957 |
msgid ""
|
4958 |
-
"
|
4959 |
-
"
|
4960 |
-
"
|
4961 |
-
"
|
|
|
|
|
|
|
|
|
|
|
4962 |
msgstr ""
|
4963 |
|
4964 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4965 |
msgstr ""
|
4966 |
|
4967 |
msgid ""
|
4968 |
-
"
|
4969 |
-
"
|
|
|
|
|
|
|
4970 |
msgstr ""
|
4971 |
-
"Vai ai membri dello staff, selezionare un membro dello staff e cliccare su "
|
4972 |
-
"<b>Connetti</b> che si trova nella parte inferiore della pagina."
|
4973 |
|
4974 |
-
msgid "
|
4975 |
msgstr ""
|
4976 |
|
4977 |
-
msgid "
|
4978 |
msgstr ""
|
4979 |
|
4980 |
-
msgid "
|
4981 |
msgstr ""
|
4982 |
|
4983 |
-
msgid ""
|
4984 |
-
"The Application Secret password obtained from the Microsoft App Registration "
|
4985 |
-
"Portal."
|
4986 |
msgstr ""
|
4987 |
|
4988 |
-
msgid "
|
4989 |
-
msgstr "Redirect URI"
|
4990 |
-
|
4991 |
-
msgid ""
|
4992 |
-
"Enter this URL as a Redirect URLs in the Microsoft App Registration Portal."
|
4993 |
msgstr ""
|
4994 |
|
4995 |
-
msgid "
|
4996 |
msgstr ""
|
4997 |
|
4998 |
-
msgid ""
|
4999 |
-
"With \"One-way\" sync Bookly pushes new appointments and any further changes "
|
5000 |
-
"to Outlook Calendar. With \"Two-way front-end only\" sync Bookly will "
|
5001 |
-
"additionally fetch events from Outlook Calendar and remove corresponding "
|
5002 |
-
"time slots before displaying the Time step of the booking form (this may "
|
5003 |
-
"lead to a delay when users click Next to get to the Time step). With \"Two-"
|
5004 |
-
"way\" sync all bookings created in Bookly Calendar will be automatically "
|
5005 |
-
"copied to Outlook Calendar and vice versa."
|
5006 |
msgstr ""
|
5007 |
|
5008 |
-
msgid "
|
5009 |
msgstr ""
|
5010 |
|
5011 |
-
msgid "
|
5012 |
msgstr ""
|
5013 |
|
5014 |
-
msgid "
|
5015 |
msgstr ""
|
5016 |
|
5017 |
-
msgid "
|
5018 |
msgstr ""
|
5019 |
|
5020 |
-
msgid ""
|
5021 |
-
"Specify how many days of past and future calendar data you wish to sync at "
|
5022 |
-
"the time of initial sync. If you enter 0 in either field, synchronization of "
|
5023 |
-
"past or future events will not be performed"
|
5024 |
msgstr ""
|
5025 |
|
5026 |
-
msgid "
|
5027 |
msgstr ""
|
5028 |
|
5029 |
-
msgid ""
|
5030 |
-
"If enabled then titles of Outlook Calendar events will be copied to Bookly "
|
5031 |
-
"appointments. If disabled, a standard title \"Outlook Calendar event\" will "
|
5032 |
-
"be used."
|
5033 |
msgstr ""
|
5034 |
|
5035 |
-
msgid "Limit number of fetched events"
|
5036 |
-
msgstr "Limita il numero di eventi catturati"
|
5037 |
-
|
5038 |
msgid ""
|
5039 |
-
"
|
5040 |
-
"
|
5041 |
-
"the number of fetched events here."
|
5042 |
msgstr ""
|
5043 |
|
5044 |
-
msgid "Template for event title"
|
5045 |
-
msgstr "Modello per titolo dell'evento"
|
5046 |
-
|
5047 |
msgid ""
|
5048 |
-
"
|
5049 |
-
"
|
5050 |
msgstr ""
|
5051 |
|
5052 |
-
msgid "
|
5053 |
msgstr ""
|
5054 |
|
5055 |
-
msgid "
|
5056 |
msgstr ""
|
5057 |
|
5058 |
-
msgid "
|
5059 |
msgstr ""
|
5060 |
|
5061 |
-
msgid ""
|
5062 |
-
"This section describes information that is displayed about each participant "
|
5063 |
-
"of the appointment."
|
5064 |
msgstr ""
|
5065 |
|
5066 |
-
msgid "
|
5067 |
msgstr ""
|
5068 |
|
5069 |
-
msgid "
|
5070 |
msgstr ""
|
5071 |
|
5072 |
-
msgid "
|
|
|
|
|
5073 |
msgstr ""
|
5074 |
|
5075 |
-
msgid "
|
5076 |
-
msgstr "Coupons"
|
5077 |
-
|
5078 |
-
msgid "Discount (%)"
|
5079 |
-
msgstr "Sconto (%)"
|
5080 |
-
|
5081 |
-
msgid "Deduction"
|
5082 |
-
msgstr "Detrazione"
|
5083 |
-
|
5084 |
-
msgid "Customers limit"
|
5085 |
msgstr ""
|
5086 |
|
5087 |
-
msgid "
|
5088 |
-
msgstr "
|
5089 |
-
|
5090 |
-
msgid "Number of times used"
|
5091 |
-
msgstr "Numero di volte usato"
|
5092 |
|
5093 |
-
msgid "
|
|
|
|
|
5094 |
msgstr ""
|
5095 |
|
5096 |
-
msgid "
|
|
|
|
|
5097 |
msgstr ""
|
5098 |
|
5099 |
-
msgid "
|
5100 |
msgstr ""
|
5101 |
|
5102 |
-
msgid "
|
5103 |
msgstr ""
|
5104 |
|
5105 |
-
msgid "
|
5106 |
-
msgstr "
|
5107 |
|
5108 |
msgid ""
|
5109 |
-
"
|
5110 |
-
"
|
5111 |
msgstr ""
|
5112 |
-
"Hai scelto di prenotare {appointments_count} con un prezzo totale di "
|
5113 |
-
"{total_price}."
|
5114 |
|
5115 |
-
msgid "
|
5116 |
-
msgstr "
|
5117 |
|
5118 |
-
msgid "
|
5119 |
-
msgstr "
|
5120 |
|
5121 |
-
msgid "
|
5122 |
msgstr ""
|
5123 |
|
5124 |
-
msgid "
|
5125 |
-
msgstr "
|
5126 |
|
5127 |
-
msgid "
|
5128 |
msgstr ""
|
5129 |
|
5130 |
-
msgid "
|
5131 |
msgstr ""
|
5132 |
|
5133 |
-
msgid "
|
5134 |
-
msgstr "
|
5135 |
|
5136 |
-
msgid "
|
5137 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5138 |
|
5139 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5140 |
msgstr ""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5141 |
|
5142 |
-
msgid "
|
5143 |
-
msgstr ""
|
5144 |
|
5145 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5146 |
msgstr ""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5147 |
|
5148 |
-
msgid "
|
5149 |
-
msgstr ""
|
5150 |
|
5151 |
-
#, php-format
|
5152 |
msgid ""
|
5153 |
-
"
|
5154 |
-
"
|
|
|
|
|
|
|
5155 |
msgstr ""
|
|
|
|
|
|
|
|
|
|
|
5156 |
|
5157 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5158 |
msgstr ""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5159 |
|
5160 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5161 |
msgstr ""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5162 |
|
5163 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5164 |
msgstr ""
|
5165 |
|
5166 |
-
msgid "
|
5167 |
-
msgstr "
|
5168 |
-
|
5169 |
-
msgid "Edit coupon"
|
5170 |
-
msgstr "Modifica coupon"
|
5171 |
-
|
5172 |
-
msgid "Generate"
|
5173 |
-
msgstr ""
|
5174 |
|
5175 |
msgid ""
|
5176 |
-
"You
|
5177 |
-
"
|
5178 |
msgstr ""
|
5179 |
|
5180 |
-
msgid "
|
5181 |
msgstr ""
|
5182 |
|
5183 |
-
msgid "
|
5184 |
msgstr ""
|
5185 |
|
5186 |
-
msgid "
|
5187 |
-
msgstr ""
|
5188 |
|
5189 |
-
msgid ""
|
5190 |
-
"
|
5191 |
-
msgstr ""
|
5192 |
|
5193 |
-
msgid "
|
5194 |
-
msgstr ""
|
5195 |
|
5196 |
-
msgid "
|
5197 |
-
msgstr ""
|
5198 |
|
5199 |
-
msgid "
|
5200 |
msgstr ""
|
5201 |
|
5202 |
-
msgid ""
|
5203 |
-
"
|
5204 |
-
"required to apply a coupon."
|
5205 |
-
msgstr ""
|
5206 |
|
5207 |
-
msgid "
|
5208 |
msgstr ""
|
5209 |
|
5210 |
-
msgid "
|
5211 |
-
msgstr ""
|
5212 |
|
5213 |
-
msgid "
|
5214 |
-
msgstr ""
|
5215 |
|
5216 |
-
msgid "
|
5217 |
-
msgstr "
|
5218 |
|
5219 |
-
msgid "
|
5220 |
-
msgstr ""
|
5221 |
|
5222 |
-
|
5223 |
-
|
|
|
5224 |
|
5225 |
-
|
|
|
|
|
|
|
|
|
5226 |
msgstr ""
|
5227 |
|
5228 |
-
msgid "
|
|
|
|
|
5229 |
msgstr ""
|
5230 |
|
5231 |
-
msgid "
|
|
|
|
|
5232 |
msgstr ""
|
5233 |
|
5234 |
-
msgid "
|
5235 |
msgstr ""
|
5236 |
|
5237 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
5238 |
msgstr ""
|
5239 |
|
5240 |
-
msgid "
|
|
|
|
|
5241 |
msgstr ""
|
5242 |
|
5243 |
-
msgid "
|
|
|
|
|
5244 |
msgstr ""
|
5245 |
|
5246 |
-
msgid "
|
|
|
5247 |
msgstr ""
|
5248 |
|
5249 |
-
msgid "
|
|
|
|
|
|
|
5250 |
msgstr ""
|
|
|
|
|
|
|
5251 |
|
5252 |
-
msgid "add
|
5253 |
msgstr ""
|
|
|
|
|
5254 |
|
5255 |
-
msgid "
|
|
|
|
|
|
|
5256 |
msgstr ""
|
|
|
|
|
|
|
|
|
|
|
|
|
5257 |
|
5258 |
#, php-format
|
5259 |
msgid ""
|
@@ -5278,464 +5322,487 @@ msgstr ""
|
|
5278 |
msgid "Your support period has expired on %s."
|
5279 |
msgstr ""
|
5280 |
|
5281 |
-
msgid "
|
5282 |
-
msgstr "
|
5283 |
|
5284 |
-
msgid ""
|
5285 |
-
"
|
5286 |
-
|
5287 |
-
"
|
5288 |
-
msgstr ""
|
|
|
|
|
|
|
|
|
|
|
|
|
5289 |
|
5290 |
msgid ""
|
5291 |
-
"
|
5292 |
-
"
|
5293 |
msgstr ""
|
|
|
|
|
|
|
|
|
|
|
|
|
5294 |
|
5295 |
msgid ""
|
5296 |
-
"
|
5297 |
-
"
|
5298 |
msgstr ""
|
|
|
|
|
|
|
5299 |
|
5300 |
-
msgid ""
|
5301 |
-
"You have a new appointment. To view it, please verify Bookly Pro license."
|
5302 |
msgstr ""
|
5303 |
|
5304 |
msgid ""
|
5305 |
-
"
|
5306 |
-
"
|
5307 |
-
"respective add-ons will be disabled."
|
5308 |
msgstr ""
|
5309 |
-
"Si prega di contattare l'amministratore del sito al fine di verificare la "
|
5310 |
-
"licenza per Bookly add-on. Se non si verifica della licenza entro {days}, "
|
5311 |
-
"saranno disattivati i rispettivi componenti aggiuntivi."
|
5312 |
|
5313 |
-
msgid "
|
|
|
|
|
5314 |
msgstr ""
|
5315 |
-
"
|
5316 |
-
"
|
5317 |
|
5318 |
-
msgid ""
|
5319 |
-
"Please verify the license for Bookly add-ons in the administrative panel. If "
|
5320 |
-
"you do not verify the license within {days}, the respective add-ons will be "
|
5321 |
-
"disabled."
|
5322 |
msgstr ""
|
5323 |
-
"
|
5324 |
-
"amministrativo. Se non si verifica della licenza entro {days}, saranno "
|
5325 |
-
"disattivati i rispettivi componenti aggiuntivi."
|
5326 |
|
5327 |
-
msgid "
|
5328 |
-
msgstr "
|
5329 |
|
5330 |
-
msgid "
|
|
|
|
|
5331 |
msgstr ""
|
|
|
5332 |
|
5333 |
msgid ""
|
5334 |
-
"
|
5335 |
-
"
|
|
|
5336 |
msgstr ""
|
5337 |
|
5338 |
msgid ""
|
5339 |
-
"
|
5340 |
-
"
|
|
|
5341 |
msgstr ""
|
|
|
|
|
|
|
|
|
5342 |
|
5343 |
-
msgid "
|
5344 |
-
msgstr ""
|
5345 |
|
5346 |
-
msgid "
|
|
|
|
|
|
|
5347 |
msgstr ""
|
5348 |
|
5349 |
msgid ""
|
5350 |
-
"
|
5351 |
-
"
|
5352 |
msgstr ""
|
5353 |
|
5354 |
-
msgid "Customer's
|
5355 |
msgstr ""
|
5356 |
|
5357 |
-
msgid "
|
5358 |
-
msgstr "Notifica al cliente degli appuntamenti approvati"
|
5359 |
-
|
5360 |
-
msgid "Notification to customer about pending appointments"
|
5361 |
msgstr ""
|
5362 |
|
5363 |
-
msgid "
|
5364 |
-
msgstr "
|
5365 |
|
5366 |
-
msgid "
|
5367 |
-
|
|
|
|
|
|
|
|
|
|
|
5368 |
|
5369 |
-
msgid "
|
5370 |
-
msgstr "
|
5371 |
|
5372 |
-
|
5373 |
-
|
5374 |
-
msgstr "Stato sconosciuto di checker aggiornamento \"%s\""
|
5375 |
|
5376 |
-
|
5377 |
-
|
5378 |
-
|
|
|
5379 |
|
5380 |
-
msgid "
|
5381 |
-
msgstr "
|
5382 |
|
5383 |
msgid ""
|
5384 |
-
"
|
5385 |
-
"
|
5386 |
-
"
|
5387 |
-
"\n"
|
5388 |
-
"Your user details:\n"
|
5389 |
-
"user: {new_username}\n"
|
5390 |
-
"password: {new_password}\n"
|
5391 |
-
"\n"
|
5392 |
-
"Thanks."
|
5393 |
msgstr ""
|
5394 |
-
"Ciao.\n"
|
5395 |
-
"\n"
|
5396 |
-
"Abbiamo creato per te un account su {site_address}\n"
|
5397 |
-
"\n"
|
5398 |
-
"Ecco i dettagli del tuo account:\n"
|
5399 |
-
"Nome utente: {new_username}\n"
|
5400 |
-
"Password: {new_password}\n"
|
5401 |
-
"\n"
|
5402 |
-
"Grazie."
|
5403 |
|
5404 |
-
msgid "
|
5405 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5406 |
|
5407 |
msgid ""
|
5408 |
-
"
|
5409 |
-
"\
|
5410 |
-
"We would like to remind you that you have booked {service_name} tomorrow at "
|
5411 |
-
"{appointment_time}. We are waiting for you at {company_address}.\n"
|
5412 |
-
"\n"
|
5413 |
-
"Thank you for choosing our company.\n"
|
5414 |
-
"\n"
|
5415 |
-
"{company_name}\n"
|
5416 |
-
"{company_phone}\n"
|
5417 |
-
"{company_website}"
|
5418 |
msgstr ""
|
5419 |
-
"
|
5420 |
-
"\
|
5421 |
-
"Vorremmo ricordarti il tuo appuntamento per {service_name} fissato per "
|
5422 |
-
"domani alle ore {appointment_time}. Ti aspettiamo presso {company_address}.\n"
|
5423 |
-
"\n"
|
5424 |
-
"Grazie per aver scelto la nostra azienda.\n"
|
5425 |
-
"\n"
|
5426 |
-
"{company_name}\n"
|
5427 |
-
"{company_phone}\n"
|
5428 |
-
"{company_website}"
|
5429 |
|
5430 |
-
msgid "
|
5431 |
-
msgstr "
|
5432 |
|
5433 |
msgid ""
|
5434 |
-
"
|
5435 |
-
"
|
5436 |
-
"
|
5437 |
-
"{service_name}.\n"
|
5438 |
-
"\n"
|
5439 |
-
"Thank you and we look forward to seeing you again soon.\n"
|
5440 |
-
"\n"
|
5441 |
-
"{company_name}\n"
|
5442 |
-
"{company_phone}\n"
|
5443 |
-
"{company_website}"
|
5444 |
msgstr ""
|
5445 |
-
"
|
5446 |
-
"
|
5447 |
-
"
|
5448 |
-
"per {service_name}.\n"
|
5449 |
-
"\n"
|
5450 |
-
"Grazie e speriamo di rivederti presto.\n"
|
5451 |
-
"\n"
|
5452 |
-
"{company_name}\n"
|
5453 |
-
"{company_phone}\n"
|
5454 |
-
"{company_website}"
|
5455 |
|
5456 |
-
msgid "
|
5457 |
-
msgstr "
|
5458 |
|
5459 |
msgid ""
|
5460 |
-
"
|
5461 |
-
"
|
5462 |
-
"Your agenda for tomorrow is:\n"
|
5463 |
-
"\n"
|
5464 |
-
"{next_day_agenda}"
|
5465 |
msgstr ""
|
5466 |
-
"
|
5467 |
-
"
|
5468 |
-
"La tua agenda per domani è:\n"
|
5469 |
-
"\n"
|
5470 |
-
"{next_day_agenda}"
|
5471 |
|
5472 |
msgid ""
|
5473 |
-
"
|
5474 |
-
"
|
5475 |
-
"This is a confirmation that you have booked the following items:\n"
|
5476 |
-
"\n"
|
5477 |
-
"{cart_info}\n"
|
5478 |
-
"\n"
|
5479 |
-
"Thank you for choosing our company.\n"
|
5480 |
-
"\n"
|
5481 |
-
"{company_name}\n"
|
5482 |
-
"{company_phone}\n"
|
5483 |
-
"{company_website}"
|
5484 |
msgstr ""
|
5485 |
-
"
|
5486 |
-
"
|
5487 |
-
"Questa è una conferma che avete prenotato i seguenti elementi:\n"
|
5488 |
-
"\n"
|
5489 |
-
"{cart_info}\n"
|
5490 |
-
"\n"
|
5491 |
-
"Grazie per aver scelto la nostra azienda.\n"
|
5492 |
-
"\n"
|
5493 |
-
"{company_name}\n"
|
5494 |
-
"{company_phone}\n"
|
5495 |
-
"{company_website}"
|
5496 |
|
5497 |
msgid ""
|
5498 |
-
"
|
5499 |
-
"
|
5500 |
-
"
|
5501 |
-
"
|
5502 |
-
"password: {new_password}\n"
|
5503 |
-
"\n"
|
5504 |
-
"Thanks."
|
5505 |
msgstr ""
|
5506 |
-
"
|
5507 |
-
"
|
5508 |
-
"
|
5509 |
-
"
|
5510 |
-
"Ecco i dettagli del tuo account:\n"
|
5511 |
-
"Nome utente: {new_username}\n"
|
5512 |
-
"Password: {new_password}\n"
|
5513 |
-
"\n"
|
5514 |
-
"Grazie."
|
5515 |
|
5516 |
msgid ""
|
5517 |
-
"
|
5518 |
-
"
|
5519 |
-
"{cart_info}\n"
|
5520 |
-
"Thank you for choosing our company.\n"
|
5521 |
-
"{company_name}\n"
|
5522 |
-
"{company_phone}\n"
|
5523 |
-
"{company_website}"
|
5524 |
msgstr ""
|
|
|
|
|
5525 |
|
5526 |
-
|
5527 |
-
|
5528 |
-
|
5529 |
-
|
|
|
|
|
|
|
5530 |
msgstr ""
|
5531 |
|
5532 |
-
msgid "
|
5533 |
msgstr ""
|
|
|
|
|
5534 |
|
5535 |
-
msgid "
|
5536 |
-
msgstr "
|
5537 |
-
|
5538 |
-
msgid "Expiration Date"
|
5539 |
-
msgstr "Data di scadenza"
|
5540 |
|
5541 |
-
msgid "
|
5542 |
-
msgstr "
|
|
|
|
|
5543 |
|
5544 |
-
msgid "
|
5545 |
-
msgstr "
|
5546 |
|
5547 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
5548 |
msgstr ""
|
5549 |
|
5550 |
-
msgid "
|
|
|
|
|
|
|
5551 |
msgstr ""
|
5552 |
|
5553 |
-
msgid "
|
|
|
|
|
5554 |
msgstr ""
|
|
|
|
|
|
|
5555 |
|
5556 |
-
msgid "
|
5557 |
-
msgstr "
|
5558 |
-
|
5559 |
-
msgid "Show past appointments"
|
5560 |
-
msgstr "Mostra appuntamenti passati"
|
5561 |
-
|
5562 |
-
msgid "Not allowed"
|
5563 |
-
msgstr "Non consentito"
|
5564 |
|
5565 |
msgid ""
|
5566 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
5567 |
msgstr ""
|
5568 |
-
"Spiacenti, l'intervallo di tempo%date_time% per il %service% è stato già "
|
5569 |
-
"occupato."
|
5570 |
|
5571 |
-
msgid "
|
|
|
|
|
5572 |
msgstr ""
|
5573 |
|
5574 |
-
msgid "
|
5575 |
-
|
5576 |
-
|
5577 |
-
|
5578 |
msgstr ""
|
5579 |
|
5580 |
-
msgid "
|
5581 |
-
msgstr "
|
5582 |
|
5583 |
msgid ""
|
5584 |
-
"
|
5585 |
-
"
|
|
|
|
|
|
|
5586 |
msgstr ""
|
5587 |
-
|
5588 |
-
|
5589 |
-
|
5590 |
-
|
5591 |
-
|
5592 |
-
|
5593 |
|
5594 |
msgid ""
|
5595 |
-
"
|
5596 |
-
"
|
5597 |
-
"specified one."
|
5598 |
msgstr ""
|
|
|
|
|
5599 |
|
5600 |
-
msgid "
|
5601 |
-
msgstr "
|
5602 |
|
5603 |
-
msgid "
|
5604 |
-
|
|
|
5605 |
|
5606 |
-
msgid "
|
5607 |
msgstr ""
|
5608 |
|
5609 |
-
msgid "
|
5610 |
msgstr ""
|
5611 |
|
5612 |
-
msgid "
|
5613 |
-
|
|
|
|
|
5614 |
|
5615 |
-
msgid "
|
5616 |
-
|
|
|
|
|
5617 |
|
5618 |
-
msgid "
|
|
|
|
|
5619 |
msgstr ""
|
5620 |
|
5621 |
-
msgid "
|
5622 |
msgstr ""
|
5623 |
|
5624 |
-
msgid "
|
|
|
|
|
5625 |
msgstr ""
|
5626 |
|
5627 |
-
msgid "
|
|
|
|
|
5628 |
msgstr ""
|
5629 |
|
5630 |
-
msgid "
|
5631 |
msgstr ""
|
5632 |
|
5633 |
-
msgid "
|
5634 |
msgstr ""
|
5635 |
|
5636 |
-
msgid "
|
5637 |
msgstr ""
|
5638 |
|
5639 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5640 |
msgstr ""
|
5641 |
|
5642 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5643 |
msgstr ""
|
|
|
|
|
|
|
5644 |
|
5645 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
5646 |
msgstr ""
|
|
|
|
|
|
|
|
|
5647 |
|
5648 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
5649 |
msgstr ""
|
|
|
|
|
5650 |
|
5651 |
-
msgid "
|
5652 |
msgstr ""
|
5653 |
|
5654 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5655 |
msgstr ""
|
5656 |
|
5657 |
-
msgid "
|
5658 |
msgstr ""
|
5659 |
|
5660 |
msgid ""
|
5661 |
-
"
|
5662 |
-
"
|
5663 |
-
"period or with the beginning of the next calendar period - new day, week, "
|
5664 |
-
"month, etc."
|
5665 |
msgstr ""
|
5666 |
|
5667 |
-
msgid "
|
5668 |
msgstr ""
|
5669 |
|
5670 |
-
msgid "
|
5671 |
msgstr ""
|
5672 |
|
|
|
5673 |
msgid ""
|
5674 |
-
"
|
5675 |
-
"
|
5676 |
msgstr ""
|
5677 |
-
"Consente di definire la regola di assegnazione automatica dei membri dello "
|
5678 |
-
"staff quando è selezionata l'opzione QUALSIASI"
|
5679 |
|
5680 |
-
msgid "
|
5681 |
msgstr ""
|
5682 |
|
|
|
|
|
|
|
|
|
|
|
|
|
5683 |
msgid ""
|
5684 |
-
"
|
5685 |
-
"
|
|
|
5686 |
msgstr ""
|
5687 |
|
5688 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
5689 |
msgstr ""
|
5690 |
|
5691 |
msgid ""
|
5692 |
-
"
|
5693 |
-
"
|
5694 |
-
"unknown."
|
5695 |
msgstr ""
|
5696 |
|
5697 |
-
msgid "
|
5698 |
msgstr ""
|
5699 |
|
5700 |
-
|
5701 |
-
msgid ""
|
5702 |
-
"If this setting is enabled then online meetings will be created for new "
|
5703 |
-
"appointments with the selected online meeting provider. Make sure that the "
|
5704 |
-
"provider is configured properly in Settings > <a href=\"%s\">Online "
|
5705 |
-
"Meetings</a>"
|
5706 |
msgstr ""
|
5707 |
|
5708 |
-
msgid ""
|
5709 |
-
|
5710 |
-
"\"Private\"."
|
5711 |
-
msgstr ""
|
5712 |
-
"Per rendere il servizio invisibile ai clienti impostare la visibilità su "
|
5713 |
-
"\"Private\"."
|
5714 |
|
5715 |
-
msgid "
|
5716 |
-
msgstr "
|
5717 |
|
5718 |
-
msgid ""
|
5719 |
-
"Set padding time before and/or after an appointment. For example, if you "
|
5720 |
-
"require 15 minutes to prepare for the next appointment then you should set "
|
5721 |
-
"\"padding before\" to 15 min. If there is an appointment from 8:00 to 9:00 "
|
5722 |
-
"then the next available time slot will be 9:15 rather than 9:00."
|
5723 |
msgstr ""
|
5724 |
-
"Imposta il tempo aggiuntivo prima e dopo l'appuntamento (padding time). Ad "
|
5725 |
-
"esempio se avete bisogno di 15 minuti per preparare il prossimo appuntamento,"
|
5726 |
-
" è necessario impostare Il tempo aggiuntivo prima dell'appuntamento a 15 min."
|
5727 |
-
" In questo caso se c'è un appuntamento dalle 8:00 alle 9:00, la successiva "
|
5728 |
-
"fascia oraria disponibile sarà 09:15 anziché 09:00."
|
5729 |
|
5730 |
-
|
|
|
|
|
|
|
5731 |
msgstr ""
|
5732 |
|
5733 |
-
|
|
|
|
|
|
|
|
|
5734 |
msgstr ""
|
5735 |
|
5736 |
-
msgid ""
|
5737 |
-
"This setting allows limiting the total time occupied by bookings per day for "
|
5738 |
-
"staff member. Padding time is not included."
|
5739 |
msgstr ""
|
5740 |
|
5741 |
msgid "Google Calendar integration"
|
@@ -5750,774 +5817,728 @@ msgstr ""
|
|
5750 |
msgid "Synchronize staff member appointments with Google Calendar."
|
5751 |
msgstr "Sincronizzare gli appuntamenti membro dello staff con Google Calendar."
|
5752 |
|
5753 |
-
msgid "
|
5754 |
-
msgstr "
|
5755 |
-
|
5756 |
-
msgid "Form view in case of multiple booking"
|
5757 |
-
msgstr "Form view in caso di prenotazione multipla"
|
5758 |
|
5759 |
-
|
5760 |
-
msgid "Form in case of 100% discount"
|
5761 |
msgstr ""
|
5762 |
|
5763 |
-
msgid ""
|
5764 |
-
"Address information is needed for Invoices add-on. To disable, deactivate "
|
5765 |
-
"Invoices add-on first."
|
5766 |
msgstr ""
|
5767 |
|
5768 |
-
msgid "
|
5769 |
msgstr ""
|
5770 |
|
5771 |
-
msgid "
|
|
|
|
|
5772 |
msgstr ""
|
5773 |
|
5774 |
-
msgid "
|
5775 |
msgstr ""
|
5776 |
|
5777 |
-
#, php-format
|
5778 |
msgid ""
|
5779 |
-
"
|
5780 |
-
"
|
5781 |
msgstr ""
|
5782 |
|
5783 |
-
msgid "
|
5784 |
msgstr ""
|
5785 |
|
5786 |
msgid ""
|
5787 |
-
"
|
5788 |
-
"
|
|
|
5789 |
msgstr ""
|
5790 |
|
5791 |
-
msgid "
|
5792 |
-
msgstr "
|
5793 |
|
5794 |
-
msgid "
|
5795 |
-
msgstr "
|
5796 |
|
5797 |
-
msgid "
|
5798 |
-
msgstr "
|
5799 |
|
5800 |
-
msgid ""
|
5801 |
-
"If this setting is enabled then Bookly will be creating WordPress user "
|
5802 |
-
"accounts for all new customers. If the user is logged in then the new "
|
5803 |
-
"customer will be associated with the existing user account."
|
5804 |
msgstr ""
|
5805 |
-
"Se questa impostazione è abilitata, Bookly creerà un account WordPress per "
|
5806 |
-
"tutti i nuovi clienti. Se il cliente è già loggato con un account, il nuovo "
|
5807 |
-
"cliente verrà associato a questo account."
|
5808 |
|
5809 |
-
msgid "
|
5810 |
-
msgstr "
|
5811 |
|
5812 |
-
msgid ""
|
5813 |
-
"Select what happens when customer clicks cancel appointment link. With "
|
5814 |
-
"\"Delete\" the appointment will be deleted from the calendar. With "
|
5815 |
-
"\"Cancel\" only appointment status will be changed to \"Cancelled\"."
|
5816 |
msgstr ""
|
5817 |
-
"Seleziona cosa succede quando il cliente fa clic sul link Annulla "
|
5818 |
-
"appuntamento. Con \"Elimina\" l'appuntamento verrà cancellato dal calendario."
|
5819 |
-
" Con \"Annulla\", solo lo stato dell'appuntamento verrà modificato in "
|
5820 |
-
"\"Annullato\"."
|
5821 |
|
5822 |
-
msgid "
|
5823 |
-
msgstr "
|
5824 |
|
5825 |
msgid ""
|
5826 |
-
"
|
5827 |
-
"for customers."
|
5828 |
msgstr ""
|
5829 |
-
"Selezionare quale ruolo verrà assegnato alla nuova creazione di WordPress "
|
5830 |
-
"account utente per i clienti."
|
5831 |
|
5832 |
-
msgid "
|
5833 |
msgstr ""
|
5834 |
|
5835 |
-
msgid "
|
5836 |
-
msgstr "Carrello"
|
5837 |
-
|
5838 |
-
msgid "Select product"
|
5839 |
-
msgstr "Seleziona un prodotto"
|
5840 |
-
|
5841 |
-
#, php-format
|
5842 |
-
msgid ""
|
5843 |
-
"To use the cart, disable integration with WooCommerce <a href=\"%s\">here</a>"
|
5844 |
-
"."
|
5845 |
msgstr ""
|
5846 |
-
"Per utilizzare il carrello, disattivare l'integrazione con WooCommerce <a "
|
5847 |
-
"href=\"%s\">qui</a>."
|
5848 |
|
5849 |
-
msgid "
|
5850 |
msgstr ""
|
5851 |
|
5852 |
-
msgid ""
|
5853 |
-
"Set the URL of an appointment cancellation confirmation page that is shown "
|
5854 |
-
"to clients when they press cancellation link."
|
5855 |
msgstr ""
|
5856 |
|
5857 |
-
msgid "
|
5858 |
msgstr ""
|
5859 |
|
5860 |
-
msgid ""
|
5861 |
-
"Configure how the customer's address will be displayed in notifications."
|
5862 |
msgstr ""
|
5863 |
|
5864 |
-
msgid "
|
5865 |
msgstr ""
|
5866 |
-
"Per trovare il tuo Client ID e il tuo Client Secret, procedi come segue:"
|
5867 |
|
5868 |
-
msgid ""
|
5869 |
-
"Go to the <a href=\"https://console.developers.google.com/\" "
|
5870 |
-
"target=\"_blank\">Google Developers Console</a>."
|
5871 |
msgstr ""
|
5872 |
-
"Vai alla pagina <a href=\"https://console.developers.google.com/\" "
|
5873 |
-
"target=\"_blank\">Google Developers Console</a>."
|
5874 |
|
5875 |
-
msgid "
|
5876 |
-
msgstr "
|
5877 |
|
5878 |
-
msgid ""
|
5879 |
-
"Click in the upper left part to see a sliding sidebar. Next, click <b>API "
|
5880 |
-
"Manager</b>. In the list of APIs look for <b>Calendar API</b> and make sure "
|
5881 |
-
"it is enabled."
|
5882 |
msgstr ""
|
5883 |
-
"Fare clic nella parte superiore sinistra di vedere una barra laterale "
|
5884 |
-
"scorrevole. Quindi, fare clic su <b>API Manager</b>. Nella lista di API "
|
5885 |
-
"cercare <b>Calendar API</b> e assicurarsi che sia abilitata."
|
5886 |
|
5887 |
-
msgid "
|
5888 |
-
msgstr "
|
5889 |
|
5890 |
-
msgid ""
|
5891 |
-
"Go to <b>OAuth consent screen</b> tab and give a name to the product, then "
|
5892 |
-
"click <b>Save</b>."
|
5893 |
msgstr ""
|
5894 |
-
"Vai a <b>OAuth consent screen</b> e dare un nome al prodotto, quindi fare "
|
5895 |
-
"clic su <b>Salva</b>."
|
5896 |
|
5897 |
-
msgid ""
|
5898 |
-
"Go to <b>Credentials</b> tab and in <b>New credentials</b> drop-down menu "
|
5899 |
-
"select <b>OAuth client ID</b>."
|
5900 |
msgstr ""
|
5901 |
-
"Vai alla scheda <b>Credenziali</b> e nel menu a discesa <b>Nuove "
|
5902 |
-
"credenziali</b> selezionare <b>OAuth client ID</b>."
|
5903 |
|
5904 |
-
msgid ""
|
5905 |
-
"Select <b>Web application</b> and create your project's OAuth 2.0 "
|
5906 |
-
"credentials by providing the necessary information. For <b>Authorized "
|
5907 |
-
"redirect URIs</b> enter the <b>Redirect URI</b> found below on this page. "
|
5908 |
-
"Click <b>Create</b>."
|
5909 |
msgstr ""
|
5910 |
-
"Selezionare <b>Web application</b> e creare OAuth credenziali del vostro "
|
5911 |
-
"progetto 2.0, fornendo le informazioni necessarie. Per <b>Authorized "
|
5912 |
-
"redirect URIs</b> immettere il <b>Redirect URI</b> trovato sotto in questa "
|
5913 |
-
"pagina. Fare clic su <b>Create</b>."
|
5914 |
|
5915 |
msgid ""
|
5916 |
-
"
|
5917 |
-
"
|
|
|
|
|
5918 |
msgstr ""
|
5919 |
-
"Nella sguardo finestra popup per la <b>Client ID</b> e <b>Client secret</b>. "
|
5920 |
-
"Usali il modulo qui sotto in questa pagina."
|
5921 |
|
5922 |
-
|
5923 |
-
msgid ""
|
5924 |
-
"Important: for two-way sync, your website must use HTTPS. Google Calendar "
|
5925 |
-
"API will be able to send notifications to HTTPS address only if there is a "
|
5926 |
-
"valid SSL certificate installed on your web server. Follow the steps in this "
|
5927 |
-
"<a href=\"%s\" target=\"_blank\">document</a> to <b>verify and register your "
|
5928 |
-
"domain</b>."
|
5929 |
msgstr ""
|
5930 |
|
5931 |
-
msgid "
|
5932 |
-
msgstr "
|
5933 |
|
5934 |
-
msgid "
|
|
|
|
|
|
|
|
|
5935 |
msgstr ""
|
5936 |
-
"
|
5937 |
-
"
|
5938 |
-
|
5939 |
-
|
5940 |
-
|
5941 |
|
5942 |
-
msgid "
|
5943 |
msgstr ""
|
5944 |
-
"Il \n"
|
5945 |
-
"Client secret ottenuto dalla Developer Console"
|
5946 |
|
5947 |
-
msgid "
|
5948 |
-
|
|
|
|
|
|
|
|
|
5949 |
|
5950 |
-
msgid ""
|
5951 |
-
"With \"One-way\" sync Bookly pushes new appointments and any further changes "
|
5952 |
-
"to Google Calendar. With \"Two-way front-end only\" sync Bookly will "
|
5953 |
-
"additionally fetch events from Google Calendar and remove corresponding time "
|
5954 |
-
"slots before displaying the Time step of the booking form (this may lead to "
|
5955 |
-
"a delay when users click Next to get to the Time step)."
|
5956 |
msgstr ""
|
5957 |
|
5958 |
msgid ""
|
5959 |
-
"
|
5960 |
-
"
|
5961 |
-
"the number of fetched events here."
|
5962 |
msgstr ""
|
5963 |
|
5964 |
-
msgid ""
|
5965 |
-
"Configure what information should be placed in the title of Google Calendar "
|
5966 |
-
"event. Available codes are {service_name}, {staff_name} and {client_names}."
|
5967 |
msgstr ""
|
5968 |
-
"Configurare quali informazioni devono essere inserite nel titolo dell'evento "
|
5969 |
-
"Google Calendar. I codici disponibili sono {service_name}, {staff_name} e "
|
5970 |
-
"{client_names}."
|
5971 |
|
5972 |
msgid ""
|
5973 |
-
"
|
5974 |
-
"
|
5975 |
-
"
|
5976 |
-
"this <a href=\"https://help.market.envato.com/hc/en-us/articles/202822600-"
|
5977 |
-
"Where-can-I-find-my-Purchase-Code-\" target=\"_blank\">page</a>."
|
5978 |
msgstr ""
|
5979 |
-
"Una volta inserito il codice d'acquisto avrai accesso agli aggiornamenti "
|
5980 |
-
"gratuiti di Bookly. Gli aggiornamenti possono contenere nuove funzionalità e "
|
5981 |
-
"importanti aggiornamenti per la sicurezza. Per maggiori informazioni su dove "
|
5982 |
-
"trovare il tuo codice d'acquisto, visita questa\n"
|
5983 |
-
" <a href=\"https://help.market.envato.com/hc/en-us/articles/202822600-Where-"
|
5984 |
-
"can-I-find-my-Purchase-Code-\" target=\"_blank\">pagina</a>."
|
5985 |
|
5986 |
msgid ""
|
5987 |
-
"
|
5988 |
-
"
|
5989 |
msgstr ""
|
5990 |
-
"
|
5991 |
-
"
|
5992 |
|
5993 |
-
msgid "
|
5994 |
msgstr ""
|
5995 |
|
|
|
5996 |
msgid ""
|
5997 |
-
"
|
5998 |
-
"
|
|
|
|
|
5999 |
msgstr ""
|
6000 |
|
6001 |
-
msgid "
|
6002 |
msgstr ""
|
6003 |
|
6004 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
6005 |
msgstr ""
|
6006 |
|
6007 |
-
msgid "
|
6008 |
-
msgstr "
|
6009 |
|
6010 |
-
msgid "
|
6011 |
msgstr ""
|
6012 |
|
6013 |
-
msgid "
|
6014 |
msgstr ""
|
6015 |
|
6016 |
-
msgid ""
|
6017 |
-
"Visit the <a href=\"https://marketplace.zoom.us/\" target=\"_blank\">Zoom "
|
6018 |
-
"App Marketplace</a>"
|
6019 |
msgstr ""
|
6020 |
|
6021 |
-
msgid ""
|
6022 |
-
"
|
6023 |
-
|
|
|
6024 |
msgstr ""
|
6025 |
|
6026 |
msgid ""
|
6027 |
-
"
|
6028 |
-
"
|
|
|
|
|
6029 |
msgstr ""
|
6030 |
|
6031 |
-
msgid "
|
6032 |
msgstr ""
|
6033 |
|
6034 |
-
msgid ""
|
6035 |
-
"
|
6036 |
-
|
|
|
6037 |
msgstr ""
|
6038 |
|
6039 |
msgid ""
|
6040 |
-
"
|
6041 |
-
"
|
|
|
6042 |
msgstr ""
|
|
|
|
|
|
|
|
|
6043 |
|
6044 |
-
msgid "
|
|
|
|
|
6045 |
msgstr ""
|
6046 |
|
6047 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6048 |
msgstr ""
|
|
|
|
|
6049 |
|
6050 |
-
msgid "
|
6051 |
msgstr ""
|
6052 |
|
6053 |
-
msgid "
|
6054 |
-
msgstr "
|
6055 |
|
6056 |
msgid ""
|
6057 |
-
"
|
6058 |
-
"
|
|
|
|
|
|
|
6059 |
msgstr ""
|
6060 |
-
"Imposta come appuntamenti in ritardo può essere prenotato (per esempio, "
|
6061 |
-
"richiedono ai clienti di prenotare almeno 1 ora prima dell'orario di "
|
6062 |
-
"appuntamento)."
|
6063 |
|
6064 |
-
msgid "
|
6065 |
-
msgstr "
|
6066 |
|
6067 |
msgid ""
|
6068 |
-
"
|
6069 |
-
"
|
6070 |
msgstr ""
|
6071 |
-
"
|
6072 |
-
"
|
6073 |
-
"appuntamento)."
|
6074 |
|
6075 |
msgid ""
|
6076 |
-
"
|
6077 |
-
"
|
6078 |
msgstr ""
|
6079 |
-
"
|
6080 |
-
"
|
6081 |
|
6082 |
-
msgid "
|
6083 |
-
msgstr ""
|
6084 |
-
"Crea un prodotto in WooCommerce che possa essere inserito in un carrello."
|
6085 |
|
6086 |
-
msgid "
|
6087 |
-
msgstr "
|
6088 |
|
6089 |
-
msgid ""
|
6090 |
-
"Select the product that you created at step 1 in the drop down list of "
|
6091 |
-
"products."
|
6092 |
msgstr ""
|
6093 |
-
"Seleziona il prodotto che hai creato al passo 1 dalla lista dei prodotti."
|
6094 |
|
6095 |
msgid ""
|
6096 |
-
"
|
6097 |
-
"item data Bookly passes address and account fields into WooCommerce if you "
|
6098 |
-
"collect them in your booking form."
|
6099 |
msgstr ""
|
|
|
|
|
6100 |
|
6101 |
msgid ""
|
6102 |
-
"
|
6103 |
-
"
|
6104 |
-
"to WooCommerce cart instead of standard payment step."
|
6105 |
msgstr ""
|
6106 |
-
"
|
6107 |
-
"
|
6108 |
-
"indirizzati al carrello WooCommerce invece di procedere allo step "
|
6109 |
-
"predefinito per il pagamento."
|
6110 |
|
6111 |
-
msgid "
|
6112 |
-
msgstr "
|
6113 |
|
6114 |
-
|
6115 |
-
|
|
|
|
|
|
|
|
|
|
|
6116 |
|
6117 |
-
msgid "
|
6118 |
-
msgstr "
|
6119 |
|
6120 |
msgid ""
|
6121 |
-
"
|
6122 |
-
"
|
6123 |
-
"change the order of fields."
|
6124 |
msgstr ""
|
6125 |
|
6126 |
msgid ""
|
6127 |
-
"
|
6128 |
-
"
|
6129 |
-
"to hide the column."
|
6130 |
msgstr ""
|
6131 |
|
6132 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6133 |
msgstr ""
|
6134 |
|
|
|
|
|
|
|
|
|
|
|
|
|
6135 |
msgid ""
|
6136 |
-
"
|
6137 |
-
"with a booking."
|
6138 |
msgstr ""
|
|
|
|
|
6139 |
|
6140 |
-
msgid "
|
6141 |
-
msgstr "
|
6142 |
|
6143 |
-
msgid "
|
6144 |
-
msgstr "
|
6145 |
|
6146 |
-
msgid "
|
6147 |
-
msgstr "
|
|
|
|
|
|
|
6148 |
|
6149 |
-
msgid "
|
6150 |
-
msgstr "
|
6151 |
|
6152 |
-
msgid ""
|
6153 |
-
"Set the URL of a page that the user will be forwarded to after successful "
|
6154 |
-
"booking. If disabled then the default Done step is displayed."
|
6155 |
msgstr ""
|
6156 |
-
"Inserisci l'URL della pagina a cui verranno reindirizzati i clienti alla "
|
6157 |
-
"fine del processo di prenotazione. Se disabilitato, i clienti "
|
6158 |
-
"visualizzeranno lo step finale."
|
6159 |
|
6160 |
-
msgid "
|
6161 |
-
msgstr "
|
6162 |
|
6163 |
-
msgid "
|
6164 |
msgstr ""
|
6165 |
|
6166 |
-
msgid ""
|
6167 |
-
"Follow the steps at <a href=\"https://developers.facebook."
|
6168 |
-
"com/docs/apps/register\" target=\"_blank\">https://developers.facebook."
|
6169 |
-
"com/docs/apps/register</a> to create a Developer Account, register and "
|
6170 |
-
"configure your <b>Facebook App</b>. Then you'll need to submit your app for "
|
6171 |
-
"review. Learn more about the review process and what's required to pass "
|
6172 |
-
"review in the <a href=\"https://developers.facebook.com/docs/facebook-"
|
6173 |
-
"login/review\" target=\"_blank\">Login Review Guide</a>."
|
6174 |
msgstr ""
|
6175 |
|
6176 |
-
msgid ""
|
6177 |
-
"Below the App Details Panel click Add Platform button, select Website and "
|
6178 |
-
"enter your website URL."
|
6179 |
msgstr ""
|
6180 |
|
6181 |
msgid ""
|
6182 |
-
"
|
6183 |
-
"
|
6184 |
-
"
|
6185 |
msgstr ""
|
6186 |
|
6187 |
-
msgid "
|
6188 |
msgstr ""
|
6189 |
|
6190 |
-
msgid "
|
6191 |
msgstr ""
|
6192 |
|
6193 |
-
msgid "
|
6194 |
msgstr ""
|
6195 |
|
6196 |
-
msgid "
|
6197 |
-
msgstr "Titoli"
|
6198 |
-
|
6199 |
-
msgid "show"
|
6200 |
msgstr ""
|
6201 |
|
6202 |
-
msgid "
|
6203 |
msgstr ""
|
6204 |
|
6205 |
-
msgid "
|
6206 |
msgstr ""
|
6207 |
|
6208 |
-
msgid "
|
6209 |
msgstr ""
|
6210 |
|
6211 |
-
msgid "
|
6212 |
msgstr ""
|
6213 |
|
6214 |
-
msgid "
|
6215 |
-
msgstr "Aggiungi membri dello staff"
|
6216 |
-
|
6217 |
-
msgid "Add services you provide and assign them to staff members."
|
6218 |
msgstr ""
|
6219 |
|
6220 |
msgid ""
|
6221 |
-
"
|
6222 |
-
"
|
6223 |
-
"
|
6224 |
-
"
|
|
|
|
|
|
|
|
|
|
|
6225 |
msgstr ""
|
6226 |
|
6227 |
-
msgid "
|
6228 |
msgstr ""
|
6229 |
|
6230 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6231 |
msgstr ""
|
6232 |
|
6233 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
6234 |
msgstr ""
|
6235 |
|
6236 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
6237 |
msgstr ""
|
6238 |
|
6239 |
-
msgid "
|
6240 |
msgstr ""
|
6241 |
|
6242 |
-
msgid "
|
6243 |
msgstr ""
|
6244 |
|
6245 |
-
msgid "
|
6246 |
msgstr ""
|
6247 |
|
6248 |
-
msgid "
|
6249 |
msgstr ""
|
6250 |
|
6251 |
-
msgid "
|
6252 |
msgstr ""
|
6253 |
|
6254 |
-
msgid "
|
|
|
|
|
|
|
6255 |
msgstr ""
|
6256 |
|
6257 |
-
msgid "
|
6258 |
msgstr ""
|
6259 |
|
6260 |
-
msgid "
|
6261 |
msgstr ""
|
6262 |
|
|
|
|
|
|
|
6263 |
msgid ""
|
6264 |
-
"
|
|
|
6265 |
msgstr ""
|
|
|
|
|
6266 |
|
6267 |
-
msgid "
|
6268 |
-
msgstr ""
|
6269 |
|
6270 |
-
msgid "
|
6271 |
-
msgstr ""
|
6272 |
|
6273 |
-
msgid "
|
6274 |
msgstr ""
|
6275 |
|
6276 |
-
msgid "
|
6277 |
-
msgstr ""
|
6278 |
|
6279 |
-
msgid "
|
|
|
|
|
|
|
6280 |
msgstr ""
|
6281 |
|
6282 |
-
msgid ""
|
6283 |
-
"
|
6284 |
-
|
|
|
|
|
|
|
|
|
6285 |
msgstr ""
|
6286 |
|
6287 |
-
msgid "
|
6288 |
msgstr ""
|
6289 |
|
6290 |
-
|
6291 |
-
msgid ""
|
6292 |
-
"Cannot find your purchase code? See this <a href=\"%s\" target=\"_blank\">"
|
6293 |
-
"page</a>."
|
6294 |
msgstr ""
|
6295 |
-
"Non riesci a trovare il tuo codice di acquisto? Guarda questa <a href=\"%s\" "
|
6296 |
-
"target=\"_blank\">pagina</a>."
|
6297 |
|
6298 |
-
msgid "
|
6299 |
msgstr ""
|
6300 |
|
6301 |
-
msgid "
|
6302 |
-
msgstr "
|
6303 |
|
6304 |
-
msgid ""
|
6305 |
-
"To enable access to your bookings, please contact your website administrator "
|
6306 |
-
"to verify your license by providing a valid purchase code."
|
6307 |
msgstr ""
|
6308 |
|
6309 |
-
msgid "
|
|
|
|
|
|
|
6310 |
msgstr ""
|
6311 |
|
6312 |
-
msgid ""
|
6313 |
-
"Please contact your website administrator in order to verify the license."
|
6314 |
msgstr ""
|
6315 |
-
"Si prega di contattare l'amministratore del sito, al fine di verificare la "
|
6316 |
-
"licenza."
|
6317 |
|
6318 |
-
msgid ""
|
6319 |
-
"If you do not verify the license within {days}, access to your bookings will "
|
6320 |
-
"be disabled."
|
6321 |
msgstr ""
|
6322 |
-
"Se non si verifica della licenza entro {days}, l'accesso alle vostre "
|
6323 |
-
"prenotazioni sarà disattivato."
|
6324 |
|
6325 |
-
msgid "
|
6326 |
msgstr ""
|
6327 |
|
6328 |
-
msgid "
|
6329 |
-
msgstr "
|
6330 |
|
6331 |
-
msgid ""
|
6332 |
-
"
|
6333 |
-
|
6334 |
-
|
6335 |
-
"security fixes. If you do not provide a valid purchase code within {days}, "
|
6336 |
-
"access to your bookings will be disabled."
|
6337 |
msgstr ""
|
6338 |
|
6339 |
msgid ""
|
6340 |
-
"
|
6341 |
-
"
|
6342 |
msgstr ""
|
6343 |
|
6344 |
-
msgid "
|
6345 |
msgstr ""
|
6346 |
|
6347 |
-
msgid ""
|
6348 |
-
"To enable access to your bookings, please verify your license by providing a "
|
6349 |
-
"valid purchase code."
|
6350 |
msgstr ""
|
6351 |
-
"Per abilitare l'accesso alle vostre prenotazioni, si prega di verificare la "
|
6352 |
-
"tua licenza, fornendo un codice di acquisto valida."
|
6353 |
|
6354 |
-
msgid "
|
6355 |
-
msgstr "
|
6356 |
|
6357 |
-
msgid "
|
6358 |
-
|
|
|
6359 |
|
6360 |
-
msgid "
|
6361 |
-
msgstr "
|
6362 |
|
6363 |
-
msgid "
|
6364 |
-
msgstr "
|
6365 |
|
6366 |
-
msgid ""
|
6367 |
-
"You have access to software updates, including feature improvements and "
|
6368 |
-
"important security fixes."
|
6369 |
msgstr ""
|
6370 |
-
"Si ha accesso agli aggiornamenti del software, inclusi alcuni miglioramenti "
|
6371 |
-
"e aggiornamenti di sicurezza importanti."
|
6372 |
|
6373 |
-
msgid "
|
6374 |
-
msgstr "
|
6375 |
|
6376 |
msgid ""
|
6377 |
-
"
|
6378 |
-
"
|
6379 |
msgstr ""
|
6380 |
-
"Per abilitare l'accesso alle vostre prenotazioni, si prega di contattare "
|
6381 |
-
"l'amministratore del sito, al fine di verificare la licenza."
|
6382 |
|
6383 |
-
msgid ""
|
6384 |
-
"Please verify your license by providing a valid purchase code. Upon "
|
6385 |
-
"providing the purchase code you will get access to software updates, "
|
6386 |
-
"including feature improvements and important security fixes."
|
6387 |
msgstr ""
|
6388 |
-
"Si prega di verificare la licenza, fornendo un codice di acquisto valida. Su "
|
6389 |
-
"fornendo il codice di acquisto si otterrà l'accesso agli aggiornamenti del "
|
6390 |
-
"software, inclusi alcuni miglioramenti e aggiornamenti di sicurezza "
|
6391 |
-
"importanti."
|
6392 |
|
6393 |
-
msgid ""
|
6394 |
-
"If you do not provide a valid purchase code within {days}, access to your "
|
6395 |
-
"bookings will be disabled. <a href=\"{url}\">Details</a>"
|
6396 |
msgstr ""
|
6397 |
|
6398 |
-
msgid "
|
6399 |
-
msgstr "
|
6400 |
|
6401 |
-
msgid "
|
6402 |
-
msgstr "
|
6403 |
|
6404 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
6405 |
msgstr ""
|
6406 |
|
6407 |
-
msgid "
|
6408 |
msgstr ""
|
6409 |
|
6410 |
-
|
6411 |
-
msgid ""
|
6412 |
-
"Are you sure you want to dissociate this purchase code from %s?\n"
|
6413 |
-
"\n"
|
6414 |
-
"This will also remove the entered purchase code from this site."
|
6415 |
msgstr ""
|
6416 |
|
6417 |
-
msgid "
|
6418 |
msgstr ""
|
6419 |
|
6420 |
#, php-format
|
6421 |
msgid ""
|
6422 |
-
"
|
6423 |
-
"
|
6424 |
msgstr ""
|
6425 |
|
6426 |
-
msgid "
|
6427 |
msgstr ""
|
6428 |
|
6429 |
-
msgid "
|
6430 |
msgstr ""
|
6431 |
|
6432 |
-
msgid ""
|
6433 |
-
"With \"One-way\" sync Bookly pushes new appointments and any further changes "
|
6434 |
-
"to Google Calendar. With \"Two-way front-end only\" sync Bookly will "
|
6435 |
-
"additionally fetch events from Google Calendar and remove corresponding time "
|
6436 |
-
"slots before displaying the Time step of the booking form (this may lead to "
|
6437 |
-
"a delay when users click Next to get to the Time step). With \"Two-way\" "
|
6438 |
-
"sync all bookings created in Bookly Calendar will be automatically copied to "
|
6439 |
-
"Google Calendar and vice versa. Important: your website must use HTTPS. "
|
6440 |
-
"Google Calendar API will be able to send notifications only if there is a "
|
6441 |
-
"valid SSL certificate installed on your web server."
|
6442 |
msgstr ""
|
6443 |
|
6444 |
-
msgid "
|
6445 |
msgstr ""
|
6446 |
|
6447 |
-
msgid ""
|
6448 |
-
"If enabled then titles of Google Calendar events will be copied to Bookly "
|
6449 |
-
"appointments. If disabled, a standard title \"Google Calendar event\" will "
|
6450 |
-
"be used."
|
6451 |
msgstr ""
|
6452 |
|
6453 |
-
msgid "
|
6454 |
msgstr ""
|
6455 |
|
6456 |
-
msgid ""
|
6457 |
-
"If enabled then the description of the Google Calendar events originally "
|
6458 |
-
"copied to Bookly will be overwritten by the Bookly appointment data after "
|
6459 |
-
"they have been edited in Bookly Calendar"
|
6460 |
msgstr ""
|
6461 |
|
6462 |
-
msgid "
|
6463 |
msgstr ""
|
6464 |
|
6465 |
-
msgid "
|
6466 |
msgstr ""
|
6467 |
|
6468 |
-
msgid "
|
6469 |
msgstr ""
|
6470 |
|
6471 |
-
msgid "
|
6472 |
-
msgstr "Capacità (min e max)"
|
6473 |
-
|
6474 |
-
msgid ""
|
6475 |
-
"The minimum and maximum number of customers allowed to book the service for "
|
6476 |
-
"the certain time period."
|
6477 |
msgstr ""
|
6478 |
-
"Il numero minimo e massimo dei clienti che possono prenotare il servizio per "
|
6479 |
-
"un certo periodo di tempo."
|
6480 |
|
6481 |
-
msgid "
|
6482 |
msgstr ""
|
6483 |
|
6484 |
-
msgid ""
|
6485 |
-
"Enable this option if you want to limit the possibility of booking within "
|
6486 |
-
"the service capacity to one time."
|
6487 |
msgstr ""
|
6488 |
|
6489 |
-
msgid "
|
6490 |
msgstr ""
|
6491 |
|
6492 |
-
msgid "Group
|
6493 |
msgstr ""
|
6494 |
|
6495 |
-
msgid "
|
6496 |
-
msgstr "
|
6497 |
|
6498 |
-
msgid "
|
6499 |
msgstr ""
|
6500 |
|
|
|
6501 |
msgid ""
|
6502 |
-
"
|
|
|
6503 |
msgstr ""
|
6504 |
|
6505 |
-
msgid "
|
6506 |
msgstr ""
|
6507 |
|
6508 |
-
msgid "
|
6509 |
msgstr ""
|
6510 |
|
6511 |
-
msgid "
|
6512 |
msgstr ""
|
6513 |
|
6514 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6515 |
msgstr ""
|
6516 |
|
6517 |
msgid ""
|
6518 |
"Dear {client_name}.\n"
|
6519 |
"\n"
|
6520 |
-
"
|
|
|
6521 |
"\n"
|
6522 |
"Thank you for choosing our company.\n"
|
6523 |
"\n"
|
@@ -6526,26 +6547,42 @@ msgid ""
|
|
6526 |
"{company_website}"
|
6527 |
msgstr ""
|
6528 |
|
6529 |
-
msgid "
|
6530 |
msgstr ""
|
6531 |
|
6532 |
msgid ""
|
6533 |
"Hello.\n"
|
6534 |
"\n"
|
6535 |
-
"
|
6536 |
"\n"
|
6537 |
"Service: {service_name}\n"
|
6538 |
-
"\n"
|
|
|
6539 |
"Client name: {client_name}\n"
|
6540 |
-
"\n"
|
6541 |
"Client phone: {client_phone}\n"
|
6542 |
-
"\n"
|
6543 |
"Client email: {client_email}"
|
6544 |
msgstr ""
|
6545 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6546 |
msgid ""
|
6547 |
"Dear {client_name}.\n"
|
6548 |
-
"
|
|
|
6549 |
"Thank you for choosing our company.\n"
|
6550 |
"{company_name}\n"
|
6551 |
"{company_phone}\n"
|
@@ -6554,134 +6591,248 @@ msgstr ""
|
|
6554 |
|
6555 |
msgid ""
|
6556 |
"Hello.\n"
|
6557 |
-
"
|
6558 |
"Service: {service_name}\n"
|
|
|
|
|
6559 |
"Client name: {client_name}\n"
|
6560 |
"Client phone: {client_phone}\n"
|
6561 |
"Client email: {client_email}"
|
6562 |
msgstr ""
|
6563 |
|
6564 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
6565 |
msgstr ""
|
6566 |
|
6567 |
-
msgid "
|
|
|
|
|
6568 |
msgstr ""
|
6569 |
|
6570 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6571 |
msgstr ""
|
6572 |
|
6573 |
-
msgid ""
|
6574 |
-
"This setting allows to display the step of selecting an appointment time, "
|
6575 |
-
"hide it and create a task without due time, or display the time step, but "
|
6576 |
-
"allow a customer to skip it."
|
6577 |
msgstr ""
|
6578 |
|
6579 |
-
msgid "
|
6580 |
msgstr ""
|
6581 |
|
6582 |
-
msgid "
|
6583 |
msgstr ""
|
6584 |
|
6585 |
-
msgid "
|
6586 |
msgstr ""
|
6587 |
|
6588 |
-
msgid "
|
6589 |
msgstr ""
|
6590 |
|
6591 |
-
msgid "
|
6592 |
msgstr ""
|
6593 |
|
6594 |
-
msgid "
|
6595 |
msgstr ""
|
6596 |
|
6597 |
-
msgid "
|
6598 |
msgstr ""
|
6599 |
|
6600 |
-
msgid "
|
6601 |
msgstr ""
|
6602 |
|
6603 |
-
msgid "
|
6604 |
msgstr ""
|
6605 |
|
6606 |
-
msgid "
|
6607 |
msgstr ""
|
6608 |
|
6609 |
-
msgid "
|
6610 |
msgstr ""
|
6611 |
|
6612 |
-
msgid "
|
6613 |
msgstr ""
|
6614 |
|
6615 |
-
msgid "
|
6616 |
msgstr ""
|
6617 |
|
6618 |
-
msgid "
|
6619 |
msgstr ""
|
6620 |
|
|
|
|
|
|
|
6621 |
msgid ""
|
6622 |
-
"
|
6623 |
-
"
|
6624 |
-
"requested to pay a deposit amount or a full amount."
|
6625 |
msgstr ""
|
|
|
|
|
|
|
6626 |
|
6627 |
-
msgid "
|
6628 |
msgstr ""
|
6629 |
|
6630 |
-
msgid "
|
6631 |
msgstr ""
|
6632 |
|
6633 |
-
msgid "
|
6634 |
msgstr ""
|
6635 |
|
6636 |
-
msgid "
|
6637 |
msgstr ""
|
6638 |
|
6639 |
-
msgid "
|
6640 |
msgstr ""
|
6641 |
|
6642 |
-
msgid "
|
6643 |
msgstr ""
|
6644 |
|
6645 |
-
msgid "
|
6646 |
msgstr ""
|
6647 |
|
6648 |
-
msgid "
|
6649 |
msgstr ""
|
6650 |
|
6651 |
-
msgid "
|
6652 |
msgstr ""
|
6653 |
|
6654 |
-
msgid "
|
6655 |
msgstr ""
|
6656 |
|
6657 |
-
msgid "
|
|
|
|
|
6658 |
msgstr ""
|
6659 |
|
6660 |
-
msgid "
|
6661 |
msgstr ""
|
6662 |
|
6663 |
-
msgid "
|
6664 |
msgstr ""
|
6665 |
|
6666 |
-
msgid "
|
6667 |
msgstr ""
|
6668 |
|
6669 |
msgid ""
|
6670 |
-
"
|
6671 |
-
"
|
6672 |
-
"custom settings and enter custom values."
|
6673 |
msgstr ""
|
6674 |
|
6675 |
-
msgid "
|
6676 |
msgstr ""
|
6677 |
|
6678 |
-
msgid "
|
6679 |
msgstr ""
|
6680 |
|
6681 |
-
msgid "
|
6682 |
msgstr ""
|
6683 |
|
6684 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
6685 |
msgstr ""
|
6686 |
|
6687 |
msgid "Custom settings for location"
|
@@ -6692,186 +6843,220 @@ msgid ""
|
|
6692 |
"different locations."
|
6693 |
msgstr ""
|
6694 |
|
6695 |
-
msgid "
|
6696 |
msgstr ""
|
6697 |
|
6698 |
-
msgid "
|
6699 |
msgstr ""
|
6700 |
|
6701 |
-
msgid "
|
6702 |
msgstr ""
|
6703 |
|
6704 |
-
msgid "
|
6705 |
msgstr ""
|
6706 |
|
6707 |
-
msgid "
|
6708 |
msgstr ""
|
6709 |
|
6710 |
-
msgid "
|
6711 |
msgstr ""
|
6712 |
|
6713 |
-
msgid "
|
6714 |
msgstr ""
|
6715 |
|
6716 |
-
msgid "
|
6717 |
msgstr ""
|
6718 |
|
6719 |
-
msgid "
|
6720 |
msgstr ""
|
6721 |
|
6722 |
-
msgid "
|
|
|
|
|
|
|
6723 |
msgstr ""
|
6724 |
|
6725 |
msgid ""
|
6726 |
-
"
|
6727 |
-
"
|
|
|
6728 |
msgstr ""
|
6729 |
|
6730 |
-
msgid "
|
6731 |
msgstr ""
|
6732 |
|
6733 |
-
msgid "
|
6734 |
msgstr ""
|
6735 |
|
6736 |
-
msgid "
|
6737 |
msgstr ""
|
6738 |
|
6739 |
-
msgid "
|
6740 |
msgstr ""
|
6741 |
|
6742 |
-
msgid "
|
6743 |
msgstr ""
|
6744 |
|
6745 |
-
msgid "
|
6746 |
msgstr ""
|
6747 |
|
6748 |
-
msgid "
|
6749 |
msgstr ""
|
6750 |
|
6751 |
-
msgid "
|
6752 |
msgstr ""
|
6753 |
|
6754 |
-
msgid "
|
6755 |
msgstr ""
|
6756 |
|
6757 |
-
msgid "
|
6758 |
msgstr ""
|
6759 |
|
6760 |
-
msgid ""
|
6761 |
-
"You are going to delete your account and all information associated with it. "
|
6762 |
-
"Click Confirm to continue or Cancel to cancel the action."
|
6763 |
msgstr ""
|
6764 |
|
6765 |
msgid ""
|
6766 |
-
"
|
6767 |
-
"
|
6768 |
msgstr ""
|
6769 |
|
6770 |
-
msgid "
|
6771 |
msgstr ""
|
6772 |
|
6773 |
-
msgid "
|
6774 |
msgstr ""
|
6775 |
|
6776 |
-
msgid "
|
6777 |
msgstr ""
|
6778 |
|
6779 |
-
msgid "
|
6780 |
msgstr ""
|
6781 |
|
6782 |
-
msgid "
|
6783 |
msgstr ""
|
6784 |
|
6785 |
-
msgid "
|
6786 |
msgstr ""
|
6787 |
|
6788 |
-
msgid "
|
6789 |
msgstr ""
|
6790 |
|
6791 |
-
msgid "
|
6792 |
msgstr ""
|
6793 |
|
6794 |
-
msgid "
|
6795 |
msgstr ""
|
6796 |
|
6797 |
-
msgid "
|
6798 |
msgstr ""
|
6799 |
|
6800 |
-
msgid "
|
6801 |
msgstr ""
|
6802 |
|
6803 |
-
msgid "
|
6804 |
msgstr ""
|
6805 |
|
6806 |
-
msgid ""
|
6807 |
-
"Set service duration. If you select Custom, a client, while booking, will "
|
6808 |
-
"have to choose the duration of the service from several time units. In the "
|
6809 |
-
"\"Unit Price\" field specify the cost of 1 unit, so the total cost of the "
|
6810 |
-
"service will increase linearly with the increase of its duration."
|
6811 |
msgstr ""
|
6812 |
|
6813 |
-
|
|
|
6814 |
msgstr ""
|
6815 |
|
6816 |
-
msgid "
|
6817 |
msgstr ""
|
6818 |
|
6819 |
-
msgid "
|
6820 |
msgstr ""
|
6821 |
|
6822 |
-
|
|
|
|
|
|
|
6823 |
msgstr ""
|
6824 |
|
6825 |
-
|
|
|
|
|
|
|
|
|
6826 |
msgstr ""
|
6827 |
|
6828 |
-
|
|
|
|
|
|
|
6829 |
msgstr ""
|
6830 |
|
6831 |
-
msgid "
|
|
|
|
|
6832 |
msgstr ""
|
6833 |
|
6834 |
-
msgid "
|
6835 |
msgstr ""
|
6836 |
|
6837 |
-
msgid "
|
6838 |
msgstr ""
|
6839 |
|
6840 |
-
|
|
|
|
|
|
|
|
|
6841 |
msgstr ""
|
6842 |
|
|
|
6843 |
msgid ""
|
6844 |
-
"
|
6845 |
-
"
|
6846 |
msgstr ""
|
6847 |
|
6848 |
-
|
|
|
|
|
|
|
|
|
6849 |
msgstr ""
|
6850 |
|
6851 |
-
msgid ""
|
6852 |
-
"Once created, copy <b>Client ID</b> and <b>Secret</b> and use them in the "
|
6853 |
-
"form below."
|
6854 |
msgstr ""
|
6855 |
|
6856 |
-
msgid "
|
6857 |
msgstr ""
|
6858 |
|
6859 |
-
msgid "
|
6860 |
-
msgstr "
|
6861 |
|
6862 |
msgid ""
|
6863 |
-
"
|
6864 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6865 |
msgstr ""
|
6866 |
-
"Qui sotto puoi trovare un elenco di servizi selezionati per la prenotazione."
|
6867 |
-
"\n"
|
6868 |
-
"Clicca PRENOTA PIU' SERVIZI se si desidera aggiungere più servizi."
|
6869 |
|
6870 |
-
msgid "
|
6871 |
msgstr ""
|
6872 |
|
6873 |
-
msgid "
|
|
|
|
|
|
|
6874 |
msgstr ""
|
6875 |
|
6876 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6877 |
msgstr ""
|
8 |
"Language: it_IT\n"
|
9 |
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
10 |
"Report-Msgid-Bugs-To: \n"
|
11 |
+
"POT-Creation-Date: 2020-12-09 08:55+0000\n"
|
12 |
+
"PO-Revision-Date: 2020-12-09 08:56+0000\n"
|
13 |
"Last-Translator: support@bookly.info\n"
|
14 |
"Language-Team: Italian\n"
|
15 |
+
"X-Loco-Version: 2.3.1; wp-5.5"
|
16 |
|
17 |
+
msgid "Invoice #{invoice_number} for your appointment"
|
18 |
+
msgstr ""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
19 |
|
20 |
+
msgid ""
|
21 |
+
"Dear {client_name}.\n"
|
22 |
+
"\n"
|
23 |
+
"Attached please find invoice #{invoice_number} for your appointment.\n"
|
24 |
+
"\n"
|
25 |
+
"Thank you for choosing our company.\n"
|
26 |
+
"\n"
|
27 |
+
"{company_name}\n"
|
28 |
+
"{company_phone}\n"
|
29 |
+
"{company_website}"
|
30 |
+
msgstr ""
|
31 |
|
32 |
+
msgid "New invoice"
|
33 |
+
msgstr ""
|
34 |
|
35 |
+
msgid ""
|
36 |
+
"Hello.\n"
|
37 |
+
"You have a new invoice #{invoice_number} for an appointment scheduled by "
|
38 |
+
"{client_first_name} {client_last_name}.\n"
|
39 |
+
"Please download invoice here: {invoice_link}"
|
40 |
+
msgstr ""
|
41 |
|
42 |
+
msgid "BILL TO"
|
43 |
+
msgstr ""
|
44 |
|
45 |
+
msgid "Invoice#"
|
46 |
+
msgstr ""
|
47 |
|
48 |
+
msgid "Date"
|
49 |
+
msgstr "Data"
|
50 |
|
51 |
+
msgid "Due date"
|
52 |
+
msgstr ""
|
53 |
|
54 |
+
msgid "INVOICE"
|
55 |
+
msgstr ""
|
56 |
|
57 |
+
msgid "Thank you for your business"
|
58 |
+
msgstr ""
|
59 |
|
60 |
msgid ""
|
61 |
+
"Invoices add-on requires your customers address information. So options "
|
62 |
+
"\"Make address field mandatory\" in Settings/Customers and \"Show address "
|
63 |
+
"field\" in Appearance/Details are activated automatically and can be "
|
64 |
+
"disabled after Invoices add-on is deactivated."
|
65 |
msgstr ""
|
|
|
|
|
|
|
|
|
|
|
66 |
|
67 |
+
msgid "Invoice due days"
|
|
|
|
|
68 |
msgstr ""
|
|
|
|
|
69 |
|
70 |
+
msgid "This setting specifies the due period for the invoice (in days)."
|
71 |
+
msgstr ""
|
72 |
|
73 |
+
msgid "Invoice template"
|
74 |
+
msgstr ""
|
75 |
|
76 |
+
msgid "Specify the template for the invoice."
|
77 |
+
msgstr ""
|
78 |
|
79 |
+
msgid "Preview"
|
80 |
+
msgstr ""
|
81 |
|
82 |
+
msgid "Invoices"
|
83 |
+
msgstr ""
|
84 |
|
85 |
+
msgid "Settings saved."
|
86 |
+
msgstr "Impostazioni salvate."
|
87 |
|
88 |
+
msgid "Download invoices"
|
89 |
+
msgstr ""
|
90 |
|
91 |
+
msgid "Invoice creation date"
|
92 |
+
msgstr ""
|
93 |
|
94 |
+
msgid "Due date of invoice"
|
95 |
+
msgstr ""
|
96 |
|
97 |
+
msgid "Number of days to submit payment"
|
98 |
+
msgstr ""
|
99 |
|
100 |
+
msgid "Invoice link"
|
101 |
+
msgstr ""
|
102 |
|
103 |
+
msgid "Invoice number"
|
104 |
+
msgstr ""
|
105 |
|
106 |
+
msgid "Attach invoice"
|
107 |
+
msgstr ""
|
108 |
|
109 |
+
msgid "Empty"
|
110 |
+
msgstr ""
|
111 |
|
112 |
+
msgid ""
|
113 |
+
"Invoice due days: Please enter value in the following range (in days) - 1 to "
|
114 |
+
"365."
|
115 |
+
msgstr ""
|
116 |
|
117 |
msgid "Service"
|
118 |
msgstr "Servizio"
|
119 |
|
120 |
+
msgid "Provider"
|
121 |
+
msgstr "Fornitore"
|
122 |
|
123 |
+
msgid "Deposit"
|
124 |
+
msgstr "Acconto"
|
125 |
|
126 |
+
msgid "Price"
|
127 |
+
msgstr "Costo"
|
128 |
|
129 |
+
msgid "Tax"
|
130 |
+
msgstr ""
|
|
|
131 |
|
132 |
+
msgid "N/A"
|
133 |
+
msgstr ""
|
134 |
|
135 |
+
msgid "Subtotal"
|
136 |
+
msgstr "Totale parziale"
|
137 |
|
138 |
+
msgid "Coupon discount"
|
139 |
+
msgstr ""
|
140 |
|
141 |
+
msgid "Group discount"
|
142 |
+
msgstr ""
|
143 |
|
144 |
+
msgid "Total"
|
145 |
+
msgstr "Totale"
|
146 |
|
147 |
+
msgid "Paid"
|
148 |
+
msgstr "Pagato"
|
149 |
|
150 |
+
msgid "Due"
|
151 |
+
msgstr "Dovuto"
|
152 |
|
153 |
+
msgid "Discount"
|
154 |
+
msgstr ""
|
155 |
|
156 |
+
msgid "Outlook Calendar event"
|
157 |
msgstr ""
|
158 |
|
159 |
+
msgid "Name"
|
160 |
+
msgstr "Nome"
|
161 |
|
162 |
+
msgid "Email"
|
163 |
+
msgstr "Email"
|
164 |
|
165 |
+
msgid "Phone"
|
166 |
+
msgstr "Telefono"
|
167 |
+
|
168 |
+
msgid "Instructions"
|
169 |
+
msgstr "Istruzioni"
|
170 |
|
171 |
msgid ""
|
172 |
+
"Important: Your website must use <b>HTTPS</b>. The Outlook Calendar API will "
|
173 |
+
"not work with your website if there is no valid SSL certificate installed on "
|
174 |
+
"your web server."
|
175 |
msgstr ""
|
176 |
|
177 |
+
msgid "To find your Application ID and Application Secret, do the following:"
|
|
|
|
|
|
|
|
|
|
|
|
|
178 |
msgstr ""
|
179 |
|
180 |
+
#, php-format
|
181 |
+
msgid ""
|
182 |
+
"Sign in to the <a href=\"%s\" target=\"_blank\">Azure portal</a> using "
|
183 |
+
"either a work or school account or a personal Microsoft account."
|
184 |
msgstr ""
|
185 |
|
186 |
+
msgid ""
|
187 |
+
"If your account gives you access to more than one tenant, select your "
|
188 |
+
"account in the top right corner, and set your portal session to the Azure AD "
|
189 |
+
"tenant that you want."
|
190 |
msgstr ""
|
191 |
|
192 |
+
msgid ""
|
193 |
+
"In the left-hand navigation pane, select the <b>Azure Active Directory</b> "
|
194 |
+
"service, and then select <b>App registrations > New registration</b>."
|
195 |
msgstr ""
|
196 |
|
197 |
+
msgid ""
|
198 |
+
"When the <b>Register an application</b> page appears, enter your "
|
199 |
+
"application's <b>Name</b> and <b>Redirect URI</b> found below on this page. "
|
200 |
+
"Make sure that the <b>Supported account types</b> is set to <b>Accounts in "
|
201 |
+
"any organizational directory and personal Microsoft accounts</b>. When "
|
202 |
+
"finished, select <b>Register</b>."
|
203 |
msgstr ""
|
204 |
|
205 |
+
msgid ""
|
206 |
+
"Azure AD assigns a unique application (client) ID to your app, and you're "
|
207 |
+
"taken to your application's <b>Overview</b> page."
|
208 |
msgstr ""
|
209 |
|
210 |
+
msgid ""
|
211 |
+
"Copy the <b>Application (client) ID</b> and insert it into the form below on "
|
212 |
+
"this page."
|
|
|
213 |
msgstr ""
|
214 |
|
215 |
+
msgid ""
|
216 |
+
"Under <b>Certificates & secrets</b>, choose <b>New client secret</b>, "
|
217 |
+
"set <b>Expires</b> to <b>Never</b> and click <b>Add</b>. Copy the app secret "
|
218 |
+
"from the <b>Client secrets</b> list before leaving the page. Insert the "
|
219 |
+
"secret into the form below on this page."
|
220 |
+
msgstr ""
|
221 |
|
222 |
+
msgid ""
|
223 |
+
"Under <b>API permissions</b>, choose <b>Add a permission</b>, and select <b>"
|
224 |
+
"Microsoft Graph > Delegated permissions</b>. In <b>Select permissions</b> "
|
225 |
+
"find <b>Calendars.ReadWrite</b>, select it and click <b>Add permissions</b> "
|
226 |
+
"button."
|
227 |
+
msgstr ""
|
228 |
|
229 |
+
msgid "<b>Save</b> your changes."
|
230 |
msgstr ""
|
231 |
|
232 |
msgid ""
|
233 |
+
"Go to Staff Members, select a staff member and click <b>Connect</b> which is "
|
234 |
+
"located at the bottom of the page."
|
235 |
msgstr ""
|
236 |
+
"Vai ai membri dello staff, selezionare un membro dello staff e cliccare su "
|
237 |
+
"<b>Connetti</b> che si trova nella parte inferiore della pagina."
|
238 |
|
239 |
+
msgid "Application ID"
|
240 |
msgstr ""
|
241 |
|
242 |
+
msgid "The Application ID obtained from the Microsoft App Registration Portal."
|
243 |
msgstr ""
|
244 |
|
245 |
+
msgid "Application secret"
|
246 |
msgstr ""
|
247 |
|
248 |
+
msgid ""
|
249 |
+
"The Application Secret password obtained from the Microsoft App Registration "
|
250 |
+
"Portal."
|
251 |
+
msgstr ""
|
252 |
|
253 |
+
msgid "Redirect URI"
|
254 |
+
msgstr "Redirect URI"
|
255 |
|
256 |
+
msgid ""
|
257 |
+
"Enter this URL as a Redirect URLs in the Microsoft App Registration Portal."
|
258 |
+
msgstr ""
|
259 |
|
260 |
+
msgid "Synchronization mode"
|
261 |
+
msgstr ""
|
262 |
|
263 |
+
msgid ""
|
264 |
+
"With \"One-way\" sync Bookly pushes new appointments and any further changes "
|
265 |
+
"to Outlook Calendar. With \"Two-way front-end only\" sync Bookly will "
|
266 |
+
"additionally fetch events from Outlook Calendar and remove corresponding "
|
267 |
+
"time slots before displaying the Time step of the booking form (this may "
|
268 |
+
"lead to a delay when users click Next to get to the Time step). With \"Two-"
|
269 |
+
"way\" sync all bookings created in Bookly Calendar will be automatically "
|
270 |
+
"copied to Outlook Calendar and vice versa."
|
271 |
+
msgstr ""
|
272 |
|
273 |
+
msgid "One-way"
|
274 |
+
msgstr ""
|
275 |
|
276 |
+
msgid "Two-way front-end only"
|
277 |
+
msgstr ""
|
278 |
|
279 |
+
msgid "Two-way"
|
280 |
+
msgstr ""
|
281 |
|
282 |
+
msgid "Sync appointments history (past and future)"
|
283 |
+
msgstr ""
|
284 |
|
285 |
+
msgid ""
|
286 |
+
"Specify how many days of past and future calendar data you wish to sync at "
|
287 |
+
"the time of initial sync. If you enter 0 in either field, synchronization of "
|
288 |
+
"past or future events will not be performed"
|
289 |
+
msgstr ""
|
290 |
|
291 |
+
msgid "Copy Outlook Calendar event titles"
|
292 |
+
msgstr ""
|
293 |
|
294 |
+
msgid ""
|
295 |
+
"If enabled then titles of Outlook Calendar events will be copied to Bookly "
|
296 |
+
"appointments. If disabled, a standard title \"Outlook Calendar event\" will "
|
297 |
+
"be used."
|
298 |
+
msgstr ""
|
299 |
|
300 |
+
msgid "Limit number of fetched events"
|
301 |
+
msgstr "Limita il numero di eventi catturati"
|
302 |
|
303 |
+
msgid ""
|
304 |
+
"If there is a lot of events in Outlook Calendar sometimes this leads to a "
|
305 |
+
"lack of memory in PHP when Bookly tries to fetch all events. You can limit "
|
306 |
+
"the number of fetched events here."
|
307 |
+
msgstr ""
|
308 |
|
309 |
+
msgid "Template for event title"
|
310 |
+
msgstr "Modello per titolo dell'evento"
|
311 |
+
|
312 |
+
msgid ""
|
313 |
+
"Configure what information should be placed in the title of Outlook Calendar "
|
314 |
+
"event. Available codes are {service_name}, {staff_name} and {client_names}."
|
315 |
+
msgstr ""
|
316 |
|
317 |
+
msgid "Appointment section"
|
318 |
+
msgstr ""
|
319 |
|
320 |
+
msgid "This section describes information that is displayed about appointment."
|
321 |
msgstr ""
|
322 |
|
323 |
+
msgid "Customer section"
|
324 |
msgstr ""
|
|
|
325 |
|
326 |
+
msgid ""
|
327 |
+
"This section describes information that is displayed about each participant "
|
328 |
+
"of the appointment."
|
329 |
+
msgstr ""
|
330 |
+
|
331 |
+
msgid "Customer notes for appointment"
|
332 |
+
msgstr ""
|
333 |
+
|
334 |
+
msgid "Email of client"
|
335 |
+
msgstr ""
|
336 |
+
|
337 |
+
msgid "Full name of client"
|
338 |
+
msgstr ""
|
339 |
+
|
340 |
+
msgid "First name of client"
|
341 |
+
msgstr ""
|
342 |
+
|
343 |
+
msgid "Last name of client"
|
344 |
+
msgstr ""
|
345 |
+
|
346 |
+
msgid "Phone of client"
|
347 |
+
msgstr ""
|
348 |
+
|
349 |
+
msgid "Status of payment"
|
350 |
+
msgstr ""
|
351 |
+
|
352 |
+
msgid "Payment type"
|
353 |
+
msgstr ""
|
354 |
+
|
355 |
+
msgid "Status of appointment"
|
356 |
+
msgstr ""
|
357 |
+
|
358 |
+
msgid "Total price of booking (sum of all cart items after applying coupon)"
|
359 |
+
msgstr ""
|
360 |
+
|
361 |
+
msgid "Date of appointment"
|
362 |
+
msgstr ""
|
363 |
+
|
364 |
+
msgid "Time of appointment"
|
365 |
+
msgstr ""
|
366 |
+
|
367 |
+
msgid "Booking number"
|
368 |
+
msgstr ""
|
369 |
+
|
370 |
+
msgid "Name of category"
|
371 |
+
msgstr ""
|
372 |
+
|
373 |
+
msgid "Address of company"
|
374 |
+
msgstr ""
|
375 |
+
|
376 |
+
msgid "Name of company"
|
377 |
+
msgstr ""
|
378 |
+
|
379 |
+
msgid "Company phone"
|
380 |
+
msgstr ""
|
381 |
+
|
382 |
+
msgid "Company web-site address"
|
383 |
+
msgstr ""
|
384 |
+
|
385 |
+
msgid "Online meeting password"
|
386 |
+
msgstr ""
|
387 |
+
|
388 |
+
msgid "Online meeting start URL"
|
389 |
+
msgstr ""
|
390 |
+
|
391 |
+
msgid "Online meeting URL"
|
392 |
+
msgstr ""
|
393 |
+
|
394 |
+
msgid "Info of service"
|
395 |
+
msgstr ""
|
396 |
+
|
397 |
+
msgid "Name of service"
|
398 |
+
msgstr ""
|
399 |
+
|
400 |
+
msgid "Price of service"
|
401 |
+
msgstr ""
|
402 |
+
|
403 |
+
msgid "Email of staff"
|
404 |
+
msgstr ""
|
405 |
+
|
406 |
+
msgid "Info of staff"
|
407 |
+
msgstr ""
|
408 |
+
|
409 |
+
msgid "Name of staff"
|
410 |
+
msgstr ""
|
411 |
+
|
412 |
+
msgid "Phone of staff"
|
413 |
+
msgstr ""
|
414 |
+
|
415 |
+
msgid "Outlook Calendar"
|
416 |
+
msgstr ""
|
417 |
+
|
418 |
+
msgid "Disabled"
|
419 |
+
msgstr "Disabilitato"
|
420 |
+
|
421 |
+
msgid "Synchronize with Outlook Calendar"
|
422 |
+
msgstr ""
|
423 |
+
|
424 |
+
msgid "Calendars synchronized successfully."
|
425 |
+
msgstr ""
|
426 |
+
|
427 |
+
msgid "Outlook Calendar integration"
|
428 |
+
msgstr ""
|
429 |
+
|
430 |
+
msgid "Connect"
|
431 |
+
msgstr "Connetti"
|
432 |
+
|
433 |
+
#, php-format
|
434 |
+
msgid "Please configure Outlook Calendar <a href=\"%s\">settings</a> first"
|
435 |
+
msgstr ""
|
436 |
+
|
437 |
+
msgid "Connected"
|
438 |
+
msgstr "Connesso"
|
439 |
+
|
440 |
+
msgid "disconnect"
|
441 |
+
msgstr "disconnetti"
|
442 |
+
|
443 |
+
msgid "Synchronize staff member appointments with Outlook Calendar."
|
444 |
+
msgstr ""
|
445 |
+
|
446 |
+
msgid "Calendar"
|
447 |
+
msgstr "Calendario"
|
448 |
+
|
449 |
+
msgid "-- Select calendar --"
|
450 |
+
msgstr ""
|
451 |
+
|
452 |
+
msgid ""
|
453 |
+
"When you connect a calendar all future and past events will be synchronized "
|
454 |
+
"according to the selected synchronization mode. This may take a few minutes. "
|
455 |
+
"Please wait."
|
456 |
+
msgstr ""
|
457 |
+
|
458 |
+
msgid "Can't change calendar for archived staff"
|
459 |
+
msgstr ""
|
460 |
+
|
461 |
+
msgid "Custom Fields"
|
462 |
+
msgstr "Campi personalizzati"
|
463 |
+
|
464 |
+
msgid "Incorrect code"
|
465 |
+
msgstr "Codice errato"
|
466 |
+
|
467 |
+
msgid "Required"
|
468 |
+
msgstr "Richiesto"
|
469 |
+
|
470 |
+
msgid "Combined values of all custom fields"
|
471 |
msgstr ""
|
472 |
|
473 |
msgid "Bind fields to services"
|
508 |
msgid "Drop Down"
|
509 |
msgstr "Menu a scomparsa"
|
510 |
|
511 |
+
msgid "Captcha"
|
512 |
+
msgstr "Captcha"
|
513 |
+
|
514 |
msgid "HTML allowed in all texts and labels."
|
515 |
msgstr "HTML consentito in tutti i testi e le etichette."
|
516 |
|
538 |
msgid "Remove item"
|
539 |
msgstr "Rimuovi elemento"
|
540 |
|
541 |
+
msgid "All services"
|
542 |
+
msgstr "Tutti i servizi"
|
543 |
+
|
544 |
msgid "No service selected"
|
545 |
msgstr "Nessun servizio selezionato"
|
546 |
|
547 |
+
msgid "Show custom fields"
|
548 |
msgstr ""
|
549 |
|
550 |
+
msgid "Extended staff agenda for next day"
|
551 |
msgstr ""
|
552 |
|
553 |
+
msgid "Combined values of all custom fields (formatted in 2 columns)"
|
554 |
msgstr ""
|
555 |
|
556 |
+
msgid "Another code"
|
557 |
+
msgstr "Un'altra codice"
|
558 |
|
559 |
+
msgid "Notification to customer about approved recurring appointment"
|
560 |
msgstr ""
|
561 |
|
562 |
+
msgid "Your appointment information"
|
563 |
+
msgstr "Le informazioni del tuo appuntamento"
|
564 |
|
565 |
+
msgid ""
|
566 |
+
"Dear {client_name}.\n"
|
567 |
+
"\n"
|
568 |
+
"This is a confirmation that you have booked {service_name} (x "
|
569 |
+
"{recurring_count}).\n"
|
570 |
+
"\n"
|
571 |
+
"Please find the schedule of your booking below.\n"
|
572 |
+
"\n"
|
573 |
+
"{appointment_schedule}\n"
|
574 |
+
"\n"
|
575 |
+
"We are waiting you at {company_address}.\n"
|
576 |
+
"\n"
|
577 |
+
"Thank you for choosing our company.\n"
|
578 |
+
"\n"
|
579 |
+
"{company_name}\n"
|
580 |
+
"{company_phone}\n"
|
581 |
+
"{company_website}"
|
582 |
msgstr ""
|
583 |
|
584 |
+
msgid "Notification to staff member about approved recurring appointment"
|
585 |
msgstr ""
|
586 |
|
587 |
+
msgid "New booking information"
|
588 |
+
msgstr "Informazioni nuova prenotazione"
|
589 |
|
590 |
+
msgid ""
|
591 |
+
"Hello.\n"
|
592 |
+
"\n"
|
593 |
+
"You have a new booking.\n"
|
594 |
+
"\n"
|
595 |
+
"Service: {service_name} (x {recurring_count})\n"
|
596 |
+
"Schedule:\n"
|
597 |
+
"{appointment_schedule}\n"
|
598 |
+
"Client name: {client_name}\n"
|
599 |
+
"Client phone: {client_phone}\n"
|
600 |
+
"Client email: {client_email}"
|
601 |
msgstr ""
|
602 |
|
603 |
+
msgid "Notification to customer about cancelled recurring appointment"
|
604 |
msgstr ""
|
605 |
|
606 |
+
msgid "Booking cancellation"
|
607 |
+
msgstr "Cancellazione prenotazione"
|
|
|
|
|
|
|
608 |
|
609 |
msgid ""
|
610 |
"Dear {client_name}.\n"
|
611 |
"\n"
|
612 |
+
"Your booking of {service_name} (x {recurring_count}) has been cancelled.\n"
|
613 |
+
"\n"
|
614 |
+
"Reason: {cancellation_reason}\n"
|
615 |
+
"\n"
|
616 |
+
"Please find the schedule of the cancelled booking below:\n"
|
617 |
+
"\n"
|
618 |
+
"{appointment_schedule}\n"
|
619 |
"\n"
|
620 |
"Thank you for choosing our company.\n"
|
621 |
"\n"
|
624 |
"{company_website}"
|
625 |
msgstr ""
|
626 |
|
627 |
+
msgid "Notification to staff member about cancelled recurring appointment"
|
628 |
msgstr ""
|
629 |
|
630 |
msgid ""
|
631 |
"Hello.\n"
|
632 |
"\n"
|
633 |
+
"The following booking has been cancelled.\n"
|
634 |
"\n"
|
635 |
+
"Reason: {cancellation_reason}\n"
|
636 |
"\n"
|
637 |
+
"Service: {service_name} (x {recurring_count})\n"
|
638 |
+
"Schedule:\n"
|
639 |
+
"{appointment_schedule}\n"
|
640 |
"Client name: {client_name}\n"
|
|
|
641 |
"Client phone: {client_phone}\n"
|
|
|
642 |
"Client email: {client_email}"
|
643 |
msgstr ""
|
644 |
|
645 |
+
msgid "Notification to customer about rejected recurring appointment"
|
646 |
+
msgstr ""
|
647 |
+
|
648 |
+
msgid "Booking rejection"
|
649 |
+
msgstr "Rifiuto della prenotazione"
|
650 |
+
|
651 |
msgid ""
|
652 |
"Dear {client_name}.\n"
|
653 |
+
"\n"
|
654 |
+
"Your booking of {service_name} (x {recurring_count}) has been rejected.\n"
|
655 |
+
"\n"
|
656 |
+
"Reason: {cancellation_reason}\n"
|
657 |
+
"\n"
|
658 |
+
"Please find the schedule of the cancelled booking below:\n"
|
659 |
+
"\n"
|
660 |
+
"{appointment_schedule}\n"
|
661 |
+
"\n"
|
662 |
"Thank you for choosing our company.\n"
|
663 |
+
"\n"
|
664 |
"{company_name}\n"
|
665 |
"{company_phone}\n"
|
666 |
"{company_website}"
|
667 |
msgstr ""
|
668 |
|
669 |
+
msgid "Notification to staff member about rejected recurring appointment "
|
670 |
+
msgstr ""
|
671 |
+
|
672 |
msgid ""
|
673 |
"Hello.\n"
|
674 |
+
"\n"
|
675 |
+
"The following booking has been rejected.\n"
|
676 |
+
"\n"
|
677 |
+
"Reason: {cancellation_reason}\n"
|
678 |
+
"\n"
|
679 |
+
"Service: {service_name} (x {recurring_count})\n"
|
680 |
+
"Schedule:\n"
|
681 |
+
"{appointment_schedule}\n"
|
682 |
"Client name: {client_name}\n"
|
683 |
"Client phone: {client_phone}\n"
|
684 |
"Client email: {client_email}"
|
685 |
msgstr ""
|
686 |
|
687 |
+
msgid ""
|
688 |
+
"Notification to customer about placing on waiting list for recurring "
|
689 |
+
"appointment"
|
690 |
+
msgstr ""
|
691 |
+
|
692 |
+
msgid "You have been added to waiting list for appointment"
|
693 |
msgstr ""
|
694 |
|
695 |
msgid ""
|
696 |
"Dear {client_name}.\n"
|
697 |
"\n"
|
698 |
+
"This is a confirmation that you have been added to the waiting list for "
|
699 |
+
"{service_name} (x {recurring_count}).\n"
|
700 |
+
"\n"
|
701 |
+
"Please find the service schedule below.\n"
|
702 |
+
"\n"
|
703 |
+
"{appointment_schedule}\n"
|
704 |
"\n"
|
705 |
"Thank you for choosing our company.\n"
|
706 |
"\n"
|
|
|
707 |
"{company_name}\n"
|
708 |
"{company_phone}\n"
|
709 |
"{company_website}"
|
710 |
msgstr ""
|
711 |
|
712 |
+
msgid ""
|
713 |
+
"Notification to staff member about placing on waiting list for recurring "
|
714 |
+
"appointment "
|
715 |
+
msgstr ""
|
716 |
+
|
717 |
+
msgid "New waiting list information"
|
718 |
+
msgstr ""
|
719 |
+
|
720 |
msgid ""
|
721 |
"Hello.\n"
|
722 |
"\n"
|
723 |
+
"You have new customer in the waiting list.\n"
|
724 |
"\n"
|
725 |
+
"Service: {service_name} (x {recurring_count})\n"
|
726 |
+
"Schedule:\n"
|
727 |
+
"{appointment_schedule}\n"
|
728 |
"Client name: {client_name}\n"
|
|
|
729 |
"Client phone: {client_phone}\n"
|
|
|
730 |
"Client email: {client_email}"
|
731 |
msgstr ""
|
732 |
|
733 |
msgid ""
|
734 |
"Dear {client_name}.\n"
|
735 |
+
"This is a confirmation that you have booked {service_name} (x "
|
736 |
+
"{recurring_count}).\n"
|
737 |
+
"Please find the schedule of your booking below.\n"
|
738 |
+
"{appointment_schedule}\n"
|
739 |
+
"\n"
|
740 |
+
"We are waiting you at {company_address}.\n"
|
741 |
"Thank you for choosing our company.\n"
|
|
|
742 |
"{company_name}\n"
|
743 |
"{company_phone}\n"
|
744 |
"{company_website}"
|
746 |
|
747 |
msgid ""
|
748 |
"Hello.\n"
|
749 |
+
"You have a new booking.\n"
|
750 |
+
"Service: {service_name} (x {recurring_count})\n"
|
751 |
+
"Schedule:\n"
|
752 |
+
"{appointment_schedule}\n"
|
753 |
"Client name: {client_name}\n"
|
754 |
"Client phone: {client_phone}\n"
|
755 |
"Client email: {client_email}"
|
756 |
msgstr ""
|
757 |
|
758 |
+
msgid ""
|
759 |
+
"Dear {client_name}.\n"
|
760 |
+
"Your booking of {service_name} (x {recurring_count}) has been cancelled.\n"
|
761 |
+
"Reason: {cancellation_reason}\n"
|
762 |
+
"Please find the schedule of the cancelled booking below: "
|
763 |
+
"{appointment_schedule}\n"
|
764 |
+
"Thank you for choosing our company.\n"
|
765 |
+
"{company_name}\n"
|
766 |
+
"{company_phone}\n"
|
767 |
+
"{company_website}"
|
768 |
msgstr ""
|
769 |
|
770 |
+
msgid "Notification to staff member about cancelled recurring appointment "
|
771 |
msgstr ""
|
772 |
|
773 |
+
msgid ""
|
774 |
+
"Hello.\n"
|
775 |
+
"The following booking has been cancelled.\n"
|
776 |
+
"Reason: {cancellation_reason}\n"
|
777 |
+
"Service: {service_name} (x {recurring_count})\n"
|
778 |
+
"Schedule:\n"
|
779 |
+
"{appointment_schedule}\n"
|
780 |
+
"Client name: {client_name}\n"
|
781 |
+
"Client phone: {client_phone}\n"
|
782 |
+
"Client email: {client_email}"
|
783 |
msgstr ""
|
784 |
|
785 |
+
msgid ""
|
786 |
+
"Dear {client_name}.\n"
|
787 |
+
"Your booking of {service_name} (x {recurring_count}) has been rejected.\n"
|
788 |
+
"Reason: {cancellation_reason}\n"
|
789 |
+
"Please find the schedule of the cancelled booking below: "
|
790 |
+
"{appointment_schedule}\n"
|
791 |
+
"Thank you for choosing our company.\n"
|
792 |
+
"{company_name}\n"
|
793 |
+
"{company_phone}\n"
|
794 |
+
"{company_website}"
|
795 |
msgstr ""
|
796 |
|
797 |
+
msgid ""
|
798 |
+
"Hello.\n"
|
799 |
+
"The following booking has been rejected.\n"
|
800 |
+
"Reason: {cancellation_reason}\n"
|
801 |
+
"Service: {service_name} (x {recurring_count})\n"
|
802 |
+
"Schedule:\n"
|
803 |
+
"{appointment_schedule}\n"
|
804 |
+
"Client name: {client_name}\n"
|
805 |
+
"Client phone: {client_phone}\n"
|
806 |
+
"Client email: {client_email}"
|
807 |
msgstr ""
|
808 |
|
809 |
+
msgid ""
|
810 |
+
"Dear {client_name}.\n"
|
811 |
+
"This is a confirmation that you have been added to the waiting list for "
|
812 |
+
"{service_name} (x {recurring_count}).\n"
|
813 |
+
"Please find the service schedule below.\n"
|
814 |
+
"{appointment_schedule}\n"
|
815 |
+
"Thank you for choosing our company.\n"
|
816 |
+
"{company_name}\n"
|
817 |
+
"{company_phone}\n"
|
818 |
+
"{company_website}"
|
819 |
msgstr ""
|
820 |
|
821 |
+
msgid ""
|
822 |
+
"Hello.\n"
|
823 |
+
"You have new customer in the waiting list.\n"
|
824 |
+
"Service: {service_name} (x {recurring_count})\n"
|
825 |
+
"Schedule:\n"
|
826 |
+
"{appointment_schedule}\n"
|
827 |
+
"Client name: {client_name}\n"
|
828 |
+
"Client phone: {client_phone}\n"
|
829 |
+
"Client email: {client_email}"
|
830 |
msgstr ""
|
831 |
|
832 |
+
msgid "Repeat"
|
833 |
msgstr ""
|
834 |
|
835 |
+
msgid "Next"
|
836 |
+
msgstr "Avanti"
|
837 |
+
|
838 |
+
msgid ""
|
839 |
+
"You selected a booking for {#each appointments as appointment delimited by "
|
840 |
+
"\", \"}{appointment.service_name} at {appointment.appointment_time} on "
|
841 |
+
"{appointment.appointment_date}{/each}. If you would like to make this "
|
842 |
+
"appointment recurring please check the box below and set appropriate "
|
843 |
+
"parameters. Otherwise press Next button below."
|
844 |
msgstr ""
|
845 |
|
846 |
+
msgid "Another time"
|
847 |
+
msgstr ""
|
848 |
|
849 |
+
msgid "Biweekly"
|
850 |
msgstr ""
|
851 |
|
852 |
+
msgid "Daily"
|
853 |
+
msgstr ""
|
854 |
|
855 |
+
msgid "Day"
|
856 |
+
msgstr "Giorno"
|
857 |
|
858 |
+
msgid "day(s)"
|
|
|
|
|
859 |
msgstr ""
|
860 |
|
861 |
+
msgid "Deleted"
|
862 |
msgstr ""
|
863 |
|
864 |
+
msgid "every"
|
865 |
msgstr ""
|
866 |
|
867 |
+
msgid ""
|
868 |
+
"The first recurring appointment was added to cart. You will be invoiced for "
|
869 |
+
"the remaining appointments later."
|
870 |
msgstr ""
|
871 |
|
872 |
+
msgid "Monthly"
|
873 |
msgstr ""
|
874 |
|
875 |
+
msgid "There are no available time slots for this day"
|
876 |
+
msgstr ""
|
|
|
|
|
|
|
877 |
|
878 |
+
msgid "On"
|
879 |
msgstr ""
|
880 |
|
881 |
+
msgid "Please select some days"
|
882 |
+
msgstr ""
|
883 |
|
884 |
+
msgid "Schedule"
|
885 |
+
msgstr "Pianifica"
|
886 |
|
887 |
+
msgid "Another time was offered on pages {list}."
|
888 |
msgstr ""
|
889 |
|
890 |
+
msgid ""
|
891 |
+
"Some of the desired time slots are busy. System offers the nearest time slot "
|
892 |
+
"instead. Click the Edit button to select another time if needed."
|
893 |
msgstr ""
|
894 |
|
895 |
+
msgid "Specific day"
|
896 |
msgstr ""
|
897 |
|
898 |
+
msgid "Repeat this appointment"
|
899 |
+
msgstr ""
|
900 |
|
901 |
+
msgid "Until"
|
|
|
|
|
902 |
msgstr ""
|
903 |
|
904 |
+
msgid "Weekly"
|
905 |
msgstr ""
|
906 |
|
907 |
+
msgid "First"
|
908 |
msgstr ""
|
909 |
|
910 |
+
msgid "Second"
|
911 |
+
msgstr ""
|
912 |
|
913 |
+
msgid "Third"
|
914 |
msgstr ""
|
915 |
|
916 |
+
msgid "Fourth"
|
917 |
+
msgstr ""
|
918 |
|
919 |
+
msgid "Last"
|
920 |
+
msgstr "Successivo"
|
921 |
|
922 |
+
msgid "or"
|
923 |
+
msgstr "o"
|
924 |
|
925 |
+
msgid "time(s)"
|
926 |
msgstr ""
|
927 |
|
928 |
+
msgid "Notification to customer about pending recurring appointment"
|
929 |
+
msgstr ""
|
|
|
|
|
|
|
930 |
|
931 |
+
msgid "Notification to staff member about pending recurring appointment"
|
932 |
msgstr ""
|
933 |
|
934 |
msgid ""
|
935 |
+
"Notification to staff member about placing on waiting list for recurring "
|
936 |
+
"appointment"
|
937 |
msgstr ""
|
938 |
|
939 |
+
msgid "New recurring booking notification"
|
940 |
msgstr ""
|
941 |
|
942 |
+
msgid "Notification about recurring appointment status changes"
|
943 |
msgstr ""
|
944 |
|
945 |
+
msgid "at"
|
946 |
msgstr ""
|
947 |
|
948 |
+
msgid "Online Payments"
|
|
|
|
|
949 |
msgstr ""
|
950 |
|
951 |
+
msgid "Customers must pay only for the 1st appointment"
|
|
|
|
|
952 |
msgstr ""
|
953 |
|
954 |
+
msgid "Customers must pay for all appointments in series"
|
|
|
|
|
955 |
msgstr ""
|
956 |
|
957 |
+
msgid "Group appointments"
|
958 |
msgstr ""
|
959 |
|
960 |
+
msgid "Create new appointment for every recurring booking"
|
961 |
msgstr ""
|
962 |
|
963 |
+
msgid "Add customer to available group bookings"
|
964 |
msgstr ""
|
965 |
|
966 |
+
msgid "Recurring Appointments"
|
967 |
msgstr ""
|
968 |
|
969 |
+
msgid "Approve recurring appointment URL (success)"
|
970 |
msgstr ""
|
971 |
|
972 |
+
msgid ""
|
973 |
+
"Set the URL of a page that is shown to staff after they successfully "
|
974 |
+
"approved recurring appointment."
|
|
|
975 |
msgstr ""
|
976 |
|
977 |
+
msgid "Approve recurring appointment URL (denied)"
|
978 |
msgstr ""
|
979 |
|
980 |
+
msgid ""
|
981 |
+
"Set the URL of a page that is shown to staff when the approval of recurring "
|
982 |
+
"appointment cannot be done (changed status, etc.)."
|
983 |
msgstr ""
|
984 |
|
985 |
+
msgid "Edit"
|
986 |
+
msgstr "Modifica"
|
987 |
|
988 |
+
msgid "Remove"
|
989 |
+
msgstr "Rimuovere"
|
990 |
|
991 |
+
msgid "Restore"
|
992 |
msgstr ""
|
993 |
|
994 |
+
msgid "Pages with another time"
|
995 |
msgstr ""
|
996 |
|
997 |
+
msgid "Show Repeat step"
|
998 |
msgstr ""
|
999 |
|
1000 |
+
msgid "Recurring appointments schedule"
|
1001 |
msgstr ""
|
1002 |
|
1003 |
+
msgid "Recurring appointments schedule with cancel"
|
1004 |
msgstr ""
|
1005 |
|
1006 |
+
msgid "URL for approving the whole schedule"
|
|
|
|
|
|
|
1007 |
msgstr ""
|
1008 |
|
1009 |
+
msgid "Recurring appointments"
|
1010 |
+
msgstr "Appuntamenti ricorrenti"
|
1011 |
+
|
1012 |
+
msgid "Every"
|
1013 |
msgstr ""
|
1014 |
|
1015 |
msgid ""
|
1016 |
+
"You are going to reschedule the recurring appointment. Please select "
|
1017 |
+
"recurring appointments which should be rescheduled as well."
|
1018 |
msgstr ""
|
1019 |
|
1020 |
+
msgid "Only this appointment"
|
1021 |
msgstr ""
|
1022 |
|
1023 |
+
msgid "This and next appointments"
|
1024 |
msgstr ""
|
1025 |
|
1026 |
+
msgid "All appointments"
|
1027 |
+
msgstr "Tutti gli appuntament"
|
1028 |
|
1029 |
+
msgid "Number of days to shift appointments"
|
|
|
|
|
|
|
|
|
|
|
1030 |
msgstr ""
|
1031 |
|
1032 |
+
msgid "Appointments will be scheduled at"
|
1033 |
+
msgstr ""
|
1034 |
|
1035 |
+
msgid "Back"
|
1036 |
+
msgstr "Indietro"
|
1037 |
|
1038 |
+
msgid "Delete"
|
1039 |
+
msgstr "Cancella"
|
1040 |
|
1041 |
+
msgid "Apply"
|
1042 |
+
msgstr "Applica"
|
1043 |
|
1044 |
+
msgid "Another time was offered on pages"
|
1045 |
msgstr ""
|
1046 |
|
1047 |
+
msgid "Delete Appointment"
|
1048 |
msgstr ""
|
1049 |
|
1050 |
+
msgid "Delete only this appointment"
|
1051 |
msgstr ""
|
1052 |
|
1053 |
+
msgid "Delete this and the following appointments"
|
1054 |
msgstr ""
|
1055 |
|
1056 |
+
msgid "Delete all appointments in series"
|
1057 |
msgstr ""
|
1058 |
|
1059 |
+
msgid "Send notifications"
|
1060 |
+
msgstr "Invia notifiche"
|
1061 |
|
1062 |
+
msgid "Cancellation reason (optional)"
|
1063 |
+
msgstr "Motivo della cancellazione (facoltativa)"
|
1064 |
|
1065 |
+
msgid "Close"
|
1066 |
+
msgstr "Chiudi"
|
1067 |
+
|
1068 |
+
msgid "Enabled"
|
1069 |
+
msgstr "Abilitato"
|
1070 |
+
|
1071 |
+
msgid "Allow this service to have recurring appointments."
|
1072 |
msgstr ""
|
1073 |
|
1074 |
+
msgid "Frequencies"
|
1075 |
msgstr ""
|
1076 |
|
1077 |
+
msgid "All"
|
1078 |
+
msgstr "Tutti"
|
1079 |
+
|
1080 |
+
msgid "Nothing selected"
|
1081 |
msgstr ""
|
1082 |
|
1083 |
+
msgid "Save"
|
1084 |
+
msgstr "Salva"
|
1085 |
|
1086 |
+
msgid "I will pay now with Credit Card"
|
1087 |
+
msgstr "PagheròPago subito con Carta di Credito"
|
1088 |
|
1089 |
+
msgid "Sandbox Mode"
|
1090 |
+
msgstr "Sandbox Mode"
|
1091 |
|
1092 |
+
msgid "No"
|
1093 |
+
msgstr "No"
|
1094 |
|
1095 |
+
msgid "Yes"
|
1096 |
+
msgstr "Si"
|
1097 |
|
1098 |
+
msgid "Merchant Key"
|
1099 |
msgstr ""
|
1100 |
|
1101 |
+
msgid "Merchant Salt"
|
1102 |
msgstr ""
|
1103 |
|
1104 |
+
msgid "Duration"
|
1105 |
+
msgstr "Durata"
|
1106 |
|
1107 |
+
msgid "Show service price next to duration"
|
1108 |
msgstr ""
|
1109 |
|
1110 |
+
msgid "Hide this field"
|
1111 |
+
msgstr "Nascondi questo campo"
|
1112 |
|
1113 |
+
msgid ""
|
1114 |
+
"Set service duration. If you select Custom, a client, while booking, will "
|
1115 |
+
"have to choose the duration of the service from several time units. In the "
|
1116 |
+
"\"Unit Price\" field specify the cost of 1 unit, so the total cost of the "
|
1117 |
+
"service will increase linearly with the increase of its duration."
|
1118 |
msgstr ""
|
1119 |
|
1120 |
+
msgid "Unit duration"
|
1121 |
msgstr ""
|
1122 |
|
1123 |
+
msgid "Minimum units"
|
1124 |
msgstr ""
|
1125 |
|
1126 |
+
msgid "Maximum units"
|
1127 |
msgstr ""
|
1128 |
|
1129 |
+
msgid "Unit price"
|
1130 |
msgstr ""
|
1131 |
|
1132 |
+
msgid "Custom"
|
1133 |
msgstr ""
|
1134 |
|
1135 |
+
msgid "Are you sure?"
|
1136 |
+
msgstr "Sei sicuro?"
|
1137 |
|
1138 |
+
msgid "Duplicate dates are not permitted."
|
1139 |
+
msgstr "Le date duplicate non sono permesse."
|
1140 |
|
1141 |
+
msgid "Date in the past."
|
1142 |
msgstr ""
|
1143 |
|
1144 |
+
msgid "Add Staff Special Days"
|
1145 |
msgstr ""
|
1146 |
|
1147 |
+
msgid "Delete break"
|
1148 |
+
msgstr "Elimina pausa"
|
1149 |
|
1150 |
+
msgid "Breaks"
|
1151 |
+
msgstr "Pause"
|
1152 |
|
1153 |
+
msgid "Add special day"
|
1154 |
msgstr ""
|
1155 |
|
1156 |
+
msgid "to"
|
1157 |
+
msgstr "alle"
|
|
|
|
|
|
|
|
|
|
|
|
|
1158 |
|
1159 |
+
msgid "add break"
|
1160 |
+
msgstr "+ intervallo"
|
1161 |
|
1162 |
+
msgid "Special Days"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1163 |
msgstr ""
|
1164 |
|
1165 |
+
msgid "The requested interval is not available"
|
1166 |
+
msgstr "L'intervallo richiesto non è disponibile"
|
1167 |
|
1168 |
+
msgid "OFF"
|
1169 |
+
msgstr "OFF"
|
|
|
|
|
|
|
|
|
1170 |
|
1171 |
+
msgid "Uncategorized"
|
1172 |
+
msgstr "Senza categoria"
|
1173 |
|
1174 |
+
msgid "Compound"
|
1175 |
msgstr ""
|
1176 |
|
1177 |
+
msgid "Part of compound service"
|
|
|
|
|
|
|
1178 |
msgstr ""
|
1179 |
|
1180 |
+
msgid "Compound service"
|
1181 |
msgstr ""
|
1182 |
|
1183 |
+
msgid "Spare time"
|
1184 |
msgstr ""
|
1185 |
|
1186 |
+
msgid "Add simple service"
|
1187 |
msgstr ""
|
1188 |
|
1189 |
+
msgid "=== Spare time ==="
|
1190 |
msgstr ""
|
1191 |
|
1192 |
+
msgid "Same staff member for all sub-services"
|
1193 |
msgstr ""
|
1194 |
|
1195 |
+
msgid ""
|
1196 |
+
"If this option is enabled and the customer selects a staff member in the "
|
1197 |
+
"first step of the booking form then only this staff will be used for "
|
1198 |
+
"searching available slots for all sub-services."
|
1199 |
msgstr ""
|
1200 |
|
1201 |
+
msgid "Short Codes"
|
1202 |
+
msgstr "Short codes"
|
1203 |
|
1204 |
+
msgid "Add Staff Calendar"
|
1205 |
+
msgstr "Aggiungi Calendario Staff"
|
1206 |
|
1207 |
+
msgid "Add Staff Details"
|
1208 |
+
msgstr "Aggiungi Dettagli Staff"
|
1209 |
|
1210 |
+
msgid "Add Staff Advanced"
|
1211 |
msgstr ""
|
1212 |
|
1213 |
+
msgid "Add Staff Services"
|
1214 |
+
msgstr "Aggiungi Servizi Staff"
|
|
|
|
|
|
|
|
|
1215 |
|
1216 |
+
msgid "Add Staff Schedule"
|
1217 |
+
msgstr "Aggiungi Programmazione Staff"
|
1218 |
|
1219 |
+
msgid "Add Staff Days Off"
|
1220 |
+
msgstr "Aggiungi Giorni Di Riposo Staff"
|
1221 |
|
1222 |
+
msgid ""
|
1223 |
+
"Hide this field if you want to hide the list of WP users from your staff "
|
1224 |
+
"members."
|
1225 |
msgstr ""
|
1226 |
|
1227 |
+
msgid "Hide visibility field"
|
1228 |
+
msgstr "Nascondi visibilità campo"
|
1229 |
|
1230 |
+
msgid "Disable services update"
|
1231 |
+
msgstr "Disabilitare l'aggiornamento dei servizi"
|
1232 |
|
1233 |
+
msgid "Disable price update"
|
1234 |
+
msgstr "Disabilitare l'aggiornamento del prezzo"
|
1235 |
|
1236 |
+
msgid "Insert"
|
1237 |
+
msgstr "Inserisci"
|
|
|
|
|
1238 |
|
1239 |
+
msgid "Add Staff Cabinet"
|
1240 |
+
msgstr "Aggiungi Armadio Staff "
|
1241 |
|
1242 |
+
msgid "A custom block for displaying staff calendar"
|
1243 |
msgstr ""
|
1244 |
|
1245 |
+
msgid "Details"
|
1246 |
+
msgstr "Dettagli"
|
1247 |
|
1248 |
+
msgid "A custom block for displaying staff details"
|
1249 |
msgstr ""
|
1250 |
|
1251 |
+
msgid "Advanced"
|
1252 |
msgstr ""
|
1253 |
|
1254 |
+
msgid "A custom block for displaying staff advanced settings"
|
1255 |
msgstr ""
|
1256 |
|
1257 |
+
msgid "Services"
|
1258 |
+
msgstr "Servizi"
|
|
|
|
|
|
|
1259 |
|
1260 |
+
msgid "A custom block for displaying staff services"
|
1261 |
msgstr ""
|
1262 |
|
1263 |
+
msgid "A custom block for displaying staff schedule"
|
1264 |
msgstr ""
|
1265 |
|
1266 |
+
msgid "Special days"
|
1267 |
msgstr ""
|
1268 |
|
1269 |
+
msgid "A custom block for displaying staff special days"
|
1270 |
msgstr ""
|
1271 |
|
1272 |
+
msgid "Days off"
|
1273 |
+
msgstr "Giorni off"
|
|
|
|
|
1274 |
|
1275 |
+
msgid "A custom block for displaying staff days off"
|
1276 |
msgstr ""
|
1277 |
|
1278 |
+
msgid "Capacity"
|
1279 |
+
msgstr "Capacità"
|
1280 |
|
1281 |
+
msgid "Hide WordPress users"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1282 |
msgstr ""
|
1283 |
|
1284 |
+
msgid "Special hours"
|
1285 |
msgstr ""
|
1286 |
|
1287 |
+
msgid "Fields"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1288 |
msgstr ""
|
1289 |
|
1290 |
+
msgid "read only"
|
1291 |
msgstr ""
|
1292 |
|
1293 |
+
msgid "Repeat every year"
|
1294 |
+
msgstr "Ripeti ogni anno"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1295 |
|
1296 |
+
msgid "We are not working on this day"
|
1297 |
+
msgstr "Questo giorno siamo chiusi"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1298 |
|
1299 |
+
msgid "Min capacity should not be greater than max capacity."
|
1300 |
+
msgstr "La capacità minima non deve essere superiore alla capacità massima."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1301 |
|
1302 |
+
msgid "Export to CSV"
|
1303 |
+
msgstr "Esporta in CSV"
|
|
|
|
|
|
|
|
|
|
|
1304 |
|
1305 |
+
msgid "Displayed appointments"
|
1306 |
+
msgstr "Appuntamenti visualizzati"
|
1307 |
|
1308 |
+
msgid "Upcoming appointments"
|
1309 |
+
msgstr "Appuntamenti prossimi"
|
1310 |
|
1311 |
+
msgid "Delimiter"
|
1312 |
+
msgstr "Delimitatore"
|
1313 |
|
1314 |
+
msgid "Comma (,)"
|
1315 |
+
msgstr "Virgola (,)"
|
1316 |
|
1317 |
+
msgid "Semicolon (;)"
|
1318 |
+
msgstr "Punto e virgola (;)"
|
1319 |
|
1320 |
+
msgid "Booking Time"
|
1321 |
+
msgstr "Orario della prenotazione"
|
1322 |
|
1323 |
+
msgid "Customer Name"
|
1324 |
+
msgstr "Nome del cliente"
|
1325 |
|
1326 |
+
msgid "Customer Phone"
|
1327 |
+
msgstr "Telefono del cliente"
|
1328 |
|
1329 |
+
msgid "Customer Email"
|
1330 |
+
msgstr "E-mail dei clienti"
|
1331 |
|
1332 |
+
msgid "Status"
|
1333 |
+
msgstr "Stato"
|
1334 |
+
|
1335 |
+
msgid "Payment"
|
1336 |
+
msgstr "Pagamento"
|
1337 |
+
|
1338 |
+
msgid "Today"
|
1339 |
+
msgstr "Oggi"
|
1340 |
+
|
1341 |
+
msgid "Week"
|
1342 |
+
msgstr "Settimana"
|
1343 |
+
|
1344 |
+
msgid "Month"
|
1345 |
+
msgstr "Mese"
|
1346 |
+
|
1347 |
+
msgid "All Day"
|
1348 |
+
msgstr "Tutto Il giorno"
|
1349 |
+
|
1350 |
+
msgid "List"
|
1351 |
msgstr ""
|
1352 |
|
1353 |
+
msgid "No appointments for selected period."
|
1354 |
+
msgstr "Nessun appuntamenti per il periodo selezionato."
|
1355 |
+
|
1356 |
+
msgid "On waiting list"
|
1357 |
+
msgstr "Sulla lista di attesa"
|
1358 |
+
|
1359 |
+
msgid "Package"
|
1360 |
+
msgstr "Pacchetto"
|
1361 |
+
|
1362 |
+
#, php-format
|
1363 |
+
msgid "%s of %s"
|
1364 |
+
msgstr "%s di %s"
|
1365 |
+
|
1366 |
+
msgid "Full name"
|
1367 |
+
msgstr "Nome completo"
|
1368 |
+
|
1369 |
+
msgid "Info"
|
1370 |
+
msgstr "Informazioni"
|
1371 |
+
|
1372 |
+
msgid ""
|
1373 |
+
"This text can be inserted into notifications to customers by Administrator."
|
1374 |
msgstr ""
|
1375 |
+
"Questo testo può essere inserito nelle notifiche ai clienti "
|
1376 |
+
"dall'amministratore."
|
1377 |
|
1378 |
+
msgid "Visibility"
|
1379 |
+
msgstr "Visibilità"
|
1380 |
|
1381 |
+
msgid ""
|
1382 |
+
"If you want to become invisible to your customers set the visibility to "
|
1383 |
+
"\"Private\"."
|
1384 |
msgstr ""
|
1385 |
+
"Se vuoi diventare invisibile ai tuoi clienti imposta la visibilità a "
|
1386 |
+
"\"Privata\"."
|
1387 |
|
1388 |
+
msgid "Public"
|
1389 |
+
msgstr "Pubblico"
|
1390 |
+
|
1391 |
+
msgid "Private"
|
1392 |
+
msgstr "Privato"
|
1393 |
+
|
1394 |
+
msgid "All locations"
|
1395 |
+
msgstr "Tutti i luoghi"
|
1396 |
+
|
1397 |
+
msgid "No locations selected"
|
1398 |
+
msgstr "Nessuna località selezionata"
|
1399 |
+
|
1400 |
+
msgid "You don't have permissions to view this content."
|
1401 |
+
msgstr "Non hai i permessi per vedere questo contenuto"
|
1402 |
+
|
1403 |
+
msgid ""
|
1404 |
+
"Your account has been disabled. Contact your website administrator to "
|
1405 |
+
"continue."
|
1406 |
msgstr ""
|
1407 |
|
1408 |
+
msgid "API Login ID"
|
1409 |
msgstr ""
|
1410 |
|
1411 |
+
msgid "API Transaction Key"
|
1412 |
msgstr ""
|
1413 |
|
1414 |
+
msgid "Title"
|
1415 |
+
msgstr "Titolo"
|
1416 |
+
|
1417 |
+
msgid "Rate"
|
1418 |
msgstr ""
|
1419 |
|
1420 |
+
msgid "Taxes"
|
|
|
1421 |
msgstr ""
|
1422 |
|
1423 |
+
msgid "Price settings and display"
|
1424 |
msgstr ""
|
1425 |
|
1426 |
+
msgid ""
|
1427 |
+
"If the prices for your services include taxes, select include taxes. If the "
|
1428 |
+
"prices for your services do not include taxes, select exclude taxes."
|
1429 |
msgstr ""
|
1430 |
|
1431 |
+
msgid "Include taxes"
|
1432 |
msgstr ""
|
1433 |
|
1434 |
+
msgid "Exclude taxes"
|
1435 |
msgstr ""
|
1436 |
|
1437 |
+
msgid "Add tax"
|
1438 |
msgstr ""
|
1439 |
|
1440 |
+
msgid "New tax"
|
1441 |
msgstr ""
|
1442 |
|
1443 |
+
msgid "Edit tax"
|
1444 |
msgstr ""
|
1445 |
|
1446 |
+
msgid "No taxes found."
|
1447 |
msgstr ""
|
1448 |
|
1449 |
+
msgid "Processing..."
|
1450 |
+
msgstr "Elaborazione in corso..."
|
1451 |
+
|
1452 |
+
msgid "Service tax amount"
|
1453 |
msgstr ""
|
1454 |
|
1455 |
+
msgid "Service tax rate"
|
1456 |
msgstr ""
|
1457 |
|
1458 |
+
msgid "Total tax included in the appointment (summary for all items)"
|
|
|
|
|
1459 |
msgstr ""
|
1460 |
|
1461 |
+
msgid "Total price without tax"
|
1462 |
msgstr ""
|
1463 |
|
1464 |
+
msgid ""
|
1465 |
+
"This setting affects the cost of the booking according to the payment "
|
1466 |
+
"gateway used. Specify a percentage or fixed amount. Use minus (\"-\") sign "
|
1467 |
+
"for decrease/discount. Note that tax will not be calculated for the "
|
1468 |
+
"additional amount to the cost. If you need to report the exact tax amount to "
|
1469 |
+
"the payment system, do not use additional charge."
|
1470 |
msgstr ""
|
1471 |
|
1472 |
+
msgid "Taxation"
|
1473 |
msgstr ""
|
1474 |
|
1475 |
+
msgid "Customer Information"
|
1476 |
msgstr ""
|
1477 |
|
1478 |
+
msgid "Ask once"
|
1479 |
msgstr ""
|
1480 |
|
1481 |
+
msgid "Show customer information"
|
1482 |
msgstr ""
|
1483 |
|
1484 |
+
msgid ""
|
1485 |
+
"To receive REST API credentials, in <b>My Apps & Credentials</b> of your "
|
1486 |
+
"PayPal account do the following steps:"
|
1487 |
msgstr ""
|
1488 |
|
1489 |
+
msgid "Click <b>Create App</b> and enter application details."
|
1490 |
msgstr ""
|
1491 |
|
1492 |
+
msgid ""
|
1493 |
+
"Once created, copy <b>Client ID</b> and <b>Secret</b> and use them in the "
|
1494 |
+
"form below."
|
1495 |
msgstr ""
|
1496 |
|
1497 |
+
msgid "Client ID"
|
1498 |
+
msgstr "Client ID"
|
1499 |
+
|
1500 |
+
msgid "Secret"
|
1501 |
msgstr ""
|
1502 |
|
1503 |
+
msgid "Invalid session"
|
1504 |
msgstr ""
|
1505 |
|
1506 |
+
msgid "Mollie accepts payments in Euro only."
|
1507 |
msgstr ""
|
1508 |
|
1509 |
+
msgid "Mollie error."
|
1510 |
msgstr ""
|
1511 |
|
1512 |
+
msgid "I will pay now with Mollie"
|
1513 |
+
msgstr "Pago subito con Mollie"
|
1514 |
+
|
1515 |
+
msgid "API Key"
|
1516 |
msgstr ""
|
1517 |
|
1518 |
+
msgid "Time interval of payment gateway"
|
1519 |
msgstr ""
|
1520 |
|
1521 |
+
msgid ""
|
1522 |
+
"This setting determines the time limit after which the payment made via the "
|
1523 |
+
"payment gateway is considered to be incomplete. This functionality requires "
|
1524 |
+
"a scheduled cron job."
|
1525 |
msgstr ""
|
1526 |
|
1527 |
+
msgid "Persons"
|
1528 |
msgstr ""
|
1529 |
|
1530 |
+
msgid "Number of persons"
|
1531 |
+
msgstr "Numero di persone"
|
1532 |
+
|
1533 |
+
msgid "Group bookings information format"
|
1534 |
msgstr ""
|
1535 |
|
1536 |
msgid ""
|
1537 |
+
"Select format for displaying the time slot occupancy for group bookings."
|
|
|
1538 |
msgstr ""
|
1539 |
|
1540 |
+
msgid "[Booked/Max capacity]"
|
|
|
|
|
|
|
1541 |
msgstr ""
|
1542 |
|
1543 |
+
msgid "[Available left]"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1544 |
msgstr ""
|
1545 |
|
1546 |
+
msgid "Group Booking"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1547 |
msgstr ""
|
1548 |
|
1549 |
+
msgid "Number of persons already in the list"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1550 |
msgstr ""
|
1551 |
|
1552 |
+
msgid "Capacity of service"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1553 |
msgstr ""
|
1554 |
|
1555 |
+
msgid "Show information about group bookings"
|
1556 |
msgstr ""
|
1557 |
|
1558 |
+
msgid "Disable capacity update"
|
1559 |
msgstr ""
|
1560 |
|
1561 |
+
msgid "Capacity (min and max)"
|
1562 |
+
msgstr "Capacità (min e max)"
|
1563 |
|
1564 |
msgid ""
|
1565 |
+
"The minimum and maximum number of customers allowed to book the service for "
|
1566 |
+
"the certain time period."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1567 |
msgstr ""
|
1568 |
+
"Il numero minimo e massimo dei clienti che possono prenotare il servizio per "
|
1569 |
+
"un certo periodo di tempo."
|
1570 |
|
1571 |
+
msgid "One booking per time slot"
|
1572 |
+
msgstr ""
|
1573 |
|
1574 |
msgid ""
|
1575 |
+
"Enable this option if you want to limit the possibility of booking within "
|
1576 |
+
"the service capacity to one time."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1577 |
msgstr ""
|
1578 |
|
1579 |
+
msgid "Address"
|
1580 |
+
msgstr "Indirizzo"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1581 |
|
1582 |
+
msgid "Follow these steps to get an API key:"
|
1583 |
msgstr ""
|
1584 |
|
1585 |
msgid ""
|
1586 |
+
"Go to the <a href=\"https://console.developers.google.com/flows/enableapi?"
|
1587 |
+
"apiid=places_backend&reusekey=true\" target=\"_blank\">Google API Console</a>"
|
1588 |
+
"."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1589 |
msgstr ""
|
1590 |
|
1591 |
+
msgid "Create or select a project. Click <b>Continue</b> to enable the API."
|
1592 |
+
msgstr ""
|
1593 |
|
1594 |
msgid ""
|
1595 |
+
"On the <b>Credentials</b> page, get an <b>API key</b> (and set the API key "
|
1596 |
+
"restrictions). Note: If you have an existing unrestricted API key, or a key "
|
1597 |
+
"with server restrictions, you may use that key."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1598 |
msgstr ""
|
1599 |
|
1600 |
msgid ""
|
1601 |
+
"Click <b>Library</b> on the left sidebar menu. Select Google Maps JavaScript "
|
1602 |
+
"API and make sure it's enabled."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1603 |
msgstr ""
|
1604 |
|
1605 |
+
msgid "Use your <b>API key</b> in the form below."
|
|
|
|
|
1606 |
msgstr ""
|
1607 |
|
1608 |
msgid ""
|
1609 |
+
"Enter a Google API key that you got after registering your app project on "
|
1610 |
+
"the Google API Console."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1611 |
msgstr ""
|
1612 |
|
1613 |
+
msgid "Google Maps"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1614 |
msgstr ""
|
1615 |
|
1616 |
+
msgid "Show address required"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1617 |
msgstr ""
|
1618 |
|
1619 |
+
msgid "Show google maps field"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1620 |
msgstr ""
|
1621 |
|
1622 |
+
msgid "Do not allow to select a specific staff member"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1623 |
msgstr ""
|
1624 |
|
1625 |
msgid ""
|
1626 |
+
"If this option is enabled then customers won't be able to select a staff "
|
1627 |
+
"member for collaborative services in the first step of the booking form"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1628 |
msgstr ""
|
1629 |
|
1630 |
+
msgid "Collaborative services"
|
1631 |
msgstr ""
|
1632 |
|
1633 |
+
msgid "Collaborative"
|
|
|
|
|
|
|
|
|
1634 |
msgstr ""
|
1635 |
|
1636 |
+
msgid "Collaborative service"
|
1637 |
msgstr ""
|
1638 |
|
1639 |
+
msgid "Part of collaborative service"
|
1640 |
msgstr ""
|
1641 |
|
1642 |
+
msgid "Equal duration"
|
1643 |
msgstr ""
|
1644 |
|
1645 |
+
msgid "Make every service duration equal to the duration of the longest one."
|
1646 |
msgstr ""
|
1647 |
|
1648 |
+
msgid "Customer cabinet (all services displayed in tabs)"
|
1649 |
msgstr ""
|
1650 |
|
1651 |
+
msgid "Appointment management"
|
1652 |
msgstr ""
|
1653 |
|
1654 |
+
msgid "Show timezone"
|
|
|
|
|
1655 |
msgstr ""
|
1656 |
|
1657 |
+
msgid "Location"
|
1658 |
+
msgstr "Luogo"
|
1659 |
|
1660 |
+
msgid "Category"
|
1661 |
+
msgstr "Fornitore"
|
1662 |
|
1663 |
+
msgid "Staff"
|
1664 |
+
msgstr "Staff"
|
1665 |
+
|
1666 |
+
msgid "Online meeting"
|
1667 |
msgstr ""
|
1668 |
|
1669 |
+
msgid "Join online meeting"
|
1670 |
msgstr ""
|
1671 |
|
1672 |
+
msgid "Cancel"
|
1673 |
+
msgstr "Annulla"
|
1674 |
+
|
1675 |
+
msgid "Reschedule"
|
1676 |
msgstr ""
|
1677 |
|
1678 |
+
msgid "Profile management"
|
1679 |
msgstr ""
|
1680 |
|
1681 |
+
msgid "Birthday"
|
1682 |
msgstr ""
|
1683 |
|
1684 |
+
msgid "Wordpress password"
|
1685 |
msgstr ""
|
1686 |
|
1687 |
+
msgid "Delete account"
|
1688 |
msgstr ""
|
1689 |
|
1690 |
+
msgid "Add Customer Cabinet"
|
1691 |
msgstr ""
|
1692 |
|
1693 |
+
msgid "Customer cabinet"
|
1694 |
msgstr ""
|
1695 |
|
1696 |
+
msgid "A custom block for displaying customer cabinet"
|
1697 |
msgstr ""
|
1698 |
|
1699 |
+
msgid "show"
|
1700 |
msgstr ""
|
1701 |
|
1702 |
+
msgid "Show"
|
1703 |
+
msgstr ""
|
1704 |
|
1705 |
+
msgid "Timezone"
|
1706 |
+
msgstr ""
|
1707 |
|
1708 |
+
msgid "Employee"
|
1709 |
+
msgstr "Impiegato"
|
1710 |
|
1711 |
+
msgid "Custom field"
|
1712 |
msgstr ""
|
1713 |
|
1714 |
+
msgid "Customer information"
|
1715 |
msgstr ""
|
1716 |
|
1717 |
+
msgid "Appointments"
|
1718 |
+
msgstr "Appuntamenti"
|
1719 |
|
1720 |
+
msgid "Profile"
|
1721 |
+
msgstr "Profilo"
|
1722 |
|
1723 |
+
msgid "WP user"
|
1724 |
msgstr ""
|
1725 |
|
1726 |
+
msgid "Current password"
|
1727 |
msgstr ""
|
1728 |
|
1729 |
+
msgid "New password"
|
1730 |
+
msgstr "Nuova password"
|
1731 |
+
|
1732 |
+
msgid "Confirm password"
|
1733 |
msgstr ""
|
1734 |
|
1735 |
+
msgid "No appointments."
|
1736 |
msgstr ""
|
1737 |
|
1738 |
+
msgid "Expired"
|
1739 |
+
msgstr "Scaduto"
|
1740 |
+
|
1741 |
+
msgid "Not allowed"
|
1742 |
+
msgstr "Non consentito"
|
1743 |
+
|
1744 |
+
msgid "There are no time slots for selected date."
|
1745 |
msgstr ""
|
1746 |
|
1747 |
+
msgid "Profile updated successfully."
|
1748 |
msgstr ""
|
1749 |
|
1750 |
+
msgid ""
|
1751 |
+
"Unfortunately, you're not able to cancel the appointment because the "
|
1752 |
+
"required time limit prior to canceling has expired."
|
1753 |
msgstr ""
|
1754 |
|
1755 |
msgid ""
|
1756 |
+
"The selected time is not available anymore. Please, choose another time slot."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1757 |
msgstr ""
|
1758 |
+
"La fascia oraria selezionata non è più disponibile. Per favore seleziona un "
|
1759 |
+
"altro orario."
|
1760 |
|
1761 |
+
msgid "Time"
|
1762 |
+
msgstr "Orario"
|
1763 |
|
1764 |
+
msgid "Wrong current password"
|
1765 |
msgstr ""
|
1766 |
|
1767 |
+
msgid "Passwords mismatch"
|
1768 |
msgstr ""
|
1769 |
|
1770 |
+
msgid "Cancel Appointment"
|
|
|
|
|
|
|
1771 |
msgstr ""
|
1772 |
|
1773 |
+
msgid "You are going to cancel a scheduled appointment. Are you sure?"
|
|
|
|
|
|
|
1774 |
msgstr ""
|
1775 |
|
1776 |
+
msgid ""
|
1777 |
+
"You are going to delete your account and all information associated with it. "
|
1778 |
+
"Click Confirm to continue or Cancel to cancel the action."
|
1779 |
msgstr ""
|
1780 |
|
1781 |
+
msgid ""
|
1782 |
+
"This account cannot be deleted because it is associated with scheduled "
|
1783 |
+
"appointments. Please cancel bookings or contact the service provider."
|
1784 |
msgstr ""
|
1785 |
|
1786 |
+
msgid "Confirm"
|
1787 |
msgstr ""
|
1788 |
|
1789 |
+
msgid "Ok"
|
1790 |
msgstr ""
|
1791 |
|
1792 |
+
#, php-format
|
1793 |
+
msgid " and %d more item"
|
1794 |
+
msgid_plural " and %d more items"
|
1795 |
+
msgstr[0] " e %d altro elemento"
|
1796 |
+
msgstr[1] " e %d più elementi"
|
1797 |
|
1798 |
+
msgid "Stripe not connected"
|
1799 |
msgstr ""
|
1800 |
|
1801 |
+
msgid "Stripe account not found"
|
1802 |
msgstr ""
|
1803 |
|
1804 |
+
msgid "Error connecting to server."
|
1805 |
+
msgstr "Errore durante la connessione al server."
|
1806 |
|
1807 |
+
msgid "Passwords must be the same."
|
1808 |
+
msgstr "Le password devono essere uguali."
|
1809 |
|
1810 |
+
msgid "Empty password."
|
1811 |
+
msgstr "Password vuota."
|
1812 |
|
1813 |
+
msgid "Incorrect password."
|
1814 |
+
msgstr "Password errata."
|
1815 |
|
1816 |
+
msgid "Incorrect recovery code."
|
1817 |
+
msgstr "Codice di ripristino non corretto."
|
1818 |
|
1819 |
+
msgid "Incorrect email or password."
|
1820 |
+
msgstr "Email o password non corretta."
|
1821 |
|
1822 |
+
msgid "Invalid email."
|
1823 |
+
msgstr "E-mail non valido."
|
1824 |
|
1825 |
+
msgid "Low balance."
|
1826 |
msgstr ""
|
1827 |
|
1828 |
+
msgid "Pending sender ID already exists."
|
1829 |
+
msgstr "In attesa di ID del mittente esiste già."
|
1830 |
|
1831 |
+
msgid "Product not found."
|
1832 |
msgstr ""
|
1833 |
|
1834 |
+
msgid "Recharge not available."
|
|
|
|
|
|
|
1835 |
msgstr ""
|
1836 |
|
1837 |
+
msgid "Recovery code expired."
|
1838 |
+
msgstr "Codice di recupero è scaduto."
|
1839 |
|
1840 |
+
msgid "Error sending email."
|
1841 |
+
msgstr "Errore durante l'invio di posta elettronica."
|
1842 |
|
1843 |
+
msgid "Subscription not available."
|
1844 |
msgstr ""
|
1845 |
|
1846 |
+
msgid "User not found."
|
1847 |
+
msgstr "Utente non trovato."
|
1848 |
|
1849 |
+
msgid "Email already in use."
|
1850 |
+
msgstr "Email già in uso."
|
1851 |
|
1852 |
#, php-format
|
1853 |
msgid ""
|
1854 |
+
"Dear Bookly Cloud customer.\n"
|
1855 |
+
"We would like to notify you that your Bookly Cloud balance fell below 5 USD. "
|
1856 |
+
"To use our service without interruptions please recharge your balance by "
|
1857 |
+
"visiting Bookly Cloud page <a href='%s'>here</a>.\n"
|
1858 |
+
"\n"
|
1859 |
+
"If you want to stop receiving these notifications, please update your "
|
1860 |
+
"settings <a href='%s'>here</a>."
|
1861 |
msgstr ""
|
1862 |
|
1863 |
+
msgid "Bookly Cloud - Low Balance"
|
1864 |
msgstr ""
|
1865 |
|
1866 |
+
msgid ""
|
1867 |
+
"You don't have enough Bookly Cloud credits to send this message. Please add "
|
1868 |
+
"funds to your balance and try again."
|
1869 |
msgstr ""
|
1870 |
|
1871 |
+
msgid "Failed to send SMS."
|
1872 |
+
msgstr "Impossibile inviare SMS."
|
|
|
|
|
|
|
|
|
|
|
|
|
1873 |
|
1874 |
+
msgid "Phone number is empty."
|
1875 |
+
msgstr "Numero di telefono è vuoto."
|
1876 |
|
1877 |
+
msgid "Queued"
|
1878 |
+
msgstr "In coda"
|
1879 |
|
1880 |
+
msgid "Error"
|
1881 |
+
msgstr "Errore"
|
1882 |
|
1883 |
+
msgid "Out of credit"
|
1884 |
+
msgstr "Fuori del credito"
|
1885 |
|
1886 |
+
msgid "Country out of service"
|
1887 |
+
msgstr "Paese fuori servizio"
|
1888 |
|
1889 |
+
msgid "Sending"
|
1890 |
+
msgstr "Invio"
|
1891 |
|
1892 |
+
msgid "Sent"
|
1893 |
+
msgstr "Inviati"
|
|
|
1894 |
|
1895 |
+
msgid "Delivered"
|
1896 |
+
msgstr "Consegnato"
|
1897 |
|
1898 |
+
msgid "Failed"
|
1899 |
+
msgstr "Fallito"
|
1900 |
|
1901 |
+
msgid "Undelivered"
|
1902 |
+
msgstr "Non consegnato"
|
1903 |
|
1904 |
+
msgid "Default"
|
1905 |
+
msgstr "Predefinito"
|
1906 |
|
1907 |
+
msgid "Pending"
|
1908 |
+
msgstr "In attesa di"
|
1909 |
|
1910 |
+
msgid "Approved"
|
1911 |
+
msgstr "Approvato"
|
1912 |
|
1913 |
+
msgid "Declined"
|
1914 |
+
msgstr "Rifiutato"
|
1915 |
|
1916 |
+
msgid "Cancelled"
|
1917 |
+
msgstr "Cancellato"
|
1918 |
|
1919 |
+
msgid "Incorrect sender ID"
|
1920 |
+
msgstr "ID del mittente non corretto"
|
1921 |
|
1922 |
msgid "Notification to customer about approved appointment"
|
1923 |
msgstr "Notifica al cliente dell'appuntamento approvato"
|
1924 |
|
|
|
|
|
|
|
|
|
|
|
|
|
1925 |
msgid ""
|
1926 |
+
"Dear {client_name}.\n"
|
1927 |
+
"\n"
|
1928 |
+
"This is a confirmation that you have booked {service_name}.\n"
|
1929 |
+
"\n"
|
1930 |
+
"We are waiting you at {company_address} on {appointment_date} at "
|
1931 |
+
"{appointment_time}.\n"
|
1932 |
+
"\n"
|
1933 |
+
"Thank you for choosing our company.\n"
|
1934 |
+
"\n"
|
1935 |
+
"{company_name}\n"
|
1936 |
+
"{company_phone}\n"
|
1937 |
+
"{company_website}"
|
1938 |
msgstr ""
|
1939 |
+
"Gentile {client_name}.\n"
|
1940 |
+
"\n"
|
1941 |
+
"Questa è la conferma per la tua prenotazione per {service_name}.\n"
|
1942 |
+
"\n"
|
1943 |
+
"Ti spettiamo presso {company_address} il {appointment_date} alle "
|
1944 |
+
"{appointment_time}.\n"
|
1945 |
+
"\n"
|
1946 |
+
"Grazie per aver scelto la nostra azienda.\n"
|
1947 |
+
"\n"
|
1948 |
+
"{company_name}\n"
|
1949 |
+
"{company_phone}\n"
|
1950 |
+
"{company_website}"
|
1951 |
|
1952 |
+
msgid "Notification to staff member about approved appointment"
|
1953 |
+
msgstr "Notifica al membro del personale su appuntamento approvato"
|
1954 |
|
1955 |
msgid ""
|
1956 |
+
"Hello.\n"
|
1957 |
+
"\n"
|
1958 |
+
"You have a new booking.\n"
|
1959 |
+
"\n"
|
1960 |
+
"Service: {service_name}\n"
|
1961 |
+
"Date: {appointment_date}\n"
|
1962 |
+
"Time: {appointment_time}\n"
|
1963 |
+
"Client name: {client_name}\n"
|
1964 |
+
"Client phone: {client_phone}\n"
|
1965 |
+
"Client email: {client_email}"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1966 |
msgstr ""
|
1967 |
+
"Ciao.\n"
|
1968 |
+
"\n"
|
1969 |
+
"Hai una nuova prenotazione.\n"
|
1970 |
+
"\n"
|
1971 |
+
"Servizio: {service_name}\n"
|
1972 |
+
"Data: {appointment_date}\n"
|
1973 |
+
"Orario: {appointment_time}\n"
|
1974 |
+
"Nome del cliente: {client_name}\n"
|
1975 |
+
"Telefono del cliente: {client_phone}\n"
|
1976 |
+
"eMail del cliente: {client_email}"
|
1977 |
|
1978 |
+
msgid "Notification to customer about cancelled appointment"
|
1979 |
+
msgstr "Notifica al cliente dell'appuntamento annullato"
|
1980 |
|
1981 |
msgid ""
|
1982 |
+
"Dear {client_name}.\n"
|
1983 |
"\n"
|
1984 |
+
"You have cancelled your booking of {service_name} on {appointment_date} at "
|
1985 |
+
"{appointment_time}.\n"
|
|
|
1986 |
"\n"
|
1987 |
"Thank you for choosing our company.\n"
|
1988 |
"\n"
|
1990 |
"{company_phone}\n"
|
1991 |
"{company_website}"
|
1992 |
msgstr ""
|
1993 |
+
|
1994 |
+
msgid "Notification to staff member about cancelled appointment"
|
1995 |
+
msgstr "Notifica al membro del personale su appuntamento annullato"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1996 |
|
1997 |
msgid ""
|
1998 |
+
"Hello.\n"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999 |
"\n"
|
2000 |
+
"The following booking has been cancelled.\n"
|
2001 |
"\n"
|
2002 |
+
"Service: {service_name}\n"
|
2003 |
+
"Date: {appointment_date}\n"
|
2004 |
+
"Time: {appointment_time}\n"
|
2005 |
+
"Client name: {client_name}\n"
|
2006 |
+
"Client phone: {client_phone}\n"
|
2007 |
+
"Client email: {client_email}"
|
2008 |
+
msgstr ""
|
2009 |
+
|
2010 |
+
msgid "Notification to customer about rejected appointment"
|
2011 |
+
msgstr "Notifica al cliente dell'appuntamento rifiutato"
|
2012 |
|
2013 |
msgid ""
|
2014 |
"Dear {client_name}.\n"
|
2037 |
"{company_phone}\n"
|
2038 |
"{company_website}"
|
2039 |
|
2040 |
+
msgid "Notification to staff member about rejected appointment"
|
2041 |
+
msgstr "Notifica al membro del personale su appuntamento rifiutato"
|
2042 |
+
|
2043 |
msgid ""
|
2044 |
"Hello.\n"
|
2045 |
"\n"
|
2069 |
|
2070 |
msgid ""
|
2071 |
"Dear {client_name}.\n"
|
2072 |
+
"This is a confirmation that you have booked {service_name}.\n"
|
2073 |
+
"We are waiting you at {company_address} on {appointment_date} at "
|
2074 |
+
"{appointment_time}.\n"
|
2075 |
"Thank you for choosing our company.\n"
|
2076 |
"{company_name}\n"
|
2077 |
"{company_phone}\n"
|
2078 |
"{company_website}"
|
2079 |
msgstr ""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2080 |
|
2081 |
msgid ""
|
2082 |
"Hello.\n"
|
2083 |
+
"You have a new booking.\n"
|
|
|
2084 |
"Service: {service_name}\n"
|
2085 |
"Date: {appointment_date}\n"
|
2086 |
"Time: {appointment_time}\n"
|
2088 |
"Client phone: {client_phone}\n"
|
2089 |
"Client email: {client_email}"
|
2090 |
msgstr ""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2091 |
|
2092 |
msgid ""
|
2093 |
"Dear {client_name}.\n"
|
2094 |
+
"You have cancelled your booking of {service_name} on {appointment_date} at "
|
|
|
|
|
|
|
2095 |
"{appointment_time}.\n"
|
|
|
2096 |
"Thank you for choosing our company.\n"
|
|
|
2097 |
"{company_name}\n"
|
2098 |
"{company_phone}\n"
|
2099 |
"{company_website}"
|
2100 |
msgstr ""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2101 |
|
2102 |
msgid ""
|
2103 |
"Hello.\n"
|
2104 |
+
"The following booking has been cancelled.\n"
|
|
|
|
|
2105 |
"Service: {service_name}\n"
|
2106 |
"Date: {appointment_date}\n"
|
2107 |
"Time: {appointment_time}\n"
|
2109 |
"Client phone: {client_phone}\n"
|
2110 |
"Client email: {client_email}"
|
2111 |
msgstr ""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2112 |
|
2113 |
msgid ""
|
2114 |
"Dear {client_name}.\n"
|
2115 |
+
"Your booking of {service_name} on {appointment_date} at {appointment_time} "
|
2116 |
+
"has been rejected.\n"
|
2117 |
+
"Reason: {cancellation_reason}\n"
|
|
|
2118 |
"Thank you for choosing our company.\n"
|
|
|
2119 |
"{company_name}\n"
|
2120 |
"{company_phone}\n"
|
2121 |
"{company_website}"
|
2122 |
msgstr ""
|
2123 |
+
"Caro {client_name}.\n"
|
2124 |
+
"La prenotazione di {service_name} il {appointment_date} alle ore "
|
2125 |
+
"{appointment_time} è stata rifiutata.\n"
|
2126 |
+
"Motivo: {cancellation_reason}\n"
|
2127 |
+
"Grazie per aver scelto la nostra azienda.\n"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2128 |
"{company_name}\n"
|
2129 |
"{company_phone}\n"
|
2130 |
"{company_website}"
|
|
|
2131 |
|
2132 |
msgid ""
|
2133 |
"Hello.\n"
|
2134 |
+
"The following booking has been rejected.\n"
|
2135 |
+
"Reason: {cancellation_reason}\n"
|
2136 |
"Service: {service_name}\n"
|
2137 |
"Date: {appointment_date}\n"
|
2138 |
"Time: {appointment_time}\n"
|
2140 |
"Client phone: {client_phone}\n"
|
2141 |
"Client email: {client_email}"
|
2142 |
msgstr ""
|
2143 |
+
"Ciao.\n"
|
2144 |
+
"La seguente prenotazione è stata rifiutata.\n"
|
2145 |
+
"Motivo: {cancellation_reason}\n"
|
2146 |
+
"Servizio: {service_nameo}\n"
|
2147 |
+
"Data: {appointment_date}\n"
|
2148 |
+
"Tempo: {appointment_time}\n"
|
2149 |
+
"Nome Cliente: {client_name}\n"
|
2150 |
+
"telefono Cliente: {client_phone}\n"
|
2151 |
+
"Client di posta: {client_email}"
|
2152 |
|
2153 |
msgid ""
|
2154 |
+
"Evening reminder to customer about next day appointment (requires cron setup)"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2155 |
msgstr ""
|
2156 |
+
"Notifica serale al cliente con i dettagli della prenotazione del giorno dopo "
|
2157 |
+
"(richiede configurazione cron)"
|
2158 |
|
2159 |
msgid ""
|
2160 |
"Dear {client_name}.\n"
|
2166 |
"{company_website}"
|
2167 |
msgstr ""
|
2168 |
|
2169 |
+
msgid ""
|
2170 |
+
"Follow-up message in the same day after appointment (requires cron setup)"
|
2171 |
+
msgstr ""
|
2172 |
+
"Messaggio di ringraziamento subito dopo l'appuntamento (richiede "
|
2173 |
+
"configurazione cron)"
|
2174 |
+
|
2175 |
msgid ""
|
2176 |
"Dear {client_name}.\n"
|
2177 |
"Thank you for choosing {company_name}. We hope you were satisfied with your "
|
2182 |
"{company_website}"
|
2183 |
msgstr ""
|
2184 |
|
2185 |
+
msgid ""
|
2186 |
+
"Evening notification with the next day agenda to staff member (requires cron "
|
2187 |
+
"setup)"
|
2188 |
+
msgstr ""
|
2189 |
+
"Notifica serale allo staff con l'agenda del giorno dopo (richiede "
|
2190 |
+
"configurazione cron)"
|
2191 |
+
|
2192 |
msgid ""
|
2193 |
"Hello.\n"
|
2194 |
"Your agenda for tomorrow is:\n"
|
2202 |
"Grazie! La tua prenotazione è stata completata. Ti abbiamo inviato una eMail "
|
2203 |
"con i dettagli del tuo appuntamento."
|
2204 |
|
2205 |
+
msgid ""
|
2206 |
+
"You are trying to use the service too often. Please contact us to make a "
|
2207 |
+
"booking."
|
2208 |
+
msgstr ""
|
2209 |
+
|
2210 |
+
msgid "Your payment has been accepted for processing."
|
2211 |
+
msgstr ""
|
2212 |
+
|
2213 |
msgid ""
|
2214 |
"You selected a booking for {service_name} by {staff_name} at "
|
2215 |
"{appointment_time} on {appointment_date}. The price for the service is "
|
2236 |
"{service_name} con {staff_name}.\n"
|
2237 |
"Clicca su una fascia oraria per procedere con la prenotazione."
|
2238 |
|
2239 |
+
msgid "Confirm email"
|
2240 |
+
msgstr ""
|
2241 |
|
2242 |
msgid "Finish by"
|
2243 |
msgstr "Fino alle"
|
2244 |
|
2245 |
+
msgid "First name"
|
2246 |
+
msgstr "Nome"
|
2247 |
+
|
2248 |
+
msgid "Last name"
|
2249 |
+
msgstr "Cognome"
|
2250 |
+
|
2251 |
+
msgid "Notes"
|
2252 |
+
msgstr "Note"
|
2253 |
+
|
2254 |
msgid "I will pay locally"
|
2255 |
msgstr "Pagherò localmente"
|
2256 |
|
2263 |
msgid "Select category"
|
2264 |
msgstr "Seleziona una categoria"
|
2265 |
|
2266 |
+
msgid "Any"
|
2267 |
+
msgstr "Qualsiasi"
|
2268 |
+
|
2269 |
+
msgid "Select service"
|
2270 |
+
msgstr "Seleziona un servizio"
|
2271 |
+
|
2272 |
+
msgid "Select day"
|
2273 |
+
msgstr ""
|
2274 |
+
|
2275 |
+
msgid "Select month"
|
2276 |
+
msgstr ""
|
2277 |
+
|
2278 |
+
msgid "Select year"
|
2279 |
+
msgstr ""
|
2280 |
+
|
2281 |
+
msgid "Please tell us your email"
|
2282 |
+
msgstr "Per favore inserisci il tuo indirizzo eMail"
|
2283 |
+
|
2284 |
+
msgid "Email confirmation doesn't match"
|
2285 |
+
msgstr ""
|
2286 |
+
|
2287 |
+
msgid "Please select an employee"
|
2288 |
+
msgstr "Per favore seleziona un dipendente"
|
2289 |
+
|
2290 |
+
msgid "Please tell us your name"
|
2291 |
+
msgstr "Per favore inserisci il tuo nome"
|
2292 |
+
|
2293 |
+
msgid "Please tell us your first name"
|
2294 |
+
msgstr "Comunicaci il tuo nome"
|
2295 |
+
|
2296 |
+
msgid "Please tell us your last name"
|
2297 |
+
msgstr "Comunicaci il tuo cognome"
|
2298 |
+
|
2299 |
+
msgid "Please tell us your phone"
|
2300 |
+
msgstr "Per favore inserisci il tuo numero di telefono"
|
2301 |
+
|
2302 |
+
msgid "Please select a service"
|
2303 |
+
msgstr "Per favore seleziona un servizio"
|
2304 |
+
|
2305 |
msgid "Login"
|
2306 |
msgstr "Login"
|
2307 |
|
2308 |
msgid "Done"
|
2309 |
msgstr "Fatto"
|
2310 |
|
2311 |
+
msgid "Signed up"
|
2312 |
+
msgstr "Loggato"
|
2313 |
+
|
2314 |
+
msgid "Custom notification"
|
2315 |
+
msgstr "Notifiche personalizzate"
|
2316 |
+
|
2317 |
+
msgid "Appointment reminder"
|
2318 |
msgstr ""
|
2319 |
|
2320 |
+
msgid "New booking"
|
2321 |
msgstr ""
|
2322 |
|
2323 |
+
msgid "Notification about customer's appointment status change"
|
2324 |
+
msgstr ""
|
2325 |
+
|
2326 |
+
msgid "Customer birthday greeting (requires cron setup)"
|
2327 |
+
msgstr "Auguri di compleanno per i clienti (richiede l'installazione cron)"
|
2328 |
+
|
2329 |
+
msgid "Notification to customer about pending appointment"
|
2330 |
+
msgstr "Notifica al cliente dell'appuntamento in attesa"
|
2331 |
+
|
2332 |
+
msgid ""
|
2333 |
+
"1st reminder to customer about upcoming appointment (requires cron setup)"
|
2334 |
+
msgstr ""
|
2335 |
+
"1 ° promemoria al cliente sull'imminente appuntamento (richiede "
|
2336 |
+
"l'installazione di cron)"
|
2337 |
+
|
2338 |
+
msgid ""
|
2339 |
+
"2nd reminder to customer about upcoming appointment (requires cron setup)"
|
2340 |
+
msgstr ""
|
2341 |
+
"2 ° promemoria al cliente sull'imminente appuntamento (richiede "
|
2342 |
+
"l'installazione di cron)"
|
2343 |
+
|
2344 |
+
msgid ""
|
2345 |
+
"3rd reminder to customer about upcoming appointment (requires cron setup)"
|
2346 |
+
msgstr ""
|
2347 |
+
"3 ° promemoria al cliente sull'imminente appuntamento (richiede "
|
2348 |
+
"l'installazione di cron)"
|
2349 |
+
|
2350 |
+
msgid "Last client's appointment"
|
2351 |
+
msgstr ""
|
2352 |
+
|
2353 |
+
msgid "Full day agenda"
|
2354 |
+
msgstr ""
|
2355 |
+
|
2356 |
+
msgid "Notification to staff member about pending appointment"
|
2357 |
+
msgstr "Notifica al membro del personale su appuntamento attesa"
|
2358 |
+
|
2359 |
+
msgid "Invalid day"
|
2360 |
msgstr ""
|
2361 |
|
2362 |
+
msgid "Day is required"
|
2363 |
+
msgstr ""
|
2364 |
+
|
2365 |
+
msgid "Month is required"
|
2366 |
+
msgstr ""
|
2367 |
+
|
2368 |
+
msgid "Year is required"
|
2369 |
+
msgstr ""
|
2370 |
+
|
2371 |
+
msgid "Country"
|
2372 |
+
msgstr "Paese"
|
2373 |
+
|
2374 |
+
msgid "State/Region"
|
2375 |
msgstr ""
|
2376 |
|
2377 |
+
msgid "Postal Code"
|
2378 |
+
msgstr "Codice Postale"
|
2379 |
|
2380 |
+
msgid "City"
|
2381 |
+
msgstr "Città"
|
2382 |
|
2383 |
+
msgid "Street Address"
|
2384 |
+
msgstr "Indirizzo"
|
2385 |
|
2386 |
+
msgid "Additional Address"
|
2387 |
+
msgstr "Indirizzo aggiuntivo"
|
2388 |
|
2389 |
+
msgid "Country is required"
|
2390 |
+
msgstr "Il campo Paese è obbligatorio"
|
2391 |
|
2392 |
+
msgid "State is required"
|
2393 |
+
msgstr "E' richiesto lo Stato"
|
2394 |
|
2395 |
+
msgid "Postcode is required"
|
2396 |
+
msgstr "E' richiesto il codice postale"
|
2397 |
|
2398 |
+
msgid "City is required"
|
2399 |
+
msgstr "Il campo Città è obbligatorio"
|
2400 |
|
2401 |
+
msgid "Street is required"
|
2402 |
+
msgstr "E' richiesto l'indirizzo"
|
2403 |
|
2404 |
+
msgid "Additional address is required"
|
2405 |
msgstr ""
|
2406 |
|
2407 |
+
msgid ""
|
2408 |
+
"The highlighted time is not available anymore. Please, choose another time "
|
2409 |
+
"slot."
|
2410 |
+
msgstr ""
|
2411 |
+
"Il tempo evidenziato non è più disponibile. Per favore, scegliere un altro "
|
2412 |
+
"intervallo di tempo."
|
2413 |
|
2414 |
+
msgid "Happy Birthday!"
|
2415 |
+
msgstr "Buon compleanno!"
|
2416 |
|
2417 |
+
msgid ""
|
2418 |
+
"Dear {client_name},\n"
|
2419 |
+
"\n"
|
2420 |
+
"Happy birthday!\n"
|
2421 |
+
"We wish you all the best.\n"
|
2422 |
+
"May you and your family be happy and healthy.\n"
|
2423 |
+
"\n"
|
2424 |
+
"Thank you for choosing our company.\n"
|
2425 |
+
"\n"
|
2426 |
+
"{company_name}\n"
|
2427 |
+
"{company_phone}\n"
|
2428 |
+
"{company_website}"
|
2429 |
+
msgstr ""
|
2430 |
+
"Caro {client_name},\n"
|
2431 |
+
"\n"
|
2432 |
+
"Buon compleanno!\n"
|
2433 |
+
"Ti auguriamo il meglio.\n"
|
2434 |
+
"Possiate voi e la vostra famiglia essere felici e sani.\n"
|
2435 |
+
"\n"
|
2436 |
+
"Grazie per aver scelto la nostra azienda.\n"
|
2437 |
+
"\n"
|
2438 |
+
"{company_name}\n"
|
2439 |
+
"{company_phone}\n"
|
2440 |
+
"{company_website}"
|
2441 |
|
2442 |
+
msgid ""
|
2443 |
+
"Dear {client_name},\n"
|
2444 |
+
"Happy birthday!\n"
|
2445 |
+
"We wish you all the best.\n"
|
2446 |
+
"May you and your family be happy and healthy.\n"
|
2447 |
+
"Thank you for choosing our company.\n"
|
2448 |
+
"{company_name}\n"
|
2449 |
+
"{company_phone}\n"
|
2450 |
+
"{company_website}"
|
2451 |
+
msgstr ""
|
2452 |
+
"Caro {client_name},\n"
|
2453 |
+
"Buon compleanno!\n"
|
2454 |
+
"\n"
|
2455 |
+
"Ti auguriamo tutto il meglio.\n"
|
2456 |
+
"\n"
|
2457 |
+
"Possiate voi e la vostra famiglia essere felici e sani.\n"
|
2458 |
+
"\n"
|
2459 |
+
"Grazie per aver scelto la nostra azienda.\n"
|
2460 |
+
"{company_name}\n"
|
2461 |
+
"{company_phone}\n"
|
2462 |
+
"{company_website}"
|
2463 |
|
2464 |
+
#, php-format
|
2465 |
+
msgid "%d year"
|
2466 |
+
msgid_plural "%d years"
|
2467 |
+
msgstr[0] "%d anno"
|
2468 |
+
msgstr[1] "%d anni"
|
2469 |
|
2470 |
+
#, php-format
|
2471 |
+
msgid "%d month"
|
2472 |
+
msgid_plural "%d months"
|
2473 |
+
msgstr[0] "%d mese"
|
2474 |
+
msgstr[1] "%d mesi"
|
2475 |
|
2476 |
+
#, php-format
|
2477 |
+
msgid "%d week"
|
2478 |
+
msgid_plural "%d weeks"
|
2479 |
+
msgstr[0] "%d settimana"
|
2480 |
+
msgstr[1] "%d settimane"
|
2481 |
|
2482 |
+
#, php-format
|
2483 |
+
msgid "%d day"
|
2484 |
+
msgid_plural "%d days"
|
2485 |
+
msgstr[0] "%d giorno"
|
2486 |
+
msgstr[1] "%d giorni"
|
2487 |
|
2488 |
+
#, php-format
|
2489 |
+
msgid "%d h"
|
2490 |
+
msgstr "%d h"
|
2491 |
|
2492 |
+
#, php-format
|
2493 |
+
msgid "%d min"
|
2494 |
+
msgstr "%d min"
|
2495 |
|
2496 |
+
msgid "From"
|
2497 |
+
msgstr "Da"
|
2498 |
|
2499 |
+
msgid "To"
|
2500 |
+
msgstr "A"
|
2501 |
|
2502 |
+
msgid "Custom range"
|
2503 |
+
msgstr ""
|
2504 |
|
2505 |
+
msgid "Tomorrow"
|
2506 |
+
msgstr "Domani"
|
2507 |
|
2508 |
+
msgid "Yesterday"
|
2509 |
+
msgstr "Ieri"
|
2510 |
|
2511 |
+
msgid "Last 7 days"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2512 |
msgstr ""
|
2513 |
|
2514 |
+
msgid "Last 30 days"
|
2515 |
msgstr ""
|
2516 |
|
2517 |
+
msgid "This month"
|
|
|
|
|
2518 |
msgstr ""
|
2519 |
|
2520 |
+
msgid "Next month"
|
2521 |
+
msgstr "Prossimo mese"
|
2522 |
|
2523 |
+
msgid "No."
|
2524 |
+
msgstr "No"
|
2525 |
|
2526 |
+
msgid "Appointment date"
|
2527 |
+
msgstr ""
|
2528 |
|
2529 |
+
msgid "Customer name"
|
2530 |
+
msgstr ""
|
2531 |
|
2532 |
+
msgid "Customer phone"
|
2533 |
+
msgstr ""
|
2534 |
|
2535 |
+
msgid "Customer email"
|
2536 |
+
msgstr ""
|
2537 |
|
2538 |
+
msgid "Created"
|
2539 |
+
msgstr ""
|
2540 |
|
2541 |
+
msgid "Type"
|
2542 |
+
msgstr "Tipo"
|
2543 |
|
2544 |
+
msgid "Amount"
|
2545 |
+
msgstr "Importo"
|
2546 |
|
2547 |
+
msgid "User"
|
2548 |
+
msgstr "Utente"
|
2549 |
|
2550 |
+
msgid "Last appointment"
|
2551 |
+
msgstr "Ultimo appuntamento"
|
2552 |
|
2553 |
+
msgid "Total appointments"
|
2554 |
+
msgstr "Totale appuntamenti"
|
2555 |
|
2556 |
+
msgid "Payments"
|
2557 |
+
msgstr "Pagamenti"
|
2558 |
|
2559 |
+
msgid "State"
|
2560 |
msgstr ""
|
2561 |
|
2562 |
+
msgid "Customer"
|
2563 |
+
msgstr "Cliente"
|
2564 |
|
2565 |
+
msgid "Text"
|
2566 |
+
msgstr "Testo"
|
2567 |
|
2568 |
+
msgid "Sender ID"
|
2569 |
+
msgstr "ID del mittente"
|
|
|
2570 |
|
2571 |
+
msgid "Cost"
|
2572 |
+
msgstr "Costo"
|
2573 |
|
2574 |
+
msgid "Flag"
|
2575 |
msgstr ""
|
2576 |
|
2577 |
+
msgid "Code"
|
2578 |
+
msgstr "Codice"
|
2579 |
+
|
2580 |
+
msgid "Regular price"
|
2581 |
+
msgstr "Prezzo regolare"
|
2582 |
+
|
2583 |
+
msgid "Price with custom Sender ID"
|
2584 |
+
msgstr "Prezzo con ID del mittente personalizzato"
|
2585 |
+
|
2586 |
+
msgid "Requested ID"
|
2587 |
+
msgstr "ID richiesto"
|
2588 |
|
2589 |
+
msgid "Status date"
|
|
|
|
|
|
|
2590 |
msgstr ""
|
2591 |
|
2592 |
#, php-format
|
2632 |
msgid "No updates available"
|
2633 |
msgstr ""
|
2634 |
|
2635 |
+
msgid "Local"
|
2636 |
+
msgstr "Locale"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2637 |
|
2638 |
+
msgid "Free"
|
2639 |
msgstr ""
|
2640 |
|
2641 |
+
msgid "Completed"
|
2642 |
+
msgstr "Completato"
|
2643 |
|
2644 |
+
msgid "Rejected"
|
2645 |
+
msgstr "Rifiutato"
|
2646 |
|
2647 |
+
msgid "Untitled"
|
2648 |
+
msgstr "Senza titolo"
|
2649 |
|
2650 |
+
msgid "Unknown"
|
2651 |
msgstr ""
|
2652 |
|
2653 |
+
msgid "New booking notification"
|
|
|
|
|
|
|
|
|
|
|
|
|
2654 |
msgstr ""
|
2655 |
|
2656 |
+
msgid "New booking combined notification"
|
|
|
|
|
|
|
2657 |
msgstr ""
|
2658 |
|
2659 |
+
msgid "New customer's WordPress user login details"
|
|
|
|
|
|
|
|
|
|
|
2660 |
msgstr ""
|
|
|
|
|
|
|
|
|
|
|
2661 |
|
2662 |
+
msgid "Customer's birthday greeting"
|
2663 |
msgstr ""
|
2664 |
|
2665 |
+
msgid "Customer's last appointment notification"
|
2666 |
msgstr ""
|
2667 |
|
2668 |
+
msgid "Staff full day agenda"
|
|
|
2669 |
msgstr ""
|
2670 |
|
2671 |
+
msgid "Test message"
|
2672 |
+
msgstr "Messaggio di prova"
|
|
|
|
|
|
|
|
|
|
|
|
|
2673 |
|
2674 |
+
msgid "Invalid email"
|
2675 |
+
msgstr "Indirizzo eMail non valido"
|
2676 |
|
2677 |
+
msgid "This email is already in use"
|
2678 |
+
msgstr "Questo indirizzo eMail è già stato utilizzato"
|
2679 |
|
2680 |
+
#, php-format
|
2681 |
+
msgid "\"%s\" is too long (%d characters max)."
|
2682 |
+
msgstr "\"%s\" è troppo lungo (%d caratteri max)."
|
2683 |
|
2684 |
+
msgid "Invalid number"
|
2685 |
+
msgstr "Numero non valido"
|
2686 |
|
2687 |
+
msgid "Invalid date"
|
2688 |
msgstr ""
|
2689 |
|
2690 |
+
msgid "Invalid time"
|
2691 |
msgstr ""
|
2692 |
|
2693 |
+
#, php-format
|
2694 |
msgid ""
|
2695 |
+
"Your %s: %s is already associated with another %s.<br/>Press Update if we "
|
2696 |
+
"should update your user data, or press Cancel to edit entered data."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2697 |
msgstr ""
|
2698 |
|
2699 |
+
msgid "Internal Notes"
|
|
|
|
|
|
|
2700 |
msgstr ""
|
2701 |
|
2702 |
msgid ""
|
2703 |
+
"To view the details of these appointments, please contact your website "
|
2704 |
+
"administrator in order to verify Bookly Pro license."
|
2705 |
msgstr ""
|
2706 |
|
2707 |
+
msgid "Admins"
|
2708 |
msgstr ""
|
2709 |
|
2710 |
+
msgid "Dashboard"
|
2711 |
msgstr ""
|
2712 |
|
2713 |
+
msgid "Staff Members"
|
2714 |
+
msgstr "Membri dello Staff"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2715 |
|
2716 |
+
msgid "Email Notifications"
|
2717 |
+
msgstr "Notifiche e-mail"
|
2718 |
|
2719 |
+
msgid "Customers"
|
2720 |
+
msgstr "Clienti"
|
2721 |
|
2722 |
+
msgid "Appearance"
|
2723 |
+
msgstr "Aspetto"
|
2724 |
|
2725 |
+
msgid "Settings"
|
2726 |
+
msgstr "Impostazioni"
|
2727 |
|
2728 |
+
msgid "Products"
|
2729 |
msgstr ""
|
2730 |
|
2731 |
+
msgid "Billing"
|
2732 |
msgstr ""
|
2733 |
|
2734 |
+
msgid "Get Bookly Pro"
|
2735 |
msgstr ""
|
2736 |
|
2737 |
+
msgid "Messages"
|
2738 |
+
msgstr "Messaggi"
|
2739 |
|
2740 |
+
msgid "Subject"
|
2741 |
+
msgstr "Oggetto"
|
2742 |
|
2743 |
+
msgid "Message"
|
2744 |
+
msgstr "Messaggio"
|
2745 |
|
2746 |
msgid "No records."
|
2747 |
msgstr "Nessuna registrazione."
|
2748 |
|
2749 |
+
msgid "messages"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2750 |
msgstr ""
|
2751 |
|
2752 |
+
msgid "Previous"
|
2753 |
+
msgstr "Precedente"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2754 |
|
2755 |
+
msgid "New appointment"
|
2756 |
+
msgstr "Nuovo appuntamento"
|
2757 |
|
2758 |
+
msgid "Created at any time"
|
2759 |
msgstr ""
|
2760 |
|
2761 |
+
msgid "Any time"
|
2762 |
+
msgstr ""
|
2763 |
|
2764 |
+
msgid "No result found"
|
2765 |
+
msgstr "Nessun risultato trovato"
|
2766 |
|
2767 |
+
msgid "Searching"
|
2768 |
+
msgstr ""
|
2769 |
|
2770 |
+
msgid "Attachments"
|
2771 |
+
msgstr ""
|
2772 |
|
2773 |
+
msgid "Archived"
|
2774 |
+
msgstr ""
|
2775 |
|
2776 |
+
msgid "Staff members order"
|
2777 |
+
msgstr ""
|
2778 |
|
2779 |
+
msgid "Add staff"
|
2780 |
+
msgstr ""
|
2781 |
|
2782 |
+
msgid "Quick search staff"
|
2783 |
+
msgstr ""
|
2784 |
|
2785 |
+
msgid "Categories"
|
2786 |
+
msgstr ""
|
2787 |
|
2788 |
+
msgid "Show archived"
|
2789 |
+
msgstr ""
|
2790 |
|
2791 |
+
msgid "Reorder"
|
2792 |
+
msgstr "Riordina"
|
2793 |
|
2794 |
+
msgid "Image"
|
2795 |
+
msgstr "Immagine"
|
2796 |
|
2797 |
+
msgid "Company name"
|
2798 |
+
msgstr "Nome dell'azienda"
|
2799 |
|
2800 |
+
msgid "Website"
|
2801 |
+
msgstr "Sito internet"
|
2802 |
|
2803 |
+
msgid "Time slot length"
|
2804 |
+
msgstr "dimensione fascia oraria"
|
2805 |
|
2806 |
+
msgid ""
|
2807 |
+
"Select a time interval which will be used as a step when building all time "
|
2808 |
+
"slots in the system."
|
2809 |
msgstr ""
|
2810 |
+
"Selezionare un intervallo di tempo che sarà utilizzato come un passo nella "
|
2811 |
+
"costruzione tutte le fasce orarie nel sistema."
|
2812 |
|
2813 |
+
msgid "Set slot length as service duration"
|
2814 |
msgstr ""
|
|
|
|
|
2815 |
|
2816 |
msgid ""
|
2817 |
+
"Enable this option to make slot length equal to service duration at the Time "
|
2818 |
+
"step of booking form."
|
2819 |
msgstr ""
|
2820 |
+
"Attivare questa opzione per rendere la lunghezza di slot pari alla durata "
|
2821 |
+
"del servizio al Time step del modulo di prenotazione."
|
2822 |
|
2823 |
+
msgid "Default appointment status"
|
2824 |
+
msgstr "Stato predefinito dell'appuntamento"
|
|
|
|
|
2825 |
|
2826 |
+
msgid "Select status for newly booked appointments."
|
2827 |
+
msgstr "Selezionare Stato per gli appuntamenti di recente prenotati."
|
2828 |
|
2829 |
+
msgid "Number of days available for booking"
|
2830 |
+
msgstr "Numero di giorni disponibili per la prenotazione"
|
2831 |
+
|
2832 |
+
msgid "Set how far in the future the clients can book appointments."
|
2833 |
msgstr ""
|
2834 |
+
"Imposta quanto lontano nel futuro i clienti possono prenotare appuntamenti."
|
|
|
2835 |
|
2836 |
+
msgid "Display available time slots in client's time zone"
|
2837 |
+
msgstr "Mostra le fasce orarie con il fuso orario del cliente"
|
2838 |
+
|
2839 |
+
msgid "The value is taken from client's browser."
|
2840 |
msgstr ""
|
2841 |
|
2842 |
+
msgid "Allow staff members to edit their profiles"
|
2843 |
+
msgstr "Permetti allo staff di modificare il proprio profilo"
|
2844 |
|
2845 |
+
msgid ""
|
2846 |
+
"If this option is enabled then all staff members who are associated with "
|
2847 |
+
"WordPress users will be able to edit their own profiles, services, schedule "
|
2848 |
+
"and days off."
|
2849 |
msgstr ""
|
2850 |
+
"Se quest'opzione è abilitata tutti i membri dello staff associati con un "
|
2851 |
+
"account WordPress, potranno modificare li proprie impostazioni, i servizi, "
|
2852 |
+
"gli orari e i giorni di chiusura. "
|
2853 |
|
2854 |
+
msgid "Method to include Bookly JavaScript and CSS files on the page"
|
2855 |
+
msgstr "Metodo di includere Bookly JavaScript e CSS della pagina"
|
2856 |
|
2857 |
+
msgid ""
|
2858 |
+
"With \"Enqueue\" method the JavaScript and CSS files of Bookly will be "
|
2859 |
+
"included on all pages of your website. This method should work with all "
|
2860 |
+
"themes. With \"Print\" method the files will be included only on the pages "
|
2861 |
+
"which contain Bookly booking form. This method may not work with all themes."
|
2862 |
+
msgstr ""
|
2863 |
+
"Con method \"Enqueue\" i file JavaScript e CSS di Bookly saranno inclusi in "
|
2864 |
+
"tutte le pagine del tuo sito web. Questo metodo dovrebbe funzionare con "
|
2865 |
+
"tutti i temi. Con \"Print\" metodo i file verranno inclusi solo sulle pagine "
|
2866 |
+
"che contengono modulo di prenotazione Bookly. Questo metodo potrebbe non "
|
2867 |
+
"funzionare con tutti i temi."
|
2868 |
|
2869 |
+
msgid "Help us improve Bookly by sending anonymous usage stats"
|
2870 |
+
msgstr "Aiutaci a migliorare Bookly inviando statistiche di utilizzo anonime"
|
2871 |
|
2872 |
+
msgid ""
|
2873 |
+
"Allow the plugin to set a Powered by Bookly notice on the booking widget to "
|
2874 |
+
"spread information about the plugin. This will allow the team to improve the "
|
2875 |
+
"product and enhance its functionality"
|
2876 |
+
msgstr ""
|
2877 |
|
2878 |
+
msgid "Prevent caching of pages with booking form"
|
2879 |
+
msgstr ""
|
2880 |
|
2881 |
+
msgid ""
|
2882 |
+
"Select \"Enabled\" if you want Bookly to prevent caching by third-party "
|
2883 |
+
"caching plugins by adding a DONOTCACHEPAGE constant on pages with booking "
|
2884 |
+
"form"
|
2885 |
+
msgstr ""
|
2886 |
|
2887 |
+
msgid "Service paid locally"
|
2888 |
+
msgstr "Servizio pagato il loco"
|
2889 |
|
2890 |
+
msgid "General"
|
2891 |
+
msgstr "Generale"
|
2892 |
|
2893 |
+
msgid "URL Settings"
|
2894 |
msgstr ""
|
2895 |
|
2896 |
+
msgid "Company"
|
2897 |
+
msgstr "Azienda"
|
2898 |
|
2899 |
+
msgid "Business Hours"
|
2900 |
+
msgstr "Orari lavorativi"
|
2901 |
|
2902 |
+
msgid "Holidays"
|
2903 |
+
msgstr "Vacanze"
|
2904 |
|
2905 |
+
msgid "Logs"
|
2906 |
+
msgstr ""
|
2907 |
|
2908 |
+
msgid "Approve appointment URL (success)"
|
2909 |
+
msgstr "URL di approvazione appuntamento (se riuscito)"
|
2910 |
|
2911 |
+
msgid ""
|
2912 |
+
"Set the URL of a page that is shown to staff after they successfully "
|
2913 |
+
"approved the appointment."
|
2914 |
+
msgstr ""
|
2915 |
|
2916 |
+
msgid "Approve appointment URL (denied)"
|
2917 |
+
msgstr "URL di approvazione appuntamento (se negato)"
|
2918 |
|
2919 |
+
msgid ""
|
2920 |
+
"Set the URL of a page that is shown to staff when the approval of "
|
2921 |
+
"appointment cannot be done (due to capacity, changed status, etc.)."
|
2922 |
+
msgstr ""
|
2923 |
|
2924 |
+
msgid "Cancel appointment URL (success)"
|
2925 |
+
msgstr "URL per la cancellazione di un appuntamento (se riuscito)"
|
2926 |
|
2927 |
+
msgid ""
|
2928 |
+
"Set the URL of a page that is shown to clients after they successfully "
|
2929 |
+
"cancelled their appointment."
|
2930 |
msgstr ""
|
2931 |
+
"Impostare la URL di una pagina che viene mostrata ai clienti dopo aver "
|
2932 |
+
"annullato con successo il loro appuntamento."
|
2933 |
|
2934 |
+
msgid "Cancel appointment URL (denied)"
|
2935 |
+
msgstr "URL per la cancellazione di un appuntamento (se negato)"
|
2936 |
|
2937 |
+
msgid ""
|
2938 |
+
"Set the URL of a page that is shown to clients when the cancellation of "
|
2939 |
+
"appointment is not available anymore."
|
2940 |
msgstr ""
|
2941 |
+
"Impostare la URL di una pagina che viene mostrata ai clienti quando "
|
2942 |
+
"l'annullamento dell'appuntamento non è più disponibile."
|
2943 |
|
2944 |
+
msgid "Reject appointment URL (success)"
|
2945 |
msgstr ""
|
2946 |
|
2947 |
msgid ""
|
2948 |
+
"Set the URL of a page that is shown to staff after they successfully "
|
2949 |
+
"rejected the appointment."
|
2950 |
msgstr ""
|
2951 |
|
2952 |
+
msgid "Reject appointment URL (denied)"
|
2953 |
msgstr ""
|
2954 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2955 |
msgid ""
|
2956 |
+
"Set the URL of a page that is shown to staff when the rejection of "
|
2957 |
+
"appointment cannot be done (due to changed status, etc.)."
|
|
|
2958 |
msgstr ""
|
|
|
|
|
|
|
|
|
2959 |
|
2960 |
+
msgid ""
|
2961 |
+
"Please note, the business hours below work as a template for all new staff "
|
2962 |
+
"members. To render a list of available time slots the system takes into "
|
2963 |
+
"account only staff members' schedule, not the company business hours. Be "
|
2964 |
+
"sure to check the schedule of your staff members if you have some unexpected "
|
2965 |
+
"behavior of the booking system."
|
2966 |
+
msgstr ""
|
2967 |
+
"Si prega di notare, le ore di lavoro sotto il lavoro come un modello per "
|
2968 |
+
"tutti i nuovi membri del personale. Per effettuare il rendering di un elenco "
|
2969 |
+
"di intervalli di tempo disponibili il sistema tiene conto solo di "
|
2970 |
+
"pianificazione dei membri del personale, non le ore di lavoro dell'azienda. "
|
2971 |
+
"Assicuratevi di controllare il calendario dei vostri membri dello staff se "
|
2972 |
+
"avete qualche comportamento imprevisto del sistema di prenotazione."
|
2973 |
|
2974 |
+
msgid "Internal note"
|
2975 |
+
msgstr "Nota interna"
|
2976 |
|
2977 |
+
msgid "Duration of service"
|
|
|
|
|
|
|
2978 |
msgstr ""
|
|
|
|
|
|
|
2979 |
|
2980 |
+
msgid "Show only business days in the calendar"
|
2981 |
msgstr ""
|
2982 |
|
2983 |
+
msgid ""
|
2984 |
+
"If this setting is enabled then only business days will be visible in the "
|
2985 |
+
"calendar according to the company's business hours settings"
|
2986 |
msgstr ""
|
2987 |
|
2988 |
+
msgid "Show only business hours in the calendar"
|
2989 |
msgstr ""
|
2990 |
|
|
|
2991 |
msgid ""
|
2992 |
+
"If this setting is enabled then the visible hours in the calendar will be "
|
2993 |
+
"limited to the company's business hours"
|
2994 |
+
msgstr ""
|
2995 |
+
|
2996 |
+
msgid "Show only staff members with appointments in Day view"
|
2997 |
msgstr ""
|
|
|
|
|
2998 |
|
2999 |
msgid ""
|
3000 |
+
"If this setting is enabled then only staff members who have associated "
|
3001 |
+
"appointments will be displayed in the Day view"
|
3002 |
msgstr ""
|
|
|
|
|
3003 |
|
3004 |
+
msgid "Appointment with one participant"
|
3005 |
+
msgstr "Appuntamento con un partecipante"
|
3006 |
|
3007 |
+
msgid "Appointment with many participants"
|
3008 |
+
msgstr "Appuntamento con molti partecipanti"
|
3009 |
|
3010 |
+
msgid "Set order of the fields in calendar"
|
3011 |
+
msgstr ""
|
3012 |
|
3013 |
+
msgid "Currency"
|
3014 |
+
msgstr "Valuta"
|
3015 |
|
3016 |
+
msgid "Price format"
|
3017 |
+
msgstr "Formato prezzo"
|
3018 |
+
|
3019 |
+
msgid "Phone field default country"
|
3020 |
+
msgstr "Telefono paese predefinito campo"
|
3021 |
+
|
3022 |
+
msgid ""
|
3023 |
+
"Select default country for the phone field in the 'Details' step of booking. "
|
3024 |
+
"You can also let Bookly determine the country based on the IP address of the "
|
3025 |
+
"client."
|
3026 |
msgstr ""
|
3027 |
+
"Selezionare un paese predefinito per il campo telefono nella fase 'Dettagli' "
|
3028 |
+
"di prenotazione. È anche possibile lasciare Bookly di determinare il paese "
|
3029 |
+
"in base all'indirizzo IP del client."
|
3030 |
|
3031 |
+
msgid "Guess country by user's IP address"
|
3032 |
+
msgstr "Indovina paese da indirizzo IP dell'utente"
|
3033 |
+
|
3034 |
+
msgid "Default country code"
|
3035 |
+
msgstr "Prefisso internazionale predefinito"
|
3036 |
+
|
3037 |
+
msgid ""
|
3038 |
+
"Your clients must have their phone numbers in international format in order "
|
3039 |
+
"to receive text messages. However you can specify a default country code "
|
3040 |
+
"that will be used as a prefix for all phone numbers that do not start with "
|
3041 |
+
"\"+\" or \"00\". E.g. if you enter \"1\" as the default country code and a "
|
3042 |
+
"client enters their phone as \"(600) 555-2222\" the resulting phone number "
|
3043 |
+
"to send the SMS to will be \"+1600555222\"."
|
3044 |
msgstr ""
|
3045 |
+
"I vostri clienti devono avere i loro numeri di telefono in formato "
|
3046 |
+
"internazionale, al fine di ricevere messaggi di testo. Tuttavia è possibile "
|
3047 |
+
"specificare un codice di paese di default che verrà utilizzato come prefisso "
|
3048 |
+
"per tutti i numeri di telefono che non cominciano con \"+\" o \"00\". Ad es "
|
3049 |
+
"se si inserisce \"1\", come il codice del paese di default e un cliente "
|
3050 |
+
"entra nel loro telefono cellulare come \"(600) 555-2222\" il numero di "
|
3051 |
+
"telefono risultante per inviare l'SMS al sarà \"+1600555222\"."
|
3052 |
|
3053 |
+
msgid "Remember personal information in cookies"
|
3054 |
+
msgstr "Ricorda le informazioni personali nei cookie"
|
3055 |
|
3056 |
+
msgid ""
|
3057 |
+
"If this setting is enabled then returning customers will have their personal "
|
3058 |
+
"information fields filled in at the Details step with the data previously "
|
3059 |
+
"saved in cookies."
|
3060 |
msgstr ""
|
3061 |
+
"Se questa impostazione è abilitata, i clienti restituiti avranno i propri "
|
3062 |
+
"campi di informazioni personali nel punto Dettagli con i dati "
|
3063 |
+
"precedentemente salvati nei cookie."
|
3064 |
|
3065 |
+
msgid "Allow duplicate customers"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3066 |
msgstr ""
|
3067 |
|
3068 |
+
msgid ""
|
3069 |
+
"If enabled, a new user will be created if any of the registration data "
|
3070 |
+
"during the booking is different."
|
3071 |
msgstr ""
|
3072 |
|
3073 |
+
msgid "Show confirmation dialog before updating customer's data"
|
3074 |
msgstr ""
|
3075 |
|
3076 |
+
msgid ""
|
3077 |
+
"If this option is enabled and customer enters contact info different from "
|
3078 |
+
"the previous order, a warning message will appear asking to update the data."
|
3079 |
msgstr ""
|
3080 |
|
3081 |
+
msgid "Debug logs"
|
3082 |
+
msgstr ""
|
3083 |
|
3084 |
msgid ""
|
3085 |
+
"If this setting is enabled then all actions with appointments will be "
|
3086 |
+
"recorded in a log table. We recommend enabling this setting as it will be "
|
3087 |
+
"helpful for our support team in case of unpredictable issues with "
|
3088 |
+
"appointments."
|
3089 |
msgstr ""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3090 |
|
3091 |
+
msgid "Action"
|
3092 |
+
msgstr ""
|
3093 |
|
3094 |
+
msgid "Target"
|
3095 |
+
msgstr ""
|
3096 |
|
3097 |
+
msgid "Target ID"
|
3098 |
+
msgstr ""
|
|
|
3099 |
|
3100 |
+
msgid "Author"
|
3101 |
msgstr ""
|
3102 |
|
3103 |
+
msgid "Comment"
|
|
|
|
|
|
|
3104 |
msgstr ""
|
3105 |
|
3106 |
+
msgid "Reference"
|
3107 |
+
msgstr ""
|
3108 |
|
3109 |
+
msgid "Clear logs"
|
3110 |
msgstr ""
|
3111 |
|
3112 |
+
#, php-format
|
3113 |
msgid ""
|
3114 |
+
"WooCommerce cart is not set up. Follow the <a href=\"%s\">link</a> to "
|
3115 |
+
"correct this problem."
|
3116 |
+
msgstr ""
|
3117 |
+
"WooCommerce carrello non è impostato. Seguite il <a href=\"%s\">"
|
3118 |
+
"collegamento</a> per correggere questo problema."
|
3119 |
+
|
3120 |
+
msgid "Last month"
|
3121 |
msgstr ""
|
3122 |
|
3123 |
msgid "SMS Notifications"
|
3124 |
msgstr "Avvisi via SMS"
|
3125 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3126 |
msgid "Approved at"
|
3127 |
msgstr "Approvato a"
|
3128 |
|
3129 |
msgid "Change the sender's name to your phone number or any other name"
|
3130 |
msgstr ""
|
3131 |
|
3132 |
+
msgid "Notifications"
|
3133 |
+
msgstr "Notifiche"
|
3134 |
+
|
3135 |
msgid "SMS Details"
|
3136 |
msgstr "SMS Dettagli"
|
3137 |
|
3138 |
msgid "Price list"
|
3139 |
msgstr "Listino prezzi"
|
3140 |
|
3141 |
+
msgid ""
|
3142 |
+
"If you do not see your country in the list please contact us at <a "
|
3143 |
+
"href=\"mailto:support@bookly.info\">support@bookly.info</a>."
|
3144 |
+
msgstr ""
|
3145 |
+
|
3146 |
+
msgid "Administrator phone"
|
3147 |
+
msgstr "Telefono dell'amministratore"
|
3148 |
+
|
3149 |
+
msgid "Send test SMS"
|
3150 |
+
msgstr "Invia SMS di prova"
|
3151 |
+
|
3152 |
+
msgid "Save administrator phone"
|
3153 |
+
msgstr ""
|
3154 |
+
|
3155 |
+
msgid ""
|
3156 |
+
"Enter a phone number in international format. E.g. for the United States a "
|
3157 |
+
"valid phone number would be +17327572923."
|
3158 |
+
msgstr ""
|
3159 |
+
"Digitare un numero di telefono in formato internazionale. Ad es per l'Italia "
|
3160 |
+
"un numero di telefono valido sarebbe +393555333222."
|
3161 |
+
|
3162 |
+
msgid "Quick search notifications"
|
3163 |
+
msgstr ""
|
3164 |
+
|
3165 |
+
#, php-format
|
3166 |
+
msgid ""
|
3167 |
+
"To send scheduled notifications please refer to <a href=\"%1$s\">Bookly "
|
3168 |
+
"Multisite</a> add-on <a href=\"%2$s\">message</a>."
|
3169 |
+
msgstr ""
|
3170 |
+
"Per inviare notifiche pianificate fare riferimento al <a href=\"%2$s\">"
|
3171 |
+
"messaggio</a> di <a href=\"%1$s\">Bookly Multisite</a> add-on."
|
3172 |
+
|
3173 |
+
msgid ""
|
3174 |
+
"To send scheduled notifications please execute the following command hourly "
|
3175 |
+
"with your cron:"
|
3176 |
+
msgstr ""
|
3177 |
+
"Per inviare notifiche pianificate, eseguire il seguente comando ogni ora con "
|
3178 |
+
"il tuo cron:"
|
3179 |
+
|
3180 |
msgid ""
|
3181 |
"Please take into account that not all countries by law allow custom SMS "
|
3182 |
"sender ID. Please check if particular country supports custom sender ID in "
|
3205 |
msgid "Can only contain letters or digits (up to 11 characters)."
|
3206 |
msgstr "Può contenere solo lettere o cifre (fino a 11 caratteri)."
|
3207 |
|
3208 |
+
msgid "Sender ID request is sent."
|
3209 |
+
msgstr "Richiesta di ID del mittente è stato inviato."
|
|
|
|
|
3210 |
|
3211 |
+
msgid "Sender ID is reset to default."
|
3212 |
+
msgstr "ID mittente viene reimpostato ai valori predefiniti."
|
3213 |
|
3214 |
+
msgid "No records for selected period."
|
3215 |
+
msgstr "Nessun record per il periodo selezionato."
|
3216 |
|
3217 |
+
msgid "enable"
|
3218 |
msgstr ""
|
3219 |
|
3220 |
+
msgid "disable"
|
|
|
|
|
3221 |
msgstr ""
|
|
|
|
|
3222 |
|
3223 |
+
msgid "SMS has been sent successfully."
|
3224 |
+
msgstr "SMS è stato inviato correttamente."
|
3225 |
|
3226 |
+
msgid "Bookly Cloud Billing"
|
3227 |
msgstr ""
|
3228 |
|
3229 |
+
msgid "Invoice"
|
3230 |
msgstr ""
|
3231 |
|
3232 |
+
msgid ""
|
3233 |
+
"To generate an invoice you should fill in company information in Bookly "
|
3234 |
+
"Cloud settings -> Invoice"
|
3235 |
msgstr ""
|
3236 |
|
3237 |
+
msgid "Bookly Cloud Settings"
|
3238 |
msgstr ""
|
3239 |
|
3240 |
+
msgid "Auto-Recharge"
|
3241 |
+
msgstr "Auto-ricarica"
|
3242 |
+
|
3243 |
+
msgid "Change password"
|
3244 |
+
msgstr "Cambia password"
|
3245 |
+
|
3246 |
+
#, php-format
|
3247 |
+
msgid "We will only charge you when your balance falls below %s"
|
3248 |
msgstr ""
|
3249 |
|
3250 |
+
msgid "Company address"
|
|
|
|
|
|
|
|
|
3251 |
msgstr ""
|
3252 |
|
3253 |
+
msgid "Company address line 2"
|
|
|
|
|
3254 |
msgstr ""
|
3255 |
|
3256 |
+
msgid "You can change the country <a href=\"#\">here</a>"
|
|
|
|
|
3257 |
msgstr ""
|
3258 |
|
3259 |
+
msgid "Company number"
|
|
|
|
|
3260 |
msgstr ""
|
3261 |
|
3262 |
+
msgid "VAT / Tax number"
|
|
|
|
|
3263 |
msgstr ""
|
3264 |
|
3265 |
+
msgid "Additional text to include in invoice"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3266 |
msgstr ""
|
3267 |
|
3268 |
+
msgid "Send invoice"
|
3269 |
+
msgstr ""
|
3270 |
|
3271 |
+
#, php-format
|
3272 |
+
msgid "The invoice will be sent to <a href=\"mailto:%1$s\">%1$s</a>"
|
3273 |
+
msgstr ""
|
3274 |
|
3275 |
+
msgid "Copy invoice to another email(s)"
|
3276 |
msgstr ""
|
3277 |
|
3278 |
+
msgid "Enter one or more email addresses separated by commas."
|
3279 |
msgstr ""
|
3280 |
|
3281 |
+
msgid "Save invoice settings"
|
3282 |
msgstr ""
|
3283 |
|
3284 |
+
msgid "Send email notification to administrators at low balance"
|
3285 |
+
msgstr "Invia notifica e-mail agli amministratori a basso equilibrio"
|
3286 |
|
3287 |
+
msgid "Send weekly summary"
|
3288 |
msgstr ""
|
3289 |
|
3290 |
+
msgid ""
|
3291 |
+
"Your country is the location from where you consume Bookly SMS services and "
|
3292 |
+
"is used to provide you with the payment methods available in that country."
|
3293 |
msgstr ""
|
3294 |
|
3295 |
+
msgid "Update country"
|
|
|
|
|
|
|
|
|
|
|
|
|
3296 |
msgstr ""
|
3297 |
|
3298 |
+
msgid "Old password"
|
3299 |
+
msgstr "Vecchia password"
|
3300 |
|
3301 |
+
msgid "Repeat new password"
|
3302 |
+
msgstr "Ripetere la nuova password"
|
3303 |
|
3304 |
+
msgid "Passwords don't match"
|
3305 |
msgstr ""
|
3306 |
|
3307 |
+
msgid "Services order"
|
3308 |
msgstr ""
|
3309 |
|
3310 |
+
msgid "Add service"
|
3311 |
msgstr ""
|
3312 |
|
3313 |
+
msgid "Quick search services"
|
3314 |
msgstr ""
|
3315 |
|
3316 |
+
msgid "Update service setting"
|
3317 |
+
msgstr "Aggiorna le impostazioni dei servizi"
|
3318 |
+
|
3319 |
+
msgid ""
|
3320 |
+
"You are about to change a service setting which is also configured "
|
3321 |
+
"separately for each staff member. Do you want to update it in staff settings "
|
3322 |
+
"too?"
|
3323 |
msgstr ""
|
3324 |
+
"Stai per modificare un servizio che è configurabile separatamente per ogni "
|
3325 |
+
"membro dello staff. Vuoi aggiornarlo anche nelle impostazioni dello staff?"
|
3326 |
|
3327 |
+
msgid "Remember my choice"
|
3328 |
+
msgstr "Ricorda la mia scelta"
|
3329 |
|
3330 |
+
msgid "No, update just here in services"
|
3331 |
+
msgstr "No, aggiorna il servizio solo qui"
|
3332 |
|
3333 |
+
msgid "The service will be created with the visibility of Private."
|
3334 |
+
msgstr ""
|
3335 |
|
3336 |
+
msgid "Duplicate"
|
3337 |
+
msgstr ""
|
3338 |
|
3339 |
+
msgid "You must select at least one repeat option for recurring services."
|
3340 |
msgstr ""
|
|
|
|
|
3341 |
|
3342 |
+
msgid "Simple"
|
3343 |
+
msgstr "Semplice"
|
3344 |
|
3345 |
+
#, php-format
|
3346 |
+
msgid "%d service"
|
3347 |
+
msgid_plural "%d services"
|
3348 |
+
msgstr[0] "%d servizio"
|
3349 |
+
msgstr[1] "%d servizi"
|
3350 |
|
3351 |
+
#, php-format
|
3352 |
+
msgid "Copy of %s"
|
3353 |
msgstr ""
|
3354 |
|
3355 |
+
msgid "Bookly Cloud Zapier"
|
|
|
|
|
|
|
3356 |
msgstr ""
|
3357 |
|
3358 |
+
#, php-format
|
3359 |
msgid ""
|
3360 |
+
"If you have not already done so, <a href=\"%s\" target=\"_blank\">sign up "
|
3361 |
+
"for Zapier</a>"
|
|
|
|
|
3362 |
msgstr ""
|
3363 |
|
3364 |
+
#, php-format
|
3365 |
+
msgid ""
|
3366 |
+
"<a href=\"%s\" target=\"_blank\">Sign in to Zapier</a> and click <a "
|
3367 |
+
"href=\"%s\" target=\"_blank\"><b>Make a Zap</b></a>"
|
3368 |
msgstr ""
|
3369 |
|
3370 |
+
msgid ""
|
3371 |
+
"In the <b>Choose App & Event</b> step search for the <b>Bookly</b> app and "
|
3372 |
+
"select it"
|
3373 |
+
msgstr ""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3374 |
|
3375 |
+
msgid ""
|
3376 |
+
"In the <b>Choose Trigger Event</b> dropdown choose a trigger and click <b>"
|
3377 |
+
"Continue</b>"
|
3378 |
+
msgstr ""
|
3379 |
|
3380 |
+
msgid "In the <b>Choose Account</b> step click <b>Sign in to Bookly</b>"
|
3381 |
+
msgstr ""
|
3382 |
|
3383 |
+
msgid ""
|
3384 |
+
"In the popup window enter the API Key found below on this page, and click <b>"
|
3385 |
+
"Yes, Continue</b>"
|
3386 |
+
msgstr ""
|
3387 |
|
3388 |
+
msgid "Click <b>Continue</b>, then <b>Test trigger</b> and <b>Continue</b>"
|
3389 |
+
msgstr ""
|
3390 |
|
3391 |
+
msgid "Continue creating your Zap by selecting the options you'd like"
|
3392 |
+
msgstr ""
|
3393 |
|
3394 |
+
msgid "Finally, click <b>Finish</b> to create your Zap"
|
3395 |
msgstr ""
|
|
|
|
|
3396 |
|
3397 |
+
msgid ""
|
3398 |
+
"Once your Zap is created, make sure to toggle your Zap \"on\". It's now "
|
3399 |
+
"ready to go and will run automatically"
|
3400 |
+
msgstr ""
|
3401 |
|
3402 |
+
msgid "Generate new API Key"
|
3403 |
msgstr ""
|
3404 |
|
3405 |
+
msgid "Bookly update required"
|
3406 |
msgstr ""
|
3407 |
|
3408 |
msgid ""
|
3409 |
+
"This product is not supported by your version of Bookly plugin. Please "
|
3410 |
+
"update Bookly to the latest version."
|
|
|
|
|
3411 |
msgstr ""
|
|
|
|
|
|
|
|
|
|
|
3412 |
|
3413 |
+
msgid "Bookly Cloud"
|
3414 |
msgstr ""
|
3415 |
|
3416 |
+
#, php-format
|
3417 |
+
msgid "Bookly %s required"
|
3418 |
msgstr ""
|
3419 |
|
3420 |
+
msgid "Cancel subscription"
|
3421 |
msgstr ""
|
3422 |
|
3423 |
+
msgid "When do you want to cancel?"
|
3424 |
+
msgstr ""
|
|
|
|
|
|
|
|
|
|
|
|
|
3425 |
|
3426 |
+
msgid "Cancel on next renewal"
|
3427 |
+
msgstr ""
|
3428 |
|
3429 |
+
msgid "Cancel immediately"
|
3430 |
msgstr ""
|
3431 |
|
3432 |
msgid "Congrats!"
|
3435 |
msgid "Oops!"
|
3436 |
msgstr ""
|
3437 |
|
3438 |
+
msgid "best offer"
|
3439 |
msgstr ""
|
3440 |
|
3441 |
+
msgid "users choice"
|
|
|
3442 |
msgstr ""
|
3443 |
|
3444 |
+
msgid "Next billing date"
|
3445 |
msgstr ""
|
3446 |
|
3447 |
+
msgid "Deactivation date"
|
|
|
|
|
3448 |
msgstr ""
|
3449 |
|
3450 |
+
msgid "Stripe activation was not completed"
|
3451 |
msgstr ""
|
3452 |
|
3453 |
+
msgid "All staff"
|
3454 |
+
msgstr "Tutto lo staff"
|
3455 |
|
3456 |
+
msgid "No staff selected"
|
3457 |
+
msgstr "Nessuno staff selezionato"
|
3458 |
|
3459 |
+
msgid "Auto-refresh Calendar"
|
|
|
|
|
|
|
3460 |
msgstr ""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3461 |
|
3462 |
+
msgid "Every 1 minute"
|
3463 |
msgstr ""
|
3464 |
|
3465 |
+
msgid "Every 5 minutes"
|
3466 |
+
msgstr ""
|
3467 |
|
3468 |
+
msgid "Every 15 minutes"
|
|
|
|
|
|
|
3469 |
msgstr ""
|
|
|
|
|
|
|
3470 |
|
3471 |
+
msgid "Disable"
|
3472 |
+
msgstr ""
|
3473 |
|
3474 |
+
msgid "Welcome to Bookly and thank you for your choice!"
|
3475 |
+
msgstr ""
|
3476 |
|
3477 |
msgid ""
|
3478 |
+
"Bookly will simplify the booking process for your customers. This plugin "
|
3479 |
+
"creates another touchpoint to convert your visitors into customers. With "
|
3480 |
+
"Bookly your clients can see your availability, pick the services you provide,"
|
3481 |
+
" book them online and much more."
|
|
|
|
|
3482 |
msgstr ""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3483 |
|
3484 |
msgid ""
|
3485 |
+
"To start using Bookly, you need to set up the services you provide and "
|
3486 |
+
"specify the staff members who will provide those services."
|
|
|
3487 |
msgstr ""
|
|
|
|
|
|
|
3488 |
|
3489 |
+
msgid ""
|
3490 |
+
"Add a staff member (you can add only one service provider with a free "
|
3491 |
+
"version of Bookly)."
|
3492 |
msgstr ""
|
3493 |
|
3494 |
msgid ""
|
3495 |
+
"Add services you provide (up to five with a free version of Bookly) and "
|
3496 |
+
"assign them to a staff member."
|
3497 |
msgstr ""
|
3498 |
|
3499 |
+
msgid ""
|
3500 |
+
"Go to Posts/Pages and click on the 'Add Bookly booking form' button in the "
|
3501 |
+
"page editor to publish the booking form on your website."
|
3502 |
msgstr ""
|
3503 |
|
3504 |
+
#, php-format
|
3505 |
msgid ""
|
3506 |
+
"Bookly can boost your sales and scale together with your business. Get more "
|
3507 |
+
"features and remove the limits by upgrading to the paid version with the <a "
|
3508 |
+
"href=\"%s\" target=\"_blank\">Bookly Pro add-on</a>, which allows you to use "
|
3509 |
+
"a vast number of additional features and settings for booking services, "
|
3510 |
+
"install other add-ons for Bookly, and includes six months of customer "
|
3511 |
+
"support."
|
3512 |
msgstr ""
|
3513 |
|
3514 |
+
msgid "Add Staff Members"
|
3515 |
+
msgstr "Aggiungi Membri dello Staff"
|
3516 |
|
3517 |
+
msgid "Add Services"
|
3518 |
+
msgstr "Aggiungi Servizi"
|
3519 |
|
3520 |
+
msgid "Try Bookly Pro add-on"
|
3521 |
msgstr ""
|
3522 |
|
3523 |
+
msgid "No payments for selected period and criteria."
|
3524 |
+
msgstr "Nessun pagamento trovato per la fascia oraria e i criteri impostati."
|
3525 |
|
3526 |
+
msgid "See details for more items"
|
3527 |
+
msgstr "Vedi i dettagli per più voci"
|
3528 |
|
3529 |
+
msgid "Edit custom CSS"
|
3530 |
+
msgstr "Modifica CSS personalizzato"
|
3531 |
|
3532 |
+
msgid "Set up your custom CSS styles"
|
3533 |
+
msgstr "Impostare gli stili CSS personalizzati"
|
3534 |
|
3535 |
+
msgid "Show form progress tracker"
|
3536 |
+
msgstr "Mostra la barra di progresso nel form"
|
3537 |
|
3538 |
+
msgid "Align buttons to the left"
|
3539 |
+
msgstr ""
|
3540 |
|
3541 |
+
msgid "Click on the underlined text to edit."
|
3542 |
+
msgstr "Clicca sui testi sottolineati per modificarli."
|
3543 |
|
3544 |
+
msgid "How to publish this form on your web site?"
|
3545 |
msgstr ""
|
|
|
|
|
3546 |
|
3547 |
msgid ""
|
3548 |
+
"Open the page where you want to add the booking form in page edit mode and "
|
3549 |
+
"click on the \"Add Bookly booking form\" button. Choose which fields you'd "
|
3550 |
+
"like to keep or remove from the booking form. Click Insert, and the booking "
|
3551 |
+
"form will be added to the page."
|
|
|
3552 |
msgstr ""
|
|
|
|
|
|
|
|
|
|
|
|
|
3553 |
|
3554 |
+
msgid "Read more"
|
3555 |
+
msgstr ""
|
3556 |
|
3557 |
+
msgid "Make selecting employee required"
|
3558 |
+
msgstr "Effettuare la selezione dei dipendenti richiesto"
|
3559 |
|
3560 |
+
msgid "Show service price next to employee name"
|
3561 |
+
msgstr "Mostra il prezzo del servizio accanto al nome del dipendente"
|
3562 |
|
3563 |
+
msgid "Show service duration next to service name"
|
3564 |
+
msgstr "Mostra la durata del servizio accanto al nome del servizio"
|
3565 |
|
3566 |
+
msgid "Show calendar"
|
3567 |
+
msgstr "Mostra il calendario"
|
3568 |
|
3569 |
+
msgid "Show blocked timeslots"
|
3570 |
+
msgstr "Mostra le fasce orarie occupate"
|
|
|
|
|
3571 |
|
3572 |
+
msgid "Show each day in one column"
|
3573 |
+
msgstr "Mostra ogni giorno in una colonna"
|
3574 |
|
3575 |
+
msgid "Phone field required"
|
3576 |
+
msgstr "E' richiesto il numero di telefono"
|
|
|
|
|
3577 |
|
3578 |
+
msgid "Email field required"
|
3579 |
+
msgstr "Il campo email è obbligatorio"
|
3580 |
|
3581 |
+
msgid "Both email and phone fields required"
|
3582 |
+
msgstr "Il numero di telefono e l'email sono campi obbligatori"
|
|
|
|
|
|
|
|
|
3583 |
|
3584 |
+
msgid "Show Login button"
|
3585 |
+
msgstr "Mostra pulsante di accesso"
|
3586 |
|
3587 |
+
msgid "Do not forget to update your email and SMS codes for customer names"
|
|
|
|
|
3588 |
msgstr ""
|
3589 |
+
"Non dimenticare di aggiornare la tua email e i codici SMS per i nomi dei "
|
3590 |
+
"clienti"
|
3591 |
|
3592 |
+
#. Fa riferimento alla funzione che permette di dividere Nome e Cognome invece di farli inserire agli utenti in un unico campo
|
3593 |
+
msgid "Use first and last name instead of full name"
|
3594 |
+
msgstr "Usa Nome e Cognome separati invece del Nome completo"
|
3595 |
|
3596 |
+
msgid "Email confirmation field"
|
|
|
|
|
3597 |
msgstr ""
|
3598 |
|
3599 |
+
msgid "Show notes field"
|
3600 |
msgstr ""
|
3601 |
|
3602 |
msgid ""
|
3603 |
+
"The booking form on this step may have different set or states of its "
|
3604 |
+
"elements. It depends on various conditions such as installed/activated add-"
|
3605 |
+
"ons, settings configuration or choices made on previous steps. Select option "
|
3606 |
+
"and click on the underlined text to edit."
|
3607 |
msgstr ""
|
3608 |
+
"Il modulo di prenotazione su questo passaggio può avere diversi set o stati "
|
3609 |
+
"dei suoi elementi. Dipende da varie condizioni come i componenti aggiuntivi "
|
3610 |
+
"installati/attivati, la configurazione delle impostazioni o le scelte "
|
3611 |
+
"eseguite nei passaggi precedenti. Seleziona l'opzione e fai clic sul testo "
|
3612 |
+
"sottolineato da modificare."
|
3613 |
|
3614 |
+
msgid "Form view in case of successful booking"
|
|
|
|
|
3615 |
msgstr ""
|
|
|
|
|
3616 |
|
3617 |
+
msgid "Form view in case the number of bookings exceeds the limit"
|
3618 |
msgstr ""
|
3619 |
|
3620 |
+
msgid "Form view in case of payment has been accepted for processing"
|
|
|
|
|
3621 |
msgstr ""
|
|
|
|
|
|
|
|
|
|
|
3622 |
|
3623 |
+
msgid "Visible when the chosen time slot has been already booked"
|
3624 |
+
msgstr "Visibile quando l'orario di tempo selezionato è già stato prenotato"
|
3625 |
|
3626 |
+
msgid "Visible to non-logged in customers only"
|
3627 |
+
msgstr "Visibile solo i clienti anonimi"
|
|
|
3628 |
|
3629 |
+
msgid "Previous month"
|
3630 |
+
msgstr "Mese precedente"
|
3631 |
|
3632 |
+
#, php-format
|
3633 |
+
msgid ""
|
3634 |
+
"To use the cart, disable integration with WooCommerce <a href=\"%s\">here</a>"
|
3635 |
+
"."
|
3636 |
msgstr ""
|
3637 |
+
"Per utilizzare il carrello, disattivare l'integrazione con WooCommerce <a "
|
3638 |
+
"href=\"%s\">qui</a>."
|
3639 |
|
3640 |
+
msgid "Your custom CSS was saved. Please refresh the page to see your changes."
|
3641 |
+
msgstr ""
|
3642 |
+
"Il tuo CSS personalizzato è stato salvato. Aggiorna la pagina per vedere le "
|
3643 |
+
"tue modifiche."
|
3644 |
|
3645 |
+
msgid "Quick search customers"
|
|
|
|
|
|
|
3646 |
msgstr ""
|
|
|
|
|
|
|
3647 |
|
3648 |
+
msgid "New customer"
|
3649 |
+
msgstr "Nuovo cliente"
|
3650 |
|
3651 |
+
msgid "Merge with"
|
|
|
|
|
|
|
|
|
3652 |
msgstr ""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3653 |
|
3654 |
+
msgid "Select for merge"
|
|
|
|
|
|
|
3655 |
msgstr ""
|
3656 |
|
3657 |
+
msgid "Merge list"
|
3658 |
msgstr ""
|
3659 |
|
3660 |
+
msgid "Merge customers"
|
|
|
|
|
|
|
3661 |
msgstr ""
|
3662 |
|
3663 |
+
msgid ""
|
3664 |
+
"You are about to merge customers from the merge list with the selected one. "
|
3665 |
+
"This will result in losing the merged customers and moving all their "
|
3666 |
+
"appointments to the selected customer. Are you sure you want to continue?"
|
3667 |
msgstr ""
|
3668 |
|
3669 |
+
msgid "Merge"
|
3670 |
msgstr ""
|
3671 |
|
3672 |
+
msgid "No customers found."
|
3673 |
+
msgstr "Nessun cliente trovato."
|
3674 |
|
3675 |
+
msgid "Edit customer"
|
3676 |
+
msgstr "Modifica cliente"
|
3677 |
|
3678 |
+
msgid "Create customer"
|
3679 |
+
msgstr "Crea cliente"
|
3680 |
|
3681 |
+
msgid "Quick search customer"
|
3682 |
+
msgstr "Ricerca veloce clienti"
|
3683 |
|
3684 |
+
msgid "Addons"
|
3685 |
msgstr ""
|
3686 |
|
3687 |
+
msgid "Sort by"
|
3688 |
msgstr ""
|
3689 |
|
3690 |
+
msgid "Best Sellers"
|
3691 |
msgstr ""
|
3692 |
|
3693 |
+
msgid "Best Rated"
|
3694 |
msgstr ""
|
3695 |
|
3696 |
+
msgid "Newest Items"
|
3697 |
msgstr ""
|
3698 |
|
3699 |
+
msgid "Price: low to high"
|
3700 |
msgstr ""
|
3701 |
|
3702 |
+
msgid "Price: high to low"
|
3703 |
msgstr ""
|
3704 |
|
3705 |
+
msgid "Demo"
|
3706 |
msgstr ""
|
3707 |
|
3708 |
+
msgid "New"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3709 |
msgstr ""
|
3710 |
|
3711 |
+
#, php-format
|
3712 |
+
msgid "%d sale"
|
3713 |
+
msgid_plural "%d sales"
|
3714 |
+
msgstr[0] "%d vendita"
|
3715 |
+
msgstr[1] "%d vendite"
|
3716 |
|
3717 |
+
#, php-format
|
3718 |
+
msgid "%d review"
|
3719 |
+
msgid_plural "%d reviews"
|
3720 |
+
msgstr[0] "%d revisione"
|
3721 |
+
msgstr[1] "%d revisioni"
|
3722 |
|
3723 |
+
msgid "Installed"
|
3724 |
msgstr ""
|
3725 |
|
3726 |
+
msgid "Get it!"
|
3727 |
+
msgstr ""
|
3728 |
|
3729 |
msgid ""
|
3730 |
+
"See the number of appointments and total revenue for the selected period"
|
3731 |
msgstr ""
|
3732 |
|
3733 |
+
msgid "End date of appointment"
|
3734 |
msgstr ""
|
3735 |
|
3736 |
+
msgid "End time of appointment"
|
3737 |
msgstr ""
|
3738 |
|
3739 |
+
msgid "Cart information"
|
3740 |
msgstr ""
|
3741 |
|
3742 |
+
msgid "Cart information with cancel"
|
3743 |
msgstr ""
|
3744 |
|
3745 |
+
msgid "Address of client"
|
3746 |
msgstr ""
|
3747 |
|
3748 |
+
msgid "Time zone of client"
|
3749 |
msgstr ""
|
3750 |
|
3751 |
+
msgid "URL of approve appointment link (to use inside <a> tag)"
|
3752 |
msgstr ""
|
3753 |
+
"URL di collegamento per l'approvazione appuntamento (da utilizzare "
|
3754 |
+
"all'interno <a> tag)"
|
3755 |
|
3756 |
+
msgid ""
|
3757 |
+
"URL of cancel appointment link with confirmation (to use inside <a> tag)"
|
3758 |
msgstr ""
|
3759 |
|
3760 |
+
msgid "URL of cancel appointment link (to use inside <a> tag)"
|
3761 |
msgstr ""
|
3762 |
+
"URL di collegamento per l'annullamento appuntamento (da utilizzare "
|
3763 |
+
"all'interno <a> tag)"
|
3764 |
|
3765 |
+
msgid "Reason you mentioned while deleting appointment"
|
3766 |
msgstr ""
|
3767 |
|
3768 |
+
msgid ""
|
3769 |
+
"URL for adding event to client's Google Calendar (to use inside <a> tag)"
|
3770 |
msgstr ""
|
3771 |
+
"URL per l'aggiunta di evento al cliente Google Calendar (da utilizzare "
|
3772 |
+
"all'interno <a> tag)"
|
3773 |
|
3774 |
+
msgid "URL of reject appointment link (to use inside <a> tag)"
|
3775 |
msgstr ""
|
3776 |
|
3777 |
+
msgid "Payment status"
|
3778 |
msgstr ""
|
3779 |
|
3780 |
+
msgid "Agenda date"
|
|
|
|
|
|
|
|
|
|
|
|
|
3781 |
msgstr ""
|
3782 |
|
3783 |
+
msgid "Staff agenda for next day"
|
|
|
|
|
|
|
3784 |
msgstr ""
|
3785 |
|
3786 |
+
msgid "Date of next day"
|
3787 |
msgstr ""
|
3788 |
|
3789 |
+
msgid "Customer new password"
|
3790 |
msgstr ""
|
3791 |
|
3792 |
+
msgid "Customer new username"
|
|
|
3793 |
msgstr ""
|
3794 |
|
3795 |
+
msgid "Site address"
|
|
|
|
|
3796 |
msgstr ""
|
3797 |
|
3798 |
+
msgid "Company logo"
|
|
|
3799 |
msgstr ""
|
3800 |
|
3801 |
+
msgid "Cancel appointment link"
|
3802 |
msgstr ""
|
3803 |
|
3804 |
+
msgid "Photo of staff"
|
|
|
|
|
|
|
3805 |
msgstr ""
|
3806 |
|
3807 |
+
msgid "General settings"
|
3808 |
msgstr ""
|
3809 |
|
3810 |
+
msgid "Scheduled notifications retry period"
|
3811 |
msgstr ""
|
3812 |
|
3813 |
+
msgid ""
|
3814 |
+
"Set period of time when system will attempt to deliver notification to user. "
|
3815 |
+
"Notification will be discarded after period expiration."
|
3816 |
msgstr ""
|
3817 |
|
3818 |
+
msgid "Save settings"
|
|
|
|
|
3819 |
msgstr ""
|
3820 |
|
3821 |
+
msgid "Test email notifications"
|
|
|
3822 |
msgstr ""
|
|
|
|
|
3823 |
|
3824 |
+
msgid "To email"
|
3825 |
+
msgstr "All'indirizzo e-mail"
|
3826 |
|
3827 |
+
msgid "Notification templates"
|
3828 |
+
msgstr "Modelli per le notifiche"
|
3829 |
|
3830 |
+
msgid "All templates"
|
3831 |
+
msgstr "Tutti i modelli"
|
|
|
3832 |
|
3833 |
+
msgid "Send"
|
3834 |
+
msgstr "Inviare"
|
|
|
|
|
3835 |
|
3836 |
+
msgid "Email notifications"
|
|
|
|
|
3837 |
msgstr ""
|
3838 |
|
3839 |
+
msgid "Sender name"
|
3840 |
+
msgstr "Nome del mittente"
|
|
|
|
|
|
|
3841 |
|
3842 |
+
msgid "Sender email"
|
3843 |
+
msgstr "eMail del mittente"
|
3844 |
|
3845 |
+
msgid "Send emails as"
|
3846 |
+
msgstr "Inviare email come"
|
3847 |
|
3848 |
+
msgid ""
|
3849 |
+
"HTML allows formatting, colors, fonts, positioning, etc. With Text you must "
|
3850 |
+
"use Text mode of rich-text editors below. On some servers only text emails "
|
3851 |
+
"are sent successfully."
|
3852 |
msgstr ""
|
3853 |
+
"HTML consente la formattazione, i colori, i font, posizionamento, ecc Con "
|
3854 |
+
"testo è necessario utilizzare la modalità Testo di editor rich-text di "
|
3855 |
+
"seguito. Su alcuni server solo i messaggi di posta elettronica di testo "
|
3856 |
+
"vengono inviati correttamente."
|
3857 |
|
3858 |
+
msgid "HTML"
|
3859 |
+
msgstr "HTML"
|
3860 |
+
|
3861 |
+
msgid "Reply directly to customers"
|
3862 |
+
msgstr "Rispondi direttamente ai clienti"
|
3863 |
|
3864 |
msgid ""
|
3865 |
+
"If this option is enabled then the email address of the customer is used as "
|
3866 |
+
"a sender email address for notifications sent to staff members and "
|
3867 |
+
"administrators."
|
3868 |
msgstr ""
|
3869 |
+
"Se questa opzione è abilitata, l'indirizzo di posta elettronica del cliente "
|
3870 |
+
"viene utilizzato come indirizzo di posta elettronica del mittente per le "
|
3871 |
+
"notifiche inviate ai membri del personale e gli amministratori."
|
3872 |
|
3873 |
+
msgid "Sent successfully."
|
3874 |
+
msgstr "Inviato con successo."
|
3875 |
|
3876 |
+
msgid "Default value for category select"
|
3877 |
+
msgstr "Valore predefinito per la selezione delle categorie"
|
3878 |
|
3879 |
+
msgid "Default value for service select"
|
3880 |
+
msgstr "Valore predefinito per la selezione dei servizi"
|
3881 |
|
3882 |
+
msgid ""
|
3883 |
+
"Please be aware that a value in this field is required in the frontend. If "
|
3884 |
+
"you choose to hide this field, please be sure to select a default value for "
|
3885 |
+
"it"
|
3886 |
msgstr ""
|
3887 |
+
"Attenzione, nel frontend questo campo è richiesto. Se decidi di nasconderlo, "
|
3888 |
+
"assicurati di indicare il valore predefinito"
|
3889 |
|
3890 |
+
msgid "Default value for employee select"
|
3891 |
+
msgstr "Valore predefinito per la selezione degli impiegati"
|
3892 |
|
3893 |
+
msgid "Week days"
|
3894 |
+
msgstr "Giorni della settimana"
|
3895 |
|
3896 |
+
msgid "Time range"
|
3897 |
+
msgstr "Intervallo di tempo"
|
3898 |
|
3899 |
+
msgid "Add Bookly booking form"
|
3900 |
+
msgstr "Aggiungi un form Bookly"
|
3901 |
|
3902 |
+
msgid "Insert Appointment Booking Form"
|
3903 |
+
msgstr "Inserisci un form Prenotazioni"
|
3904 |
|
3905 |
+
msgid "Send tax information"
|
3906 |
msgstr ""
|
3907 |
|
3908 |
+
msgid "Price correction"
|
|
|
|
|
3909 |
msgstr ""
|
3910 |
|
3911 |
+
msgid "Increase/Discount (%)"
|
|
|
|
|
|
|
3912 |
msgstr ""
|
3913 |
|
3914 |
+
msgid "Addition/Deduction"
|
|
|
|
|
|
|
|
|
3915 |
msgstr ""
|
3916 |
|
3917 |
+
msgid ""
|
3918 |
+
"This setting affects the cost of the booking according to the payment "
|
3919 |
+
"gateway used. Specify a percentage or fixed amount. Use minus (\"-\") sign "
|
3920 |
+
"for decrease/discount."
|
3921 |
msgstr ""
|
3922 |
|
3923 |
+
msgid "Enter a value"
|
3924 |
+
msgstr "Inserisci un valore"
|
3925 |
|
3926 |
+
msgid "Copy to clipboard"
|
|
|
3927 |
msgstr ""
|
3928 |
|
3929 |
+
msgid "copied"
|
3930 |
msgstr ""
|
3931 |
|
3932 |
+
msgid "Setup your country"
|
3933 |
+
msgstr ""
|
3934 |
|
3935 |
msgid ""
|
3936 |
+
"Please spend a minute to setup your country. This will help us provide you "
|
3937 |
+
"with appropriate payment methods when replenishing your account."
|
3938 |
msgstr ""
|
3939 |
|
3940 |
+
msgid ""
|
3941 |
+
"The country will also be displayed in the invoice on a separate line below "
|
3942 |
+
"the company address. Make sure the other fields in the invoice do not "
|
3943 |
+
"contain the name of the country."
|
3944 |
msgstr ""
|
3945 |
|
3946 |
+
msgid ""
|
3947 |
+
"Your country is the location from where you consume Bookly SMS services and "
|
3948 |
+
"is used to provide you with the payment methods available in that country"
|
3949 |
msgstr ""
|
3950 |
|
3951 |
+
msgid "Set country"
|
|
|
|
|
|
|
3952 |
msgstr ""
|
3953 |
|
3954 |
+
msgid "I'll do it later"
|
|
|
|
|
|
|
|
|
|
|
3955 |
msgstr ""
|
3956 |
|
3957 |
+
msgid "Log out"
|
3958 |
+
msgstr "Uscire"
|
3959 |
|
3960 |
+
msgid "Register"
|
3961 |
+
msgstr "Registrare"
|
3962 |
|
3963 |
+
msgid "Log In"
|
3964 |
+
msgstr "Login"
|
3965 |
|
3966 |
+
msgid "Registration"
|
3967 |
+
msgstr "Registrazione"
|
3968 |
+
|
3969 |
+
msgid "Forgot password"
|
3970 |
+
msgstr "Password dimenticata"
|
3971 |
|
3972 |
+
msgid "Password"
|
3973 |
+
msgstr "Password"
|
3974 |
+
|
3975 |
+
msgid "Repeat password"
|
3976 |
+
msgstr "Ripeti la password"
|
3977 |
|
3978 |
#, php-format
|
3979 |
+
msgid ""
|
3980 |
+
"I accept <a href=\"%1$s\" target=\"_blank\">Service Terms</a> and <a "
|
3981 |
+
"href=\"%2$s\" target=\"_blank\">Privacy Policy</a>"
|
3982 |
msgstr ""
|
3983 |
|
3984 |
+
msgid "Enter code from email"
|
3985 |
+
msgstr "Inserisci il codice da e-mail"
|
3986 |
|
3987 |
+
msgid "Thank you for registration."
|
3988 |
+
msgstr ""
|
3989 |
|
3990 |
+
msgid "You're almost ready to get started with Bookly SMS Service."
|
3991 |
msgstr ""
|
|
|
|
|
3992 |
|
3993 |
+
msgid ""
|
3994 |
+
"An email containing the confirmation code has been sent to your email "
|
3995 |
+
"address."
|
3996 |
+
msgstr ""
|
3997 |
|
3998 |
+
msgid "To complete registration, please enter the confirmation code below."
|
3999 |
+
msgstr ""
|
4000 |
|
4001 |
+
msgid "Confirmation code"
|
4002 |
msgstr ""
|
|
|
4003 |
|
4004 |
+
msgid "Didn't receive the email?"
|
4005 |
msgstr ""
|
4006 |
|
4007 |
+
msgid "Check your spam folder."
|
4008 |
msgstr ""
|
4009 |
|
4010 |
+
#, php-format
|
4011 |
+
msgid "Click %s here %s to resend the email."
|
4012 |
+
msgstr ""
|
4013 |
|
4014 |
+
msgid "Please accept terms and conditions."
|
4015 |
+
msgstr "Si prega di accettare i termini e le condizioni."
|
4016 |
|
4017 |
+
msgid "Thank you"
|
4018 |
msgstr ""
|
4019 |
|
4020 |
+
msgid "Your payment has been accepted for processing"
|
4021 |
+
msgstr "Il pagamento è stato accettato per l'elaborazione"
|
4022 |
|
4023 |
+
msgid "Back to the list of amounts"
|
4024 |
msgstr ""
|
4025 |
|
4026 |
+
msgid "Please select a payment method"
|
4027 |
msgstr ""
|
4028 |
|
4029 |
+
msgid "Credit card"
|
|
|
|
|
|
|
|
|
|
|
|
|
4030 |
msgstr ""
|
4031 |
|
4032 |
+
msgid "Account recharge"
|
4033 |
msgstr ""
|
4034 |
|
4035 |
+
msgid "Oops"
|
4036 |
msgstr ""
|
4037 |
|
4038 |
+
msgid "Your payment has been cancelled"
|
4039 |
msgstr ""
|
4040 |
|
4041 |
+
msgid "Please select an amount and recharge your account"
|
4042 |
msgstr ""
|
4043 |
|
4044 |
+
msgid "Pay using"
|
4045 |
msgstr ""
|
4046 |
|
4047 |
+
msgid "Continue with"
|
4048 |
msgstr ""
|
4049 |
|
4050 |
+
msgid "Auto-Recharge has been enabled"
|
4051 |
msgstr ""
|
4052 |
|
4053 |
+
msgid "Auto-Recharge has been cancelled"
|
4054 |
msgstr ""
|
4055 |
|
4056 |
+
msgid "current<br/>balance"
|
|
|
|
|
4057 |
msgstr ""
|
4058 |
|
4059 |
+
msgid "Recharge"
|
4060 |
+
msgstr ""
|
4061 |
|
4062 |
+
msgid "Other options"
|
4063 |
msgstr ""
|
4064 |
|
4065 |
+
msgid "Best offer"
|
4066 |
msgstr ""
|
4067 |
|
4068 |
+
msgid "Users choice"
|
4069 |
msgstr ""
|
4070 |
|
4071 |
+
msgid "Buy now"
|
4072 |
msgstr ""
|
4073 |
|
4074 |
+
msgid "Select amount of Auto-Recharge"
|
4075 |
msgstr ""
|
4076 |
|
4077 |
+
msgid "Enable"
|
4078 |
msgstr ""
|
4079 |
|
4080 |
+
msgid "Disable Auto-Recharge"
|
4081 |
+
msgstr "Disabilitare Auto-ricarica"
|
4082 |
+
|
4083 |
+
msgid "Are you sure you want to disable Auto-Recharge?"
|
4084 |
msgstr ""
|
4085 |
|
4086 |
+
msgid "Turn on Auto-Recharge and get even more"
|
4087 |
msgstr ""
|
4088 |
|
4089 |
+
msgid "Auto-Recharge disabled"
|
4090 |
+
msgstr "Auto-ricarica disattivata"
|
4091 |
+
|
4092 |
+
#, php-format
|
4093 |
+
msgid "Can't disable Auto-Recharge, please contact us at %s"
|
4094 |
msgstr ""
|
4095 |
|
4096 |
+
msgid "Auto-Recharge has failed, please replenish your balance directly."
|
4097 |
msgstr ""
|
4098 |
+
"L'Auto-ricarica è fallita, si prega di ricostituire il saldo direttamente."
|
4099 |
|
4100 |
+
msgid "Card payment has failed, please use another payment option"
|
4101 |
msgstr ""
|
4102 |
|
4103 |
+
msgid "Payment has failed, please use another payment option"
|
4104 |
msgstr ""
|
4105 |
|
4106 |
+
#, php-format
|
4107 |
+
msgid ""
|
4108 |
+
"Start typing \"{\" to see the available codes. For more information, see the "
|
4109 |
+
"<a href=\"%s\" target=\"_blank\">documentation</a> page"
|
4110 |
+
msgstr ""
|
4111 |
+
|
4112 |
+
msgid "Add"
|
4113 |
msgstr ""
|
4114 |
|
4115 |
+
msgid "Reset"
|
4116 |
+
msgstr "Reset"
|
4117 |
+
|
4118 |
msgid "Notification settings"
|
4119 |
msgstr ""
|
4120 |
|
4132 |
msgid "Client"
|
4133 |
msgstr "Cliente"
|
4134 |
|
|
|
|
|
|
|
4135 |
msgid "Administrators"
|
4136 |
msgstr ""
|
4137 |
|
4138 |
msgid "Choose who will receive this notification."
|
4139 |
msgstr ""
|
4140 |
|
4141 |
+
msgid "Instant notifications"
|
4142 |
+
msgstr ""
|
4143 |
+
|
4144 |
+
msgid "Scheduled notifications (require cron setup)"
|
4145 |
+
msgstr ""
|
4146 |
+
|
4147 |
+
msgid "Select the type of event at which the notification is sent."
|
4148 |
+
msgstr ""
|
4149 |
+
|
4150 |
+
msgid ""
|
4151 |
+
"This notification is sent once for a booking made by a customer and includes "
|
4152 |
+
"all cart items."
|
4153 |
+
msgstr ""
|
4154 |
+
|
4155 |
+
msgid "Save notification"
|
4156 |
+
msgstr ""
|
4157 |
+
|
4158 |
+
msgid "Codes"
|
4159 |
+
msgstr "Codici"
|
4160 |
+
|
4161 |
+
msgid "Appointment status"
|
4162 |
+
msgstr ""
|
4163 |
+
|
4164 |
msgid ""
|
4165 |
"Select what status an appointment should have for the notification to be "
|
4166 |
"sent."
|
4182 |
msgid "on the same day"
|
4183 |
msgstr ""
|
4184 |
|
4185 |
+
msgid "Body"
|
|
|
|
|
|
|
|
|
|
|
|
|
4186 |
msgstr ""
|
4187 |
|
4188 |
+
msgid "Sms"
|
4189 |
msgstr ""
|
4190 |
|
4191 |
+
msgid "New sms notification"
|
4192 |
msgstr ""
|
4193 |
|
4194 |
+
msgid "Edit sms notification"
|
4195 |
msgstr ""
|
4196 |
|
4197 |
+
msgid "Create notification"
|
4198 |
+
msgstr ""
|
4199 |
|
4200 |
+
msgid "New notification"
|
4201 |
+
msgstr ""
|
4202 |
|
4203 |
msgid "Select from WP users"
|
4204 |
msgstr "Seleziona da utenti WP"
|
4224 |
"If you leave this field blank, this staff member will not be able to access "
|
4225 |
"personal calendar using WP backend."
|
4226 |
msgstr ""
|
4227 |
+
"Se lasci questo campo vuoto, questo membro dello staff non sarà in grado di "
|
4228 |
+
"accedere al calendario personale utilizzando il backend di WordPress."
|
4229 |
+
|
4230 |
+
#, php-format
|
4231 |
+
msgid "This text can be inserted into notifications with %s code."
|
4232 |
+
msgstr "Questo testo può essere inserito in notifiche con %s codice."
|
4233 |
+
|
4234 |
+
msgid "Archive"
|
4235 |
+
msgstr ""
|
4236 |
+
|
4237 |
+
msgid ""
|
4238 |
+
"To make staff member invisible to your customers set the visibility to "
|
4239 |
+
"\"Private\"."
|
4240 |
+
msgstr ""
|
4241 |
+
"Per rendere membro del personale invisibile ai vostri clienti impostare la "
|
4242 |
+
"visibilità su \"Private\"."
|
4243 |
+
|
4244 |
+
msgid "No services found. Please add services."
|
4245 |
+
msgstr "Nessun servizio trovato. Per favore aggiungi un servizio."
|
4246 |
+
|
4247 |
+
msgid "Add Service"
|
4248 |
+
msgstr "Aggiungi Servizio"
|
4249 |
+
|
4250 |
+
msgid "Days Off"
|
4251 |
+
msgstr ""
|
4252 |
+
|
4253 |
+
msgid "The date has already passed."
|
4254 |
+
msgstr ""
|
4255 |
+
|
4256 |
+
msgid "Create staff"
|
4257 |
+
msgstr ""
|
4258 |
+
|
4259 |
+
msgid "Edit staff"
|
4260 |
+
msgstr ""
|
4261 |
+
|
4262 |
+
msgid "The start time must be less than the end one"
|
4263 |
+
msgstr "L'orario iniziale deve essere precedente l'orario finale"
|
4264 |
+
|
4265 |
+
msgid "Error adding the break interval"
|
4266 |
+
msgstr "Errore nell'aggiunta di un intervallo"
|
4267 |
+
|
4268 |
+
msgid "Adjust the order of staff members in your booking form"
|
4269 |
+
msgstr ""
|
4270 |
+
|
4271 |
+
msgid "Complete payment"
|
4272 |
+
msgstr "Completare il pagamento"
|
4273 |
+
|
4274 |
+
msgid "Bind payment"
|
4275 |
+
msgstr ""
|
4276 |
+
|
4277 |
+
msgid "Payment is not found."
|
4278 |
+
msgstr ""
|
4279 |
+
|
4280 |
+
msgid "-- Select a service --"
|
4281 |
+
msgstr "-- Seleziona un servizio --"
|
4282 |
+
|
4283 |
+
msgid "Period"
|
4284 |
+
msgstr "Fascia oraria"
|
4285 |
+
|
4286 |
+
msgid "Selected period doesn't match service duration"
|
4287 |
+
msgstr ""
|
4288 |
+
"Il periodo selezionato non corrisponde alla durata predefinita del servizio "
|
4289 |
+
"scelto"
|
4290 |
+
|
4291 |
+
msgid "Selected period doesn't match provider's schedule"
|
4292 |
+
msgstr "Il periodo selezionato non corrisponde all'orario stabilito"
|
4293 |
+
|
4294 |
+
msgid "Selected period doesn't match service schedule"
|
4295 |
+
msgstr ""
|
4296 |
+
"Il periodo selezionato non corrisponde alla pianificazione del servizio"
|
4297 |
+
|
4298 |
+
msgid "The selected period is occupied by another appointment"
|
4299 |
+
msgstr "Il periodo selezionato è occupato da un altro appuntamento"
|
4300 |
+
|
4301 |
+
msgid "Booking exceeds the working hours limit for staff member"
|
4302 |
+
msgstr ""
|
4303 |
|
4304 |
+
msgid "Booking exceeds your working hours limit"
|
4305 |
msgstr ""
|
4306 |
|
4307 |
+
msgid "Selected / maximum"
|
4308 |
+
msgstr "Selezionato / massimo"
|
4309 |
+
|
4310 |
+
msgid "Minimum capacity"
|
4311 |
+
msgstr "Capacità minima"
|
4312 |
+
|
4313 |
+
msgid "Edit booking details"
|
4314 |
+
msgstr "Modifica i dettagli della prenotazione"
|
4315 |
+
|
4316 |
+
msgid "Package schedule"
|
4317 |
msgstr ""
|
|
|
|
|
4318 |
|
4319 |
+
msgid "View series"
|
4320 |
msgstr ""
|
4321 |
|
4322 |
+
msgid "Remove customer"
|
4323 |
+
msgstr "Rimuovi cliente"
|
4324 |
+
|
4325 |
+
msgid "-- Search customers --"
|
4326 |
+
msgstr "-- Cerca clienti --"
|
4327 |
+
|
4328 |
+
msgid "Send if new or status changed"
|
4329 |
msgstr ""
|
4330 |
|
4331 |
+
msgid "Send as for new"
|
4332 |
msgstr ""
|
4333 |
|
4334 |
msgid ""
|
4335 |
+
"If you have added a new customer to this appointment or changed the "
|
4336 |
+
"appointment status for an existing customer, and for these records you want "
|
4337 |
+
"the corresponding email or SMS notifications to be sent to their recipients, "
|
4338 |
+
"select the \"Send if new or status changed\" option before clicking Send. "
|
4339 |
+
"You can also send notifications as if all customers were added as new by "
|
4340 |
+
"selecting \"Send as for new\"."
|
4341 |
msgstr ""
|
4342 |
|
4343 |
+
msgid "Edit appointment"
|
4344 |
+
msgstr "Modifica appuntamento"
|
4345 |
+
|
4346 |
+
msgid "Start time must not be empty"
|
4347 |
+
msgstr "L'ora di inizio non può essere vuota"
|
4348 |
+
|
4349 |
+
msgid "End time must not be empty"
|
4350 |
+
msgstr "L'ora di fine non può essere vuota"
|
4351 |
+
|
4352 |
+
msgid "End time must not be equal to start time"
|
4353 |
+
msgstr "L'ora finale non deve essere uguale all'ora di inizio"
|
4354 |
+
|
4355 |
+
#, php-format
|
4356 |
+
msgid "The number of customers should not be more than %d"
|
4357 |
+
msgstr "Il numero dei clienti dovrebbe essere non maggiore di %d"
|
4358 |
+
|
4359 |
+
msgid "Could not save appointment in database."
|
4360 |
+
msgstr "Impossibile salvare appuntamento in banca dati."
|
4361 |
+
|
4362 |
+
#, php-format
|
4363 |
+
msgid "%s has reached the limit of bookings for this service"
|
4364 |
msgstr ""
|
4365 |
|
4366 |
+
msgid ""
|
4367 |
+
"You are going to delete appointment(s). Notifications will be sent in "
|
4368 |
+
"accordance with your settings."
|
4369 |
msgstr ""
|
4370 |
|
4371 |
+
msgid "New Customer"
|
4372 |
+
msgstr "Nuovo cliente"
|
4373 |
+
|
4374 |
msgid "Delete customers"
|
4375 |
msgstr "Elimina i clienti"
|
4376 |
|
4388 |
msgid "Delete customers' WordPress accounts if there are any"
|
4389 |
msgstr ""
|
4390 |
|
4391 |
+
msgid "Deleted Customer"
|
|
|
|
|
|
|
|
|
|
|
4392 |
msgstr ""
|
4393 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4394 |
msgid ""
|
4395 |
+
"You are going to delete item which is involved in upcoming appointments. All "
|
4396 |
+
"related appointments will be deleted. Please double check and edit "
|
4397 |
+
"appointments before this item deletion if needed."
|
4398 |
msgstr ""
|
4399 |
|
4400 |
+
msgid "Edit appointments"
|
|
|
|
|
|
|
4401 |
msgstr ""
|
4402 |
|
4403 |
+
msgid "All unsaved changes will be lost."
|
|
|
|
|
|
|
4404 |
msgstr ""
|
4405 |
|
4406 |
+
msgid "Don't save"
|
4407 |
msgstr ""
|
4408 |
|
4409 |
+
msgid "Create service"
|
4410 |
msgstr ""
|
4411 |
|
4412 |
+
msgid "Color"
|
4413 |
+
msgstr "Colore"
|
4414 |
|
4415 |
+
msgid "Providers"
|
4416 |
+
msgstr "Provider"
|
4417 |
|
4418 |
+
msgid "Start and end times of the appointment"
|
4419 |
msgstr ""
|
4420 |
|
4421 |
+
msgid ""
|
4422 |
+
"Allows to set the start and end times for an appointment for services with "
|
4423 |
+
"the duration of 1 day or longer. This time will be displayed in "
|
4424 |
+
"notifications to customers, backend calendar and codes for booking form."
|
4425 |
msgstr ""
|
4426 |
|
4427 |
+
msgid "Slot length as service duration"
|
|
|
4428 |
msgstr ""
|
4429 |
|
4430 |
+
msgid ""
|
4431 |
+
"The time interval which is used as a step when building all time slots for "
|
4432 |
+
"the service at the Time step. The setting overrides global settings in "
|
4433 |
+
"Settings > General. Use Default to apply global settings."
|
4434 |
msgstr ""
|
4435 |
|
4436 |
+
msgid "Edit service"
|
4437 |
msgstr ""
|
4438 |
|
4439 |
+
msgid "Adjust the order of services in your booking form"
|
|
|
|
|
4440 |
msgstr ""
|
4441 |
|
4442 |
+
msgid "Add category"
|
|
|
|
|
|
|
4443 |
msgstr ""
|
4444 |
|
4445 |
+
msgid "Adjust the order of categories in your booking form"
|
4446 |
msgstr ""
|
4447 |
|
4448 |
+
msgid "Table settings"
|
|
|
|
|
|
|
4449 |
msgstr ""
|
|
|
4450 |
|
4451 |
+
msgid "Column"
|
4452 |
msgstr ""
|
4453 |
|
4454 |
+
msgid "Attach ICS file"
|
4455 |
msgstr ""
|
4456 |
|
4457 |
+
msgid "New email notification"
|
4458 |
msgstr ""
|
4459 |
|
4460 |
+
msgid "Edit email notification"
|
|
|
|
|
|
|
4461 |
msgstr ""
|
4462 |
|
4463 |
+
msgid "Loop over appointments list"
|
4464 |
msgstr ""
|
4465 |
|
4466 |
+
msgid "Loop over appointments list with delimiter"
|
4467 |
msgstr ""
|
4468 |
|
4469 |
+
msgid "Service name of appointment"
|
4470 |
msgstr ""
|
4471 |
|
4472 |
+
msgid "Service category name of appointment"
|
4473 |
msgstr ""
|
4474 |
|
4475 |
+
msgid "Service duration of appointment"
|
4476 |
msgstr ""
|
4477 |
|
4478 |
+
msgid "Service price of appointment"
|
4479 |
msgstr ""
|
4480 |
|
4481 |
+
msgid "Staff member full name in appointment"
|
4482 |
msgstr ""
|
4483 |
|
4484 |
+
msgid "Total quantity of appointments in cart"
|
4485 |
msgstr ""
|
4486 |
|
4487 |
+
msgid "Login form"
|
4488 |
msgstr ""
|
4489 |
|
4490 |
+
msgid "Info of staff member"
|
|
|
|
|
|
|
|
|
4491 |
msgstr ""
|
4492 |
|
4493 |
+
msgid "Full name of staff member"
|
4494 |
msgstr ""
|
4495 |
|
4496 |
+
msgid "Photo of staff member"
|
4497 |
msgstr ""
|
4498 |
|
4499 |
+
msgid "Total price of booking"
|
4500 |
msgstr ""
|
4501 |
|
4502 |
+
msgid ""
|
4503 |
+
"Could you please do me a BIG favor and give it a 5-star rating on WordPress?"
|
|
|
|
|
4504 |
msgstr ""
|
4505 |
|
4506 |
+
msgid "Just to help us spread the word and boost our motivation."
|
4507 |
msgstr ""
|
4508 |
|
4509 |
+
msgid "Ok, you deserve it"
|
4510 |
msgstr ""
|
4511 |
|
4512 |
+
msgid "Nope, maybe later"
|
4513 |
msgstr ""
|
4514 |
|
4515 |
+
msgid "Thank you for the {star} star rating!!!"
|
4516 |
msgstr ""
|
4517 |
|
4518 |
+
msgid "You asked to remind you"
|
4519 |
msgstr ""
|
4520 |
|
4521 |
+
msgid "Congratulations!!!"
|
4522 |
msgstr ""
|
4523 |
|
4524 |
+
msgid "You just made the <b>10th Sale</b> using Bookly Plugin!"
|
4525 |
msgstr ""
|
4526 |
|
4527 |
+
msgid "You just made the <b>100th Sale</b> using Bookly Plugin!"
|
4528 |
msgstr ""
|
4529 |
|
4530 |
+
msgid "You just made the <b>1000th Sale</b> using Bookly Plugin!"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4531 |
msgstr ""
|
|
|
|
|
4532 |
|
4533 |
+
msgid "You just made the <b>10000th Sale</b> using Bookly Plugin!"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4534 |
msgstr ""
|
4535 |
|
4536 |
+
msgid ""
|
4537 |
+
"To help us improve Bookly, the plugin anonymously collects usage information."
|
4538 |
+
" You can opt out of sharing the information in Settings > General."
|
4539 |
+
msgstr ""
|
4540 |
|
4541 |
+
msgid ""
|
4542 |
+
"Let the plugin anonymously collect usage information to help Bookly team "
|
4543 |
+
"improve the product."
|
4544 |
msgstr ""
|
4545 |
|
4546 |
+
msgid "Agree"
|
4547 |
msgstr ""
|
4548 |
|
4549 |
+
msgid "Disagree"
|
|
|
|
|
|
|
4550 |
msgstr ""
|
4551 |
|
4552 |
#, php-format
|
4553 |
msgid ""
|
4554 |
+
"<b>Bookly Lite rebrands into Bookly with more features available.</b><br/>"
|
4555 |
+
"<br/>We have changed the architecture of Bookly Lite and Bookly to optimize "
|
4556 |
+
"the development of both plugin versions and add more features to the new "
|
4557 |
+
"free Bookly. To learn more about the major Bookly update, check our <a "
|
4558 |
+
"href=\"%s\" target=\"_blank\">blog post</a>."
|
4559 |
msgstr ""
|
4560 |
|
4561 |
#, php-format
|
4562 |
+
msgid "Recharge your account balance and get up to %s extra."
|
4563 |
+
msgstr ""
|
4564 |
+
|
4565 |
msgid ""
|
4566 |
+
"Take advantage of Bookly Cloud products which increase customers' loyalty "
|
4567 |
+
"and involvement."
|
|
|
4568 |
msgstr ""
|
4569 |
|
4570 |
#, php-format
|
4571 |
+
msgid "Enable Auto-Recharge and get up to %s extra."
|
|
|
|
|
4572 |
msgstr ""
|
4573 |
|
4574 |
+
msgid "Let Bookly Cloud products continuously work without interruptions."
|
|
|
|
|
4575 |
msgstr ""
|
4576 |
|
4577 |
+
msgid "Remind me later"
|
4578 |
msgstr ""
|
4579 |
|
4580 |
+
msgid "This function is not available in the Bookly."
|
4581 |
msgstr ""
|
4582 |
|
|
|
4583 |
msgid ""
|
4584 |
+
"To get access to all Bookly features, lifetime free updates and 24/7 support,"
|
4585 |
+
" please upgrade to the Pro version of Bookly.<br>For more information visit"
|
|
|
4586 |
msgstr ""
|
4587 |
|
4588 |
+
msgid "Subscribe to monthly emails about Bookly improvements and new releases."
|
4589 |
+
msgstr ""
|
4590 |
+
"Iscriviti alle e-mail mensili circa miglioramenti Bookly e nuove uscite."
|
4591 |
+
|
4592 |
msgid ""
|
4593 |
+
"Allow the plugin to set a Powered by Bookly notice on the booking widget to "
|
4594 |
+
"spread information about the plugin. This will allow the team to improve the "
|
4595 |
+
"product and enhance its functionality."
|
4596 |
msgstr ""
|
4597 |
|
|
|
4598 |
msgid ""
|
4599 |
+
"How likely is it that you would recommend Bookly to a friend or colleague?"
|
|
|
|
|
4600 |
msgstr ""
|
4601 |
+
"Quante probabilità ci sono che si dovrebbe raccomandare Bookly ad un amico o "
|
4602 |
+
"un collega?"
|
4603 |
|
4604 |
+
msgid "What do you think should be improved?"
|
4605 |
+
msgstr "Cosa pensi dovrebbe essere migliorato?"
|
4606 |
+
|
4607 |
+
msgid "Please enter your email (optional)"
|
4608 |
+
msgstr "Inserisci il tuo e-mail (facoltativo)"
|
4609 |
+
|
4610 |
+
msgid "Please, check your email to confirm the subscription. Thank you!"
|
4611 |
msgstr ""
|
4612 |
|
4613 |
+
msgid "Given email address is already subscribed, thank you!"
|
4614 |
msgstr ""
|
4615 |
|
4616 |
+
msgid "This email address is not valid."
|
4617 |
msgstr ""
|
4618 |
|
4619 |
+
msgid "Revenue"
|
4620 |
msgstr ""
|
4621 |
|
4622 |
+
msgid "Approved appointments"
|
4623 |
msgstr ""
|
4624 |
|
4625 |
+
msgid "Pending appointments"
|
4626 |
msgstr ""
|
4627 |
|
4628 |
+
msgid "All fields marked with an asterisk (*) are required."
|
4629 |
+
msgstr "Tutti i campi contrassegnati con un asterisco (*) sono obbligatori."
|
4630 |
+
|
4631 |
+
msgid "Error sending support request."
|
4632 |
+
msgstr "Errore durante l'invio richiesta di supporto."
|
4633 |
+
|
4634 |
+
msgid "Show all notifications"
|
4635 |
+
msgstr "Mostra tutte le notifiche"
|
4636 |
+
|
4637 |
+
msgid "Mark all notifications as read"
|
4638 |
+
msgstr "Segna tutte le notifiche come lette"
|
4639 |
+
|
4640 |
+
msgid "View this page at Bookly Pro Demo"
|
4641 |
msgstr ""
|
4642 |
|
4643 |
+
msgid "Visit demo"
|
4644 |
msgstr ""
|
4645 |
|
4646 |
msgid ""
|
4647 |
+
"The demo is a version of Bookly Pro with all installed add-ons so that you "
|
4648 |
+
"can try all the features and capabilities of the system and then choose the "
|
4649 |
+
"most suitable configuration according to your business needs."
|
4650 |
msgstr ""
|
4651 |
|
4652 |
+
msgid "don't show this notification again"
|
4653 |
msgstr ""
|
4654 |
|
4655 |
+
msgid "Proceed to demo"
|
4656 |
msgstr ""
|
4657 |
|
4658 |
+
msgid "Documentation"
|
4659 |
+
msgstr "Documentazione"
|
4660 |
+
|
4661 |
+
msgid "Contact us"
|
4662 |
msgstr ""
|
4663 |
|
4664 |
+
msgid "Need help? Contact us here."
|
4665 |
+
msgstr "Ho bisogno di aiuto? Contattaci qui."
|
4666 |
+
|
4667 |
+
msgid "Leave us a message"
|
4668 |
+
msgstr "Ci lascia un messaggio"
|
4669 |
+
|
4670 |
+
msgid "Your name"
|
4671 |
+
msgstr "Il tuo nome"
|
4672 |
+
|
4673 |
+
msgid "Email address"
|
4674 |
+
msgstr "Indirizzo e-mail"
|
4675 |
+
|
4676 |
+
msgid "How can we help you?"
|
4677 |
+
msgstr "Come possiamo aiutarti?"
|
4678 |
+
|
4679 |
+
msgid "Feature requests"
|
4680 |
msgstr ""
|
4681 |
|
4682 |
+
msgid ""
|
4683 |
+
"In the Feature Requests section of our Community, you can make suggestions "
|
4684 |
+
"about what you'd like to see in our future releases."
|
4685 |
msgstr ""
|
4686 |
|
4687 |
+
msgid ""
|
4688 |
+
"Before you post, please check if the same suggestion has already been made. "
|
4689 |
+
"If so, vote for ideas you like and add a comment with the details about your "
|
4690 |
+
"situation."
|
4691 |
msgstr ""
|
4692 |
|
4693 |
msgid ""
|
4694 |
+
"It's much easier for us to address a suggestion if we clearly understand the "
|
4695 |
+
"context of the issue, the problem, and why it matters to you. When "
|
4696 |
+
"commenting or posting, please consider these questions so we can get a "
|
4697 |
+
"better idea of the problem you're facing:"
|
4698 |
msgstr ""
|
4699 |
|
4700 |
+
msgid "What is the issue you're struggling with?"
|
4701 |
msgstr ""
|
4702 |
|
4703 |
+
msgid "Where in your workflow do you encounter this issue?"
|
4704 |
msgstr ""
|
4705 |
|
4706 |
+
msgid ""
|
4707 |
+
"Is this something that impacts just you, your whole team, or your customers?"
|
4708 |
msgstr ""
|
4709 |
|
4710 |
+
msgid "Proceed to Feature requests"
|
4711 |
msgstr ""
|
4712 |
|
4713 |
+
msgid "Feedback"
|
4714 |
+
msgstr "Feedback"
|
4715 |
+
|
4716 |
+
msgid ""
|
4717 |
+
"We care about your experience of using Bookly!<br/>Leave a review and tell "
|
4718 |
+
"others what you think."
|
4719 |
msgstr ""
|
4720 |
|
4721 |
+
msgid "Booking form"
|
4722 |
msgstr ""
|
4723 |
|
4724 |
+
msgid "A custom block for displaying booking form"
|
|
|
|
|
|
|
4725 |
msgstr ""
|
4726 |
|
4727 |
+
msgid "Select location"
|
4728 |
msgstr ""
|
4729 |
|
4730 |
+
msgid "Form fields"
|
|
|
|
|
|
|
4731 |
msgstr ""
|
4732 |
|
4733 |
+
msgid "Default value for location"
|
|
|
|
|
4734 |
msgstr ""
|
4735 |
|
4736 |
+
msgid "Default value for category"
|
4737 |
msgstr ""
|
4738 |
|
4739 |
+
msgid "Default value for service"
|
|
|
|
|
4740 |
msgstr ""
|
4741 |
|
4742 |
+
msgid "Default value for employee"
|
4743 |
msgstr ""
|
4744 |
|
4745 |
+
msgid "Quantity"
|
4746 |
msgstr ""
|
4747 |
|
4748 |
+
msgid "hide"
|
4749 |
msgstr ""
|
4750 |
|
4751 |
+
msgid "Username"
|
4752 |
msgstr ""
|
4753 |
|
4754 |
+
msgid "Remember Me"
|
4755 |
msgstr ""
|
4756 |
|
4757 |
+
msgid "Lost your password?"
|
4758 |
msgstr ""
|
4759 |
|
4760 |
+
msgid "Loading..."
|
4761 |
+
msgstr "Caricamento in corso ..."
|
4762 |
+
|
4763 |
+
msgid "Powered by"
|
4764 |
+
msgstr ""
|
4765 |
+
|
4766 |
+
msgid "No time is available for selected criteria."
|
4767 |
+
msgstr "Nessun orario disponibile per i criteri selezionati."
|
4768 |
+
|
4769 |
+
msgid "Data already in use"
|
4770 |
+
msgstr "Dati già in uso"
|
4771 |
+
|
4772 |
+
msgid "Update"
|
4773 |
+
msgstr ""
|
4774 |
+
|
4775 |
+
msgid "Page Redirection"
|
4776 |
+
msgstr "Pagina di re-indirizzamento"
|
4777 |
|
4778 |
#, php-format
|
4779 |
+
msgid ""
|
4780 |
+
"If you are not redirected automatically, follow the <a href=\"%s\">link</a>."
|
4781 |
msgstr ""
|
4782 |
+
"Se non vieni automaticamente re-indirizzato, segui questo <a href=\"%s\">"
|
4783 |
+
"link</a>."
|
4784 |
|
4785 |
+
msgid "Show more"
|
4786 |
+
msgstr "Mostra di più"
|
4787 |
|
4788 |
+
msgid "Session error."
|
4789 |
+
msgstr "Errore di sessione."
|
4790 |
|
4791 |
+
msgid "Form ID error."
|
4792 |
+
msgstr "Errore Form ID."
|
4793 |
+
|
4794 |
+
msgid "Pay locally is not available."
|
4795 |
+
msgstr "Pagare in loco non è disponibile."
|
4796 |
+
|
4797 |
+
msgid "Invalid gateway."
|
4798 |
+
msgstr "Gateway non valido."
|
4799 |
+
|
4800 |
+
msgid "Error."
|
4801 |
msgstr ""
|
4802 |
|
4803 |
+
msgid "Notification to customer about purchased package"
|
4804 |
msgstr ""
|
4805 |
|
4806 |
+
msgid "Your package at {company_name}"
|
|
|
|
|
|
|
4807 |
msgstr ""
|
4808 |
|
4809 |
msgid ""
|
4810 |
+
"Dear {client_name}.\n"
|
4811 |
+
"\n"
|
4812 |
+
"This is a confirmation that you have booked {package_name}.\n"
|
4813 |
+
"We are waiting you at {company_address}.\n"
|
4814 |
+
"\n"
|
4815 |
+
"Thank you for choosing our company.\n"
|
4816 |
+
"\n"
|
4817 |
+
"{company_name}\n"
|
4818 |
+
"{company_phone}\n"
|
4819 |
+
"{company_website}"
|
4820 |
msgstr ""
|
4821 |
|
4822 |
+
msgid "Notification to staff member about purchased package"
|
4823 |
+
msgstr ""
|
4824 |
+
|
4825 |
+
msgid "New package booking"
|
4826 |
msgstr ""
|
4827 |
|
|
|
4828 |
msgid ""
|
4829 |
+
"Hello.\n"
|
4830 |
+
"\n"
|
4831 |
+
"You have new package booking.\n"
|
4832 |
+
"\n"
|
4833 |
+
"Package: {package_name}\n"
|
4834 |
+
"\n"
|
4835 |
+
"Client name: {client_name}\n"
|
4836 |
+
"\n"
|
4837 |
+
"Client phone: {client_phone}\n"
|
4838 |
+
"\n"
|
4839 |
+
"Client email: {client_email}"
|
4840 |
msgstr ""
|
4841 |
|
4842 |
msgid ""
|
4843 |
+
"Dear {client_name}.\n"
|
4844 |
+
"This is a confirmation that you have booked {package_name}.\n"
|
4845 |
+
"We are waiting you at {company_address}.\n"
|
4846 |
+
"Thank you for choosing our company.\n"
|
4847 |
+
"{company_name}\n"
|
4848 |
+
"{company_phone}\n"
|
4849 |
+
"{company_website}"
|
4850 |
msgstr ""
|
4851 |
|
4852 |
msgid ""
|
4853 |
+
"Hello.\n"
|
4854 |
+
"You have new package booking.\n"
|
4855 |
+
"Package: {package_name}\n"
|
4856 |
+
"Client name: {client_name}\n"
|
4857 |
+
"Client phone: {client_phone}\n"
|
4858 |
+
"Client email: {client_email}"
|
4859 |
msgstr ""
|
4860 |
|
4861 |
+
msgid "Notification to customer about package deactivation"
|
|
|
|
|
|
|
|
|
|
|
4862 |
msgstr ""
|
4863 |
|
4864 |
+
msgid "Service package is deactivated"
|
|
|
|
|
4865 |
msgstr ""
|
4866 |
|
4867 |
msgid ""
|
4868 |
+
"Dear {client_name}.\n"
|
4869 |
+
"\n"
|
4870 |
+
"Your package of services {package_name} has been deactivated.\n"
|
4871 |
+
"\n"
|
4872 |
+
"Thank you for choosing our company.\n"
|
4873 |
+
"\n"
|
4874 |
+
"If you have any questions, please contact us.\n"
|
4875 |
+
"{company_name}\n"
|
4876 |
+
"{company_phone}\n"
|
4877 |
+
"{company_website}"
|
4878 |
msgstr ""
|
4879 |
|
4880 |
+
msgid "Notification to staff member about package deactivation"
|
|
|
|
|
|
|
|
|
4881 |
msgstr ""
|
4882 |
|
4883 |
msgid ""
|
4884 |
+
"Hello.\n"
|
4885 |
+
"\n"
|
4886 |
+
"The following Package of services {package_name} has been deactivated.\n"
|
4887 |
+
"\n"
|
4888 |
+
"Client name: {client_name}\n"
|
4889 |
+
"\n"
|
4890 |
+
"Client phone: {client_phone}\n"
|
4891 |
+
"\n"
|
4892 |
+
"Client email: {client_email}"
|
4893 |
msgstr ""
|
4894 |
|
4895 |
+
msgid ""
|
4896 |
+
"Dear {client_name}.\n"
|
4897 |
+
"Your package of services {package_name} has been deactivated.\n"
|
4898 |
+
"Thank you for choosing our company.\n"
|
4899 |
+
"If you have any questions, please contact us.\n"
|
4900 |
+
"{company_name}\n"
|
4901 |
+
"{company_phone}\n"
|
4902 |
+
"{company_website}"
|
4903 |
msgstr ""
|
4904 |
|
4905 |
msgid ""
|
4906 |
+
"Hello.\n"
|
4907 |
+
"The following Package of services {package_name} has been deactivated.\n"
|
4908 |
+
"Client name: {client_name}\n"
|
4909 |
+
"Client phone: {client_phone}\n"
|
4910 |
+
"Client email: {client_email}"
|
4911 |
msgstr ""
|
|
|
|
|
4912 |
|
4913 |
+
msgid "Notification about new package creation"
|
4914 |
msgstr ""
|
4915 |
|
4916 |
+
msgid "Notification about package deletion"
|
4917 |
msgstr ""
|
4918 |
|
4919 |
+
msgid "Creation date"
|
4920 |
msgstr ""
|
4921 |
|
4922 |
+
msgid "Packages"
|
|
|
|
|
4923 |
msgstr ""
|
4924 |
|
4925 |
+
msgid "New package"
|
|
|
|
|
|
|
|
|
4926 |
msgstr ""
|
4927 |
|
4928 |
+
msgid "Unassigned"
|
4929 |
msgstr ""
|
4930 |
|
4931 |
+
msgid "Edit package"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4932 |
msgstr ""
|
4933 |
|
4934 |
+
msgid "No packages for selected period and criteria."
|
4935 |
msgstr ""
|
4936 |
|
4937 |
+
msgid "Name of package"
|
4938 |
msgstr ""
|
4939 |
|
4940 |
+
msgid "Package size"
|
4941 |
msgstr ""
|
4942 |
|
4943 |
+
msgid "Price of package"
|
4944 |
msgstr ""
|
4945 |
|
4946 |
+
msgid "Package life time"
|
|
|
|
|
|
|
4947 |
msgstr ""
|
4948 |
|
4949 |
+
msgid "Reason you mentioned while deleting package"
|
4950 |
msgstr ""
|
4951 |
|
4952 |
+
msgid "Add customer packages list"
|
|
|
|
|
|
|
4953 |
msgstr ""
|
4954 |
|
|
|
|
|
|
|
4955 |
msgid ""
|
4956 |
+
"When you select a package the associated services will also be selected. "
|
4957 |
+
"Disabling the service will disable the package."
|
|
|
4958 |
msgstr ""
|
4959 |
|
|
|
|
|
|
|
4960 |
msgid ""
|
4961 |
+
"Select service provider to see the packages provided. Or select unassigned "
|
4962 |
+
"package to see packages with no particular provider."
|
4963 |
msgstr ""
|
4964 |
|
4965 |
+
msgid "-- Select a package --"
|
4966 |
msgstr ""
|
4967 |
|
4968 |
+
msgid "Please select a package"
|
4969 |
msgstr ""
|
4970 |
|
4971 |
+
msgid "Incorrect location and package combination"
|
4972 |
msgstr ""
|
4973 |
|
4974 |
+
msgid "Please select a customer"
|
|
|
|
|
4975 |
msgstr ""
|
4976 |
|
4977 |
+
msgid "Save & schedule"
|
4978 |
msgstr ""
|
4979 |
|
4980 |
+
msgid "Could not save package in database."
|
4981 |
msgstr ""
|
4982 |
|
4983 |
+
msgid ""
|
4984 |
+
"Selected appointment date exceeds the period when the customer can use a "
|
4985 |
+
"package of services."
|
4986 |
msgstr ""
|
4987 |
|
4988 |
+
msgid "Ignore"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4989 |
msgstr ""
|
4990 |
|
4991 |
+
msgid "Selected period is occupied by another appointment"
|
4992 |
+
msgstr ""
|
|
|
|
|
|
|
4993 |
|
4994 |
+
msgid ""
|
4995 |
+
"Unfortunately, you're not able to book an appointment because the required "
|
4996 |
+
"time limit prior to booking has expired."
|
4997 |
msgstr ""
|
4998 |
|
4999 |
+
msgid ""
|
5000 |
+
"You are trying to schedule an appointment in the past. Please select another "
|
5001 |
+
"time slot."
|
5002 |
msgstr ""
|
5003 |
|
5004 |
+
msgid "Select appointment date"
|
5005 |
msgstr ""
|
5006 |
|
5007 |
+
msgid "Edit package appointment"
|
5008 |
msgstr ""
|
5009 |
|
5010 |
+
msgid "Delete package appointment"
|
5011 |
+
msgstr ""
|
5012 |
|
5013 |
msgid ""
|
5014 |
+
"Enable this setting so that the package can be displayed and available for "
|
5015 |
+
"booking when clients have not specified a particular provider."
|
5016 |
msgstr ""
|
|
|
|
|
5017 |
|
5018 |
+
msgid "Life Time"
|
5019 |
+
msgstr ""
|
5020 |
|
5021 |
+
msgid "The period in days when the customer can use a package of services."
|
5022 |
+
msgstr ""
|
5023 |
|
5024 |
+
msgid "Packages list"
|
5025 |
msgstr ""
|
5026 |
|
5027 |
+
msgid "A custom block for displaying packages list"
|
5028 |
+
msgstr ""
|
5029 |
|
5030 |
+
msgid "Creation Date"
|
5031 |
msgstr ""
|
5032 |
|
5033 |
+
msgid "Expires"
|
5034 |
msgstr ""
|
5035 |
|
5036 |
+
msgid "Notification to customer about their WordPress user login details"
|
5037 |
+
msgstr "Notifica al cliente dei dettagli del suo account"
|
5038 |
|
5039 |
+
msgid ""
|
5040 |
+
"Hello.\n"
|
5041 |
+
"\n"
|
5042 |
+
"An account was created for you at {site_address}\n"
|
5043 |
+
"\n"
|
5044 |
+
"Your user details:\n"
|
5045 |
+
"user: {new_username}\n"
|
5046 |
+
"password: {new_password}\n"
|
5047 |
+
"\n"
|
5048 |
+
"Thanks."
|
5049 |
+
msgstr ""
|
5050 |
+
"Ciao.\n"
|
5051 |
+
"\n"
|
5052 |
+
"Abbiamo creato per te un account su {site_address}\n"
|
5053 |
+
"\n"
|
5054 |
+
"Ecco i dettagli del tuo account:\n"
|
5055 |
+
"Nome utente: {new_username}\n"
|
5056 |
+
"Password: {new_password}\n"
|
5057 |
+
"\n"
|
5058 |
+
"Grazie."
|
5059 |
|
5060 |
+
msgid "Your appointment at {company_name}"
|
5061 |
+
msgstr "Il tuo appuntamento presso {company_name}"
|
5062 |
+
|
5063 |
+
msgid ""
|
5064 |
+
"Dear {client_name}.\n"
|
5065 |
+
"\n"
|
5066 |
+
"We would like to remind you that you have booked {service_name} tomorrow at "
|
5067 |
+
"{appointment_time}. We are waiting for you at {company_address}.\n"
|
5068 |
+
"\n"
|
5069 |
+
"Thank you for choosing our company.\n"
|
5070 |
+
"\n"
|
5071 |
+
"{company_name}\n"
|
5072 |
+
"{company_phone}\n"
|
5073 |
+
"{company_website}"
|
5074 |
msgstr ""
|
5075 |
+
"Gentile {client_name}.\n"
|
5076 |
+
"\n"
|
5077 |
+
"Vorremmo ricordarti il tuo appuntamento per {service_name} fissato per "
|
5078 |
+
"domani alle ore {appointment_time}. Ti aspettiamo presso {company_address}.\n"
|
5079 |
+
"\n"
|
5080 |
+
"Grazie per aver scelto la nostra azienda.\n"
|
5081 |
+
"\n"
|
5082 |
+
"{company_name}\n"
|
5083 |
+
"{company_phone}\n"
|
5084 |
+
"{company_website}"
|
5085 |
|
5086 |
+
msgid "Your visit to {company_name}"
|
5087 |
+
msgstr "La tua visita presso {company_name}"
|
5088 |
|
5089 |
+
msgid ""
|
5090 |
+
"Dear {client_name}.\n"
|
5091 |
+
"\n"
|
5092 |
+
"Thank you for choosing {company_name}. We hope you were satisfied with your "
|
5093 |
+
"{service_name}.\n"
|
5094 |
+
"\n"
|
5095 |
+
"Thank you and we look forward to seeing you again soon.\n"
|
5096 |
+
"\n"
|
5097 |
+
"{company_name}\n"
|
5098 |
+
"{company_phone}\n"
|
5099 |
+
"{company_website}"
|
5100 |
msgstr ""
|
5101 |
+
"Gentile {client_name}.\n"
|
5102 |
+
"\n"
|
5103 |
+
"Grazie per aver scelto {company_name}. Speriamo tu sia rimasto soddisfatto "
|
5104 |
+
"per {service_name}.\n"
|
5105 |
+
"\n"
|
5106 |
+
"Grazie e speriamo di rivederti presto.\n"
|
5107 |
+
"\n"
|
5108 |
+
"{company_name}\n"
|
5109 |
+
"{company_phone}\n"
|
5110 |
+
"{company_website}"
|
5111 |
|
5112 |
+
msgid "Your agenda for {tomorrow_date}"
|
5113 |
+
msgstr "La tua agenda per {tomorrow_date}"
|
5114 |
|
|
|
5115 |
msgid ""
|
5116 |
+
"Hello.\n"
|
5117 |
+
"\n"
|
5118 |
+
"Your agenda for tomorrow is:\n"
|
5119 |
+
"\n"
|
5120 |
+
"{next_day_agenda}"
|
5121 |
msgstr ""
|
5122 |
+
"Ciao.\n"
|
5123 |
+
"\n"
|
5124 |
+
"La tua agenda per domani è:\n"
|
5125 |
+
"\n"
|
5126 |
+
"{next_day_agenda}"
|
5127 |
|
5128 |
+
msgid ""
|
5129 |
+
"Dear {client_name}.\n"
|
5130 |
+
"\n"
|
5131 |
+
"This is a confirmation that you have booked the following items:\n"
|
5132 |
+
"\n"
|
5133 |
+
"{cart_info}\n"
|
5134 |
+
"\n"
|
5135 |
+
"Thank you for choosing our company.\n"
|
5136 |
+
"\n"
|
5137 |
+
"{company_name}\n"
|
5138 |
+
"{company_phone}\n"
|
5139 |
+
"{company_website}"
|
5140 |
msgstr ""
|
5141 |
+
"Caro {client_name}.\n"
|
5142 |
+
"\n"
|
5143 |
+
"Questa è una conferma che avete prenotato i seguenti elementi:\n"
|
5144 |
+
"\n"
|
5145 |
+
"{cart_info}\n"
|
5146 |
+
"\n"
|
5147 |
+
"Grazie per aver scelto la nostra azienda.\n"
|
5148 |
+
"\n"
|
5149 |
+
"{company_name}\n"
|
5150 |
+
"{company_phone}\n"
|
5151 |
+
"{company_website}"
|
5152 |
|
5153 |
+
msgid ""
|
5154 |
+
"Hello.\n"
|
5155 |
+
"An account was created for you at {site_address}\n"
|
5156 |
+
"Your user details:\n"
|
5157 |
+
"user: {new_username}\n"
|
5158 |
+
"password: {new_password}\n"
|
5159 |
+
"\n"
|
5160 |
+
"Thanks."
|
5161 |
msgstr ""
|
5162 |
+
"Ciao.\n"
|
5163 |
+
"\n"
|
5164 |
+
"Abbiamo creato per te un account su {site_address}\n"
|
5165 |
+
"\n"
|
5166 |
+
"Ecco i dettagli del tuo account:\n"
|
5167 |
+
"Nome utente: {new_username}\n"
|
5168 |
+
"Password: {new_password}\n"
|
5169 |
+
"\n"
|
5170 |
+
"Grazie."
|
5171 |
|
5172 |
+
msgid ""
|
5173 |
+
"Dear {client_name}.\n"
|
5174 |
+
"This is a confirmation that you have booked the following items:\n"
|
5175 |
+
"{cart_info}\n"
|
5176 |
+
"Thank you for choosing our company.\n"
|
5177 |
+
"{company_name}\n"
|
5178 |
+
"{company_phone}\n"
|
5179 |
+
"{company_website}"
|
5180 |
msgstr ""
|
5181 |
|
5182 |
+
msgid "I will pay now with PayPal"
|
5183 |
+
msgstr "Pago subito con PayPal"
|
|
|
|
|
|
|
|
|
|
|
|
|
5184 |
|
5185 |
msgid ""
|
5186 |
+
"You are not required to pay for the booked services, click Next to complete "
|
5187 |
+
"the booking process."
|
5188 |
msgstr ""
|
5189 |
|
5190 |
+
msgid "Street Number"
|
5191 |
msgstr ""
|
5192 |
|
5193 |
+
msgid "Street number is required"
|
5194 |
msgstr ""
|
5195 |
|
5196 |
+
msgid "Card Security Code"
|
5197 |
+
msgstr "Codice di sicurezza della carta"
|
5198 |
|
5199 |
+
msgid "Expiration Date"
|
5200 |
+
msgstr "Data di scadenza"
|
|
|
5201 |
|
5202 |
+
msgid "Credit Card Number"
|
5203 |
+
msgstr "Numero della Carta di Credito"
|
5204 |
|
5205 |
+
msgid "Appointment"
|
5206 |
+
msgstr "Appuntamento"
|
5207 |
|
5208 |
+
msgid "Customer's birthday"
|
5209 |
msgstr ""
|
5210 |
|
5211 |
+
msgid "Notification to customer about approved appointments"
|
5212 |
+
msgstr "Notifica al cliente degli appuntamenti approvati"
|
|
|
|
|
5213 |
|
5214 |
+
msgid "Notification to customer about pending appointments"
|
5215 |
msgstr ""
|
5216 |
|
5217 |
+
msgid "Extras"
|
5218 |
+
msgstr "Extra"
|
5219 |
|
5220 |
+
msgid "Check for updates"
|
5221 |
+
msgstr "Controlla gli aggiornamenti"
|
5222 |
|
5223 |
+
msgid "This plugin is up to date."
|
5224 |
+
msgstr "Questo plugin è aggiornata."
|
5225 |
|
5226 |
+
msgid "A new version of this plugin is available."
|
5227 |
+
msgstr "Una nuova versione di questo plugin è disponibile."
|
5228 |
|
5229 |
+
#, php-format
|
5230 |
+
msgid "Unknown update checker status \"%s\""
|
5231 |
+
msgstr "Stato sconosciuto di checker aggiornamento \"%s\""
|
5232 |
|
5233 |
+
#, php-format
|
5234 |
+
msgid "To update - enter the <a href=\"%s\">Purchase Code</a>"
|
5235 |
+
msgstr "Per aggiornare - inserire il <a href=\"%s\">codice di acquisto</a>"
|
5236 |
+
|
5237 |
+
msgid "Please verify your Bookly Pro license"
|
5238 |
msgstr ""
|
5239 |
|
5240 |
+
msgid ""
|
5241 |
+
"Bookly Pro will need to verify your license to restore access to your "
|
5242 |
+
"bookings. Please enter the purchase code in the administrative panel."
|
5243 |
msgstr ""
|
5244 |
|
5245 |
+
msgid ""
|
5246 |
+
"Please verify Bookly Pro license in the administrative panel. If you do not "
|
5247 |
+
"verify the license within {days}, access to your bookings will be disabled."
|
5248 |
msgstr ""
|
5249 |
|
5250 |
+
msgid "Online meetings"
|
5251 |
msgstr ""
|
5252 |
|
5253 |
+
msgid "License verification"
|
5254 |
+
msgstr "La verifica di licenza"
|
5255 |
+
|
5256 |
+
msgid ""
|
5257 |
+
"A new appointment has been created. To view the details of this appointment, "
|
5258 |
+
"please contact your website administrator in order to verify Bookly Pro "
|
5259 |
+
"license."
|
5260 |
msgstr ""
|
5261 |
|
5262 |
+
msgid ""
|
5263 |
+
"You have a new appointment. To view it, contact your admin to verify Bookly "
|
5264 |
+
"Pro license."
|
5265 |
msgstr ""
|
5266 |
|
5267 |
+
msgid ""
|
5268 |
+
"A new appointment has been created. To view the details of this appointment, "
|
5269 |
+
"please verify Bookly Pro license in the administrative panel."
|
5270 |
msgstr ""
|
5271 |
|
5272 |
+
msgid ""
|
5273 |
+
"You have a new appointment. To view it, please verify Bookly Pro license."
|
5274 |
msgstr ""
|
5275 |
|
5276 |
+
msgid ""
|
5277 |
+
"Please contact your website administrator in order to verify the license for "
|
5278 |
+
"Bookly add-ons. If you do not verify the license within {days}, the "
|
5279 |
+
"respective add-ons will be disabled."
|
5280 |
msgstr ""
|
5281 |
+
"Si prega di contattare l'amministratore del sito al fine di verificare la "
|
5282 |
+
"licenza per Bookly add-on. Se non si verifica della licenza entro {days}, "
|
5283 |
+
"saranno disattivati i rispettivi componenti aggiuntivi."
|
5284 |
|
5285 |
+
msgid "Contact your admin to verify Bookly add-ons license; {days} remaining."
|
5286 |
msgstr ""
|
5287 |
+
"Contattare l'amministratore per verificare Bookly licenza add-on; {days} "
|
5288 |
+
"rimanenti."
|
5289 |
|
5290 |
+
msgid ""
|
5291 |
+
"Please verify the license for Bookly add-ons in the administrative panel. If "
|
5292 |
+
"you do not verify the license within {days}, the respective add-ons will be "
|
5293 |
+
"disabled."
|
5294 |
msgstr ""
|
5295 |
+
"Si prega di verificare la licenza per Bookly add-on nel pannello "
|
5296 |
+
"amministrativo. Se non si verifica della licenza entro {days}, saranno "
|
5297 |
+
"disattivati i rispettivi componenti aggiuntivi."
|
5298 |
+
|
5299 |
+
msgid "Please verify Bookly add-ons license; {days} remaining."
|
5300 |
+
msgstr "Controllare Bookly licenza add-on; {days} rimanenti."
|
5301 |
|
5302 |
#, php-format
|
5303 |
msgid ""
|
5322 |
msgid "Your support period has expired on %s."
|
5323 |
msgstr ""
|
5324 |
|
5325 |
+
msgid "Print"
|
5326 |
+
msgstr "Stampare"
|
5327 |
|
5328 |
+
msgid "API Username"
|
5329 |
+
msgstr "API Username"
|
5330 |
+
|
5331 |
+
msgid "API Password"
|
5332 |
+
msgstr "API Password"
|
5333 |
+
|
5334 |
+
msgid "API Signature"
|
5335 |
+
msgstr "API Signature"
|
5336 |
+
|
5337 |
+
msgid "Minimum time requirement prior to booking"
|
5338 |
+
msgstr "Tempo richiesto prima della prenotazione"
|
5339 |
|
5340 |
msgid ""
|
5341 |
+
"Set how late appointments can be booked (for example, require customers to "
|
5342 |
+
"book at least 1 hour before the appointment time)."
|
5343 |
msgstr ""
|
5344 |
+
"Imposta come appuntamenti in ritardo può essere prenotato (per esempio, "
|
5345 |
+
"richiedono ai clienti di prenotare almeno 1 ora prima dell'orario di "
|
5346 |
+
"appuntamento)."
|
5347 |
+
|
5348 |
+
msgid "Minimum time requirement prior to canceling"
|
5349 |
+
msgstr "Requisito minimo di tempo prima di annullamento"
|
5350 |
|
5351 |
msgid ""
|
5352 |
+
"Set how late appointments can be cancelled (for example, require customers "
|
5353 |
+
"to cancel at least 1 hour before the appointment time)."
|
5354 |
msgstr ""
|
5355 |
+
"Imposta come appuntamenti in ritardo può essere annullata (ad esempio, "
|
5356 |
+
"richiedono ai clienti di annullare almeno 1 ora prima dell'orario di "
|
5357 |
+
"appuntamento)."
|
5358 |
|
5359 |
+
msgid "Appointment cancellation confirmation URL"
|
|
|
5360 |
msgstr ""
|
5361 |
|
5362 |
msgid ""
|
5363 |
+
"Set the URL of an appointment cancellation confirmation page that is shown "
|
5364 |
+
"to clients when they press cancellation link."
|
|
|
5365 |
msgstr ""
|
|
|
|
|
|
|
5366 |
|
5367 |
+
msgid ""
|
5368 |
+
"You need to install and activate WooCommerce plugin before using the options "
|
5369 |
+
"below.<br/><br/>Once the plugin is activated do the following steps:"
|
5370 |
msgstr ""
|
5371 |
+
"Devi installare ed attivare WooCommerce prima di utilizzare le opzioni "
|
5372 |
+
"seguenti.<br/><br/>Una volta attivato il plugin segui questi passi:"
|
5373 |
|
5374 |
+
msgid "Create a product in WooCommerce that can be placed in cart."
|
|
|
|
|
|
|
5375 |
msgstr ""
|
5376 |
+
"Crea un prodotto in WooCommerce che possa essere inserito in un carrello."
|
|
|
|
|
5377 |
|
5378 |
+
msgid "In the form below enable WooCommerce option."
|
5379 |
+
msgstr "Nel form sottostante abilita l'opzione WooCommerce."
|
5380 |
|
5381 |
+
msgid ""
|
5382 |
+
"Select the product that you created at step 1 in the drop down list of "
|
5383 |
+
"products."
|
5384 |
msgstr ""
|
5385 |
+
"Seleziona il prodotto che hai creato al passo 1 dalla lista dei prodotti."
|
5386 |
|
5387 |
msgid ""
|
5388 |
+
"If needed, edit item data which will be displayed in the cart. Besides cart "
|
5389 |
+
"item data Bookly passes address and account fields into WooCommerce if you "
|
5390 |
+
"collect them in your booking form."
|
5391 |
msgstr ""
|
5392 |
|
5393 |
msgid ""
|
5394 |
+
"Note that once you have enabled WooCommerce option in Bookly the built-in "
|
5395 |
+
"payment methods will no longer work. All your customers will be redirected "
|
5396 |
+
"to WooCommerce cart instead of standard payment step."
|
5397 |
msgstr ""
|
5398 |
+
"Nota che una volta abilitato WooCommerce in Bookly, le modalità di pagamento "
|
5399 |
+
"predefinite non saranno più funzionanti. Tutti i tuoi clienti verranno re-"
|
5400 |
+
"indirizzati al carrello WooCommerce invece di procedere allo step "
|
5401 |
+
"predefinito per il pagamento."
|
5402 |
|
5403 |
+
msgid "Booking product"
|
5404 |
+
msgstr "Prenotazione del prodotto"
|
5405 |
|
5406 |
+
msgid "Cart item data"
|
5407 |
+
msgstr "Dati del prodotto nel carrello"
|
5408 |
+
|
5409 |
+
msgid "Make address mandatory"
|
5410 |
msgstr ""
|
5411 |
|
5412 |
msgid ""
|
5413 |
+
"Customers are required to enter address to proceed with a booking. To "
|
5414 |
+
"disable, deactivate Invoices add-on first."
|
5415 |
msgstr ""
|
5416 |
|
5417 |
+
msgid "Customer's address fields"
|
5418 |
msgstr ""
|
5419 |
|
5420 |
+
msgid "Choose address fields you want to request from the client."
|
|
|
|
|
|
|
5421 |
msgstr ""
|
5422 |
|
5423 |
+
msgid "Final step URL"
|
5424 |
+
msgstr "URL dell'ultimo step"
|
5425 |
|
5426 |
+
msgid ""
|
5427 |
+
"Set the URL of a page that the user will be forwarded to after successful "
|
5428 |
+
"booking. If disabled then the default Done step is displayed."
|
5429 |
+
msgstr ""
|
5430 |
+
"Inserisci l'URL della pagina a cui verranno reindirizzati i clienti alla "
|
5431 |
+
"fine del processo di prenotazione. Se disabilitato, i clienti "
|
5432 |
+
"visualizzeranno lo step finale."
|
5433 |
|
5434 |
+
msgid "Enter a URL"
|
5435 |
+
msgstr "Inserisci un URL"
|
5436 |
|
5437 |
+
msgid "Make birthday mandatory"
|
5438 |
+
msgstr ""
|
|
|
5439 |
|
5440 |
+
msgid ""
|
5441 |
+
"If enabled, a customer will be required to enter a date of birth to proceed "
|
5442 |
+
"with a booking."
|
5443 |
+
msgstr ""
|
5444 |
|
5445 |
+
msgid "Columns"
|
5446 |
+
msgstr "Colonne"
|
5447 |
|
5448 |
msgid ""
|
5449 |
+
"Select columns that you want to display in a cart summary before the booking "
|
5450 |
+
"confirmation. Uncheck the box to hide the column. Drag the sandwich icon to "
|
5451 |
+
"change the order of fields."
|
|
|
|
|
|
|
|
|
|
|
|
|
5452 |
msgstr ""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5453 |
|
5454 |
+
msgid ""
|
5455 |
+
"If you use {cart_info} code in notifications, you can select the columns "
|
5456 |
+
"that you want to display and set the order of fields here. Uncheck the box "
|
5457 |
+
"to hide the column."
|
5458 |
+
msgstr ""
|
5459 |
+
|
5460 |
+
msgid "To find your client ID and client secret, do the following:"
|
5461 |
+
msgstr ""
|
5462 |
+
"Per trovare il tuo Client ID e il tuo Client Secret, procedi come segue:"
|
5463 |
|
5464 |
msgid ""
|
5465 |
+
"Go to the <a href=\"https://console.developers.google.com/\" "
|
5466 |
+
"target=\"_blank\">Google Developers Console</a>."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5467 |
msgstr ""
|
5468 |
+
"Vai alla pagina <a href=\"https://console.developers.google.com/\" "
|
5469 |
+
"target=\"_blank\">Google Developers Console</a>."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5470 |
|
5471 |
+
msgid "Select a project, or create a new one."
|
5472 |
+
msgstr "Seleziona un progetto, o creane uno nuovo."
|
5473 |
|
5474 |
msgid ""
|
5475 |
+
"Click in the upper left part to see a sliding sidebar. Next, click <b>API "
|
5476 |
+
"Manager</b>. In the list of APIs look for <b>Calendar API</b> and make sure "
|
5477 |
+
"it is enabled."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5478 |
msgstr ""
|
5479 |
+
"Fare clic nella parte superiore sinistra di vedere una barra laterale "
|
5480 |
+
"scorrevole. Quindi, fare clic su <b>API Manager</b>. Nella lista di API "
|
5481 |
+
"cercare <b>Calendar API</b> e assicurarsi che sia abilitata."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5482 |
|
5483 |
+
msgid "In the sidebar on the left, select <b>Credentials</b>."
|
5484 |
+
msgstr "Nel menu laterale di sinistra, seleziona <b>Credentials</b>."
|
5485 |
|
5486 |
msgid ""
|
5487 |
+
"Go to <b>OAuth consent screen</b> tab and give a name to the product, then "
|
5488 |
+
"click <b>Save</b>."
|
|
|
|
|
|
|
5489 |
msgstr ""
|
5490 |
+
"Vai a <b>OAuth consent screen</b> e dare un nome al prodotto, quindi fare "
|
5491 |
+
"clic su <b>Salva</b>."
|
|
|
|
|
|
|
5492 |
|
5493 |
msgid ""
|
5494 |
+
"Go to <b>Credentials</b> tab and in <b>New credentials</b> drop-down menu "
|
5495 |
+
"select <b>OAuth client ID</b>."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5496 |
msgstr ""
|
5497 |
+
"Vai alla scheda <b>Credenziali</b> e nel menu a discesa <b>Nuove "
|
5498 |
+
"credenziali</b> selezionare <b>OAuth client ID</b>."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5499 |
|
5500 |
msgid ""
|
5501 |
+
"Select <b>Web application</b> and create your project's OAuth 2.0 "
|
5502 |
+
"credentials by providing the necessary information. For <b>Authorized "
|
5503 |
+
"redirect URIs</b> enter the <b>Redirect URI</b> found below on this page. "
|
5504 |
+
"Click <b>Create</b>."
|
|
|
|
|
|
|
5505 |
msgstr ""
|
5506 |
+
"Selezionare <b>Web application</b> e creare OAuth credenziali del vostro "
|
5507 |
+
"progetto 2.0, fornendo le informazioni necessarie. Per <b>Authorized "
|
5508 |
+
"redirect URIs</b> immettere il <b>Redirect URI</b> trovato sotto in questa "
|
5509 |
+
"pagina. Fare clic su <b>Create</b>."
|
|
|
|
|
|
|
|
|
|
|
5510 |
|
5511 |
msgid ""
|
5512 |
+
"In the popup window look for the <b>Client ID</b> and <b>Client secret</b>. "
|
5513 |
+
"Use them in the form below on this page."
|
|
|
|
|
|
|
|
|
|
|
5514 |
msgstr ""
|
5515 |
+
"Nella sguardo finestra popup per la <b>Client ID</b> e <b>Client secret</b>. "
|
5516 |
+
"Usali il modulo qui sotto in questa pagina."
|
5517 |
|
5518 |
+
#, php-format
|
5519 |
+
msgid ""
|
5520 |
+
"Important: for two-way sync, your website must use HTTPS. Google Calendar "
|
5521 |
+
"API will be able to send notifications to HTTPS address only if there is a "
|
5522 |
+
"valid SSL certificate installed on your web server. Follow the steps in this "
|
5523 |
+
"<a href=\"%s\" target=\"_blank\">document</a> to <b>verify and register your "
|
5524 |
+
"domain</b>."
|
5525 |
msgstr ""
|
5526 |
|
5527 |
+
msgid "The client ID obtained from the Developers Console"
|
5528 |
msgstr ""
|
5529 |
+
"Il \n"
|
5530 |
+
"Client ID ottenuto dalla Developer Console"
|
5531 |
|
5532 |
+
msgid "Client secret"
|
5533 |
+
msgstr "Client secret"
|
|
|
|
|
|
|
5534 |
|
5535 |
+
msgid "The client secret obtained from the Developers Console"
|
5536 |
+
msgstr ""
|
5537 |
+
"Il \n"
|
5538 |
+
"Client secret ottenuto dalla Developer Console"
|
5539 |
|
5540 |
+
msgid "Enter this URL as a redirect URI in the Developers Console"
|
5541 |
+
msgstr "Inserisci questa URL come \"redirect URI\" nella Developer Console"
|
5542 |
|
5543 |
+
msgid ""
|
5544 |
+
"With \"One-way\" sync Bookly pushes new appointments and any further changes "
|
5545 |
+
"to Google Calendar. With \"Two-way front-end only\" sync Bookly will "
|
5546 |
+
"additionally fetch events from Google Calendar and remove corresponding time "
|
5547 |
+
"slots before displaying the Time step of the booking form (this may lead to "
|
5548 |
+
"a delay when users click Next to get to the Time step)."
|
5549 |
msgstr ""
|
5550 |
|
5551 |
+
msgid ""
|
5552 |
+
"If there is a lot of events in Google Calendar sometimes this leads to a "
|
5553 |
+
"lack of memory in PHP when Bookly tries to fetch all events. You can limit "
|
5554 |
+
"the number of fetched events here."
|
5555 |
msgstr ""
|
5556 |
|
5557 |
+
msgid ""
|
5558 |
+
"Configure what information should be placed in the title of Google Calendar "
|
5559 |
+
"event. Available codes are {service_name}, {staff_name} and {client_names}."
|
5560 |
msgstr ""
|
5561 |
+
"Configurare quali informazioni devono essere inserite nel titolo dell'evento "
|
5562 |
+
"Google Calendar. I codici disponibili sono {service_name}, {staff_name} e "
|
5563 |
+
"{client_names}."
|
5564 |
|
5565 |
+
msgid "To set up Facebook integration, do the following:"
|
5566 |
+
msgstr ""
|
|
|
|
|
|
|
|
|
|
|
|
|
5567 |
|
5568 |
msgid ""
|
5569 |
+
"Follow the steps at <a href=\"https://developers.facebook."
|
5570 |
+
"com/docs/apps/register\" target=\"_blank\">https://developers.facebook."
|
5571 |
+
"com/docs/apps/register</a> to create a Developer Account, register and "
|
5572 |
+
"configure your <b>Facebook App</b>. Then you'll need to submit your app for "
|
5573 |
+
"review. Learn more about the review process and what's required to pass "
|
5574 |
+
"review in the <a href=\"https://developers.facebook.com/docs/facebook-"
|
5575 |
+
"login/review\" target=\"_blank\">Login Review Guide</a>."
|
5576 |
msgstr ""
|
|
|
|
|
5577 |
|
5578 |
+
msgid ""
|
5579 |
+
"Below the App Details Panel click Add Platform button, select Website and "
|
5580 |
+
"enter your website URL."
|
5581 |
msgstr ""
|
5582 |
|
5583 |
+
msgid ""
|
5584 |
+
"Go to your App Dashboard. In the left side navigation panel of the App "
|
5585 |
+
"Dashboard, click Settings > Basic to view the App Details Panel with your "
|
5586 |
+
"App ID. Use it in the form below."
|
5587 |
msgstr ""
|
5588 |
|
5589 |
+
msgid "App ID"
|
5590 |
+
msgstr ""
|
5591 |
|
5592 |
msgid ""
|
5593 |
+
"Upon providing the purchase code you will have access to free updates of "
|
5594 |
+
"Bookly. Updates may contain functionality improvements and important "
|
5595 |
+
"security fixes. For more information on where to find your purchase code see "
|
5596 |
+
"this <a href=\"https://help.market.envato.com/hc/en-us/articles/202822600-"
|
5597 |
+
"Where-can-I-find-my-Purchase-Code-\" target=\"_blank\">page</a>."
|
5598 |
msgstr ""
|
5599 |
+
"Una volta inserito il codice d'acquisto avrai accesso agli aggiornamenti "
|
5600 |
+
"gratuiti di Bookly. Gli aggiornamenti possono contenere nuove funzionalità e "
|
5601 |
+
"importanti aggiornamenti per la sicurezza. Per maggiori informazioni su dove "
|
5602 |
+
"trovare il tuo codice d'acquisto, visita questa\n"
|
5603 |
+
" <a href=\"https://help.market.envato.com/hc/en-us/articles/202822600-Where-"
|
5604 |
+
"can-I-find-my-Purchase-Code-\" target=\"_blank\">pagina</a>."
|
5605 |
|
5606 |
msgid ""
|
5607 |
+
"If you do not provide a valid purchase code within {days}, access to your "
|
5608 |
+
"bookings will be disabled."
|
|
|
5609 |
msgstr ""
|
5610 |
+
"Se non si fornisce un codice di acquisto valido entro {days}, l'accesso alle "
|
5611 |
+
"vostre prenotazioni sarà disattivato."
|
5612 |
|
5613 |
+
msgid "Customer address"
|
5614 |
+
msgstr ""
|
5615 |
|
5616 |
+
msgid ""
|
5617 |
+
"Configure how the customer's address will be displayed in notifications."
|
5618 |
+
msgstr ""
|
5619 |
|
5620 |
+
msgid "To find your API Key and Secret, do the following:"
|
5621 |
msgstr ""
|
5622 |
|
5623 |
+
msgid "Sign in to your Zoom account"
|
5624 |
msgstr ""
|
5625 |
|
5626 |
+
msgid ""
|
5627 |
+
"Visit the <a href=\"https://marketplace.zoom.us/\" target=\"_blank\">Zoom "
|
5628 |
+
"App Marketplace</a>"
|
5629 |
+
msgstr ""
|
5630 |
|
5631 |
+
msgid ""
|
5632 |
+
"Click on the <b>Develop</b> option in the dropdown on the top-right corner "
|
5633 |
+
"and select <b>Build App</b>"
|
5634 |
+
msgstr ""
|
5635 |
|
5636 |
+
msgid ""
|
5637 |
+
"A page with various app types will be displayed. Select <b>JWT</b> as the "
|
5638 |
+
"app type and click on <b>Create</b>"
|
5639 |
msgstr ""
|
5640 |
|
5641 |
+
msgid "After creating your app, fill out descriptive and contact information"
|
5642 |
msgstr ""
|
5643 |
|
5644 |
+
msgid ""
|
5645 |
+
"Go to <b>App Credentials</b> tab and look for the <b>API Key</b> and <b>API "
|
5646 |
+
"Secret</b>. Use them in the form below on this page"
|
5647 |
msgstr ""
|
5648 |
|
5649 |
+
msgid ""
|
5650 |
+
"Once you've copied over your API Key and Secret, go to <b>Activation</b> tab "
|
5651 |
+
"and make sure your app is activated"
|
5652 |
msgstr ""
|
5653 |
|
5654 |
+
msgid "The API Key obtained from your JWT app"
|
5655 |
msgstr ""
|
5656 |
|
5657 |
+
msgid "API Secret"
|
5658 |
msgstr ""
|
5659 |
|
5660 |
+
msgid "The API Secret obtained from your JWT app"
|
5661 |
msgstr ""
|
5662 |
|
5663 |
+
msgid "Cart"
|
5664 |
+
msgstr "Carrello"
|
5665 |
+
|
5666 |
+
msgid "Select product"
|
5667 |
+
msgstr "Seleziona un prodotto"
|
5668 |
+
|
5669 |
+
msgid ""
|
5670 |
+
"Do not count appointments in 'Limit appointments per customer' with the "
|
5671 |
+
"following statuses"
|
5672 |
msgstr ""
|
5673 |
|
5674 |
+
msgid "Google Calendar"
|
5675 |
+
msgstr "Google Calendar"
|
5676 |
+
|
5677 |
+
msgid "Purchase Code"
|
5678 |
+
msgstr "Codice d'acquisto"
|
5679 |
+
|
5680 |
+
msgid "Create WordPress user account for customers"
|
5681 |
+
msgstr "Crea un account WordPress per i clienti"
|
5682 |
+
|
5683 |
+
msgid ""
|
5684 |
+
"If this setting is enabled then Bookly will be creating WordPress user "
|
5685 |
+
"accounts for all new customers. If the user is logged in then the new "
|
5686 |
+
"customer will be associated with the existing user account."
|
5687 |
msgstr ""
|
5688 |
+
"Se questa impostazione è abilitata, Bookly creerà un account WordPress per "
|
5689 |
+
"tutti i nuovi clienti. Se il cliente è già loggato con un account, il nuovo "
|
5690 |
+
"cliente verrà associato a questo account."
|
5691 |
|
5692 |
+
msgid "Cancel appointment action"
|
5693 |
+
msgstr "Azione per cancellare l'appuntamento"
|
5694 |
+
|
5695 |
+
msgid ""
|
5696 |
+
"Select what happens when customer clicks cancel appointment link. With "
|
5697 |
+
"\"Delete\" the appointment will be deleted from the calendar. With "
|
5698 |
+
"\"Cancel\" only appointment status will be changed to \"Cancelled\"."
|
5699 |
msgstr ""
|
5700 |
+
"Seleziona cosa succede quando il cliente fa clic sul link Annulla "
|
5701 |
+
"appuntamento. Con \"Elimina\" l'appuntamento verrà cancellato dal calendario."
|
5702 |
+
" Con \"Annulla\", solo lo stato dell'appuntamento verrà modificato in "
|
5703 |
+
"\"Annullato\"."
|
5704 |
|
5705 |
+
msgid "New user account role"
|
5706 |
+
msgstr "Ruolo del nuovo account utente"
|
5707 |
+
|
5708 |
+
msgid ""
|
5709 |
+
"Select what role will be assigned to newly created WordPress user accounts "
|
5710 |
+
"for customers."
|
5711 |
msgstr ""
|
5712 |
+
"Selezionare quale ruolo verrà assegnato alla nuova creazione di WordPress "
|
5713 |
+
"account utente per i clienti."
|
5714 |
|
5715 |
+
msgid "Online Meetings"
|
5716 |
msgstr ""
|
5717 |
|
5718 |
+
msgid "Form view in case of single booking"
|
5719 |
+
msgstr "Form view in caso di prenotazione singola"
|
5720 |
+
|
5721 |
+
msgid "Form view in case of multiple booking"
|
5722 |
+
msgstr "Form view in caso di prenotazione multipla"
|
5723 |
+
|
5724 |
+
#, php-format
|
5725 |
+
msgid "Form in case of 100% discount"
|
5726 |
msgstr ""
|
5727 |
|
5728 |
+
msgid "Show birthday field"
|
5729 |
msgstr ""
|
5730 |
|
5731 |
msgid ""
|
5732 |
+
"Address information is needed for Invoices add-on. To disable, deactivate "
|
5733 |
+
"Invoices add-on first."
|
|
|
|
|
5734 |
msgstr ""
|
5735 |
|
5736 |
+
msgid "Show address fields"
|
5737 |
msgstr ""
|
5738 |
|
5739 |
+
msgid "Show Facebook login button"
|
5740 |
msgstr ""
|
5741 |
|
5742 |
+
#, php-format
|
5743 |
msgid ""
|
5744 |
+
"Please configure Facebook App integration in <a href=\"%s\">settings</a> "
|
5745 |
+
"first."
|
5746 |
msgstr ""
|
|
|
|
|
5747 |
|
5748 |
+
msgid "Show time zone switcher"
|
5749 |
msgstr ""
|
5750 |
|
5751 |
+
msgid "Import"
|
5752 |
+
msgstr "Importa"
|
5753 |
+
|
5754 |
+
msgid "Note"
|
5755 |
+
msgstr "Nota"
|
5756 |
+
|
5757 |
msgid ""
|
5758 |
+
"You may import list of clients in CSV format. You can choose the columns "
|
5759 |
+
"contained in your file. The sequence of columns should coincide with the "
|
5760 |
+
"specified one."
|
5761 |
msgstr ""
|
5762 |
|
5763 |
+
msgid "Select file"
|
5764 |
+
msgstr "Seleziona un file"
|
5765 |
+
|
5766 |
+
msgid "Date of birth"
|
5767 |
+
msgstr "Data di nascita"
|
5768 |
+
|
5769 |
+
msgid "Analytics"
|
5770 |
msgstr ""
|
5771 |
|
5772 |
msgid ""
|
5773 |
+
"Note: If payment is made for several services, then for each service you "
|
5774 |
+
"will see the entire amount paid as revenue."
|
|
|
5775 |
msgstr ""
|
5776 |
|
5777 |
+
msgid "Online meeting join URL"
|
5778 |
msgstr ""
|
5779 |
|
5780 |
+
msgid "Time zone of staff"
|
|
|
|
|
|
|
|
|
|
|
5781 |
msgstr ""
|
5782 |
|
5783 |
+
msgid "Titles"
|
5784 |
+
msgstr "Titoli"
|
|
|
|
|
|
|
|
|
5785 |
|
5786 |
+
msgid "Add Bookly appointments list"
|
5787 |
+
msgstr "Aggiungi una lista appuntamenti di Bookly"
|
5788 |
|
5789 |
+
msgid "Add appointment cancellation confirmation"
|
|
|
|
|
|
|
|
|
5790 |
msgstr ""
|
|
|
|
|
|
|
|
|
|
|
5791 |
|
5792 |
+
#, php-format
|
5793 |
+
msgid ""
|
5794 |
+
"<a class=\"%s\" href=\"#\">Click here</a> to dissociate this purchase code "
|
5795 |
+
"from the current domain (use to move the plugin to another site)."
|
5796 |
msgstr ""
|
5797 |
|
5798 |
+
#, php-format
|
5799 |
+
msgid ""
|
5800 |
+
"Are you sure you want to dissociate this purchase code from %s?\n"
|
5801 |
+
"\n"
|
5802 |
+
"This will also remove the entered purchase code from this site."
|
5803 |
msgstr ""
|
5804 |
|
5805 |
+
msgid "Error dissociating purchase code."
|
|
|
|
|
5806 |
msgstr ""
|
5807 |
|
5808 |
msgid "Google Calendar integration"
|
5817 |
msgid "Synchronize staff member appointments with Google Calendar."
|
5818 |
msgstr "Sincronizzare gli appuntamenti membro dello staff con Google Calendar."
|
5819 |
|
5820 |
+
msgid "Personal"
|
5821 |
+
msgstr ""
|
|
|
|
|
|
|
5822 |
|
5823 |
+
msgid "This setting allows to set up personal Zoom account for staff member"
|
|
|
5824 |
msgstr ""
|
5825 |
|
5826 |
+
msgid "Limit working hours per day"
|
|
|
|
|
5827 |
msgstr ""
|
5828 |
|
5829 |
+
msgid "Unlimited"
|
5830 |
msgstr ""
|
5831 |
|
5832 |
+
msgid ""
|
5833 |
+
"This setting allows limiting the total time occupied by bookings per day for "
|
5834 |
+
"staff member. Padding time is not included."
|
5835 |
msgstr ""
|
5836 |
|
5837 |
+
msgid "Archiving Staff"
|
5838 |
msgstr ""
|
5839 |
|
|
|
5840 |
msgid ""
|
5841 |
+
"You are going to archive item which is involved in upcoming appointments. "
|
5842 |
+
"Please double check and edit appointments before this item archive if needed."
|
5843 |
msgstr ""
|
5844 |
|
5845 |
+
msgid "Ok, continue editing"
|
5846 |
msgstr ""
|
5847 |
|
5848 |
msgid ""
|
5849 |
+
"The staff member's schedule will be considered to be in the selected time "
|
5850 |
+
"zone. This time zone will also be used for the dates and times in "
|
5851 |
+
"notifications sent to the staff member"
|
5852 |
msgstr ""
|
5853 |
|
5854 |
+
msgid "Reason"
|
5855 |
+
msgstr ""
|
5856 |
|
5857 |
+
msgid "Manual adjustment"
|
5858 |
+
msgstr ""
|
5859 |
|
5860 |
+
msgid "Attach payment"
|
5861 |
+
msgstr ""
|
5862 |
|
5863 |
+
msgid "Create payment"
|
|
|
|
|
|
|
5864 |
msgstr ""
|
|
|
|
|
|
|
5865 |
|
5866 |
+
msgid "Total price"
|
5867 |
+
msgstr ""
|
5868 |
|
5869 |
+
msgid "Search payment"
|
|
|
|
|
|
|
5870 |
msgstr ""
|
|
|
|
|
|
|
|
|
5871 |
|
5872 |
+
msgid "Payment ID"
|
5873 |
+
msgstr ""
|
5874 |
|
5875 |
msgid ""
|
5876 |
+
"This link can be inserted into notifications with {online_meeting_url} code"
|
|
|
5877 |
msgstr ""
|
|
|
|
|
5878 |
|
5879 |
+
msgid "Save appointment to create a meeting"
|
5880 |
msgstr ""
|
5881 |
|
5882 |
+
msgid "Custom service name"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5883 |
msgstr ""
|
|
|
|
|
5884 |
|
5885 |
+
msgid "Please enter a service name"
|
5886 |
msgstr ""
|
5887 |
|
5888 |
+
msgid "Custom service price"
|
|
|
|
|
5889 |
msgstr ""
|
5890 |
|
5891 |
+
msgid "Limit appointments per customer"
|
5892 |
msgstr ""
|
5893 |
|
5894 |
+
msgid "upcoming"
|
|
|
5895 |
msgstr ""
|
5896 |
|
5897 |
+
msgid "per 24 hours"
|
5898 |
msgstr ""
|
|
|
5899 |
|
5900 |
+
msgid "per day"
|
|
|
|
|
5901 |
msgstr ""
|
|
|
|
|
5902 |
|
5903 |
+
msgid "per 7 days"
|
5904 |
+
msgstr ""
|
5905 |
|
5906 |
+
msgid "per week"
|
|
|
|
|
|
|
5907 |
msgstr ""
|
|
|
|
|
|
|
5908 |
|
5909 |
+
msgid "per 30 days"
|
5910 |
+
msgstr ""
|
5911 |
|
5912 |
+
msgid "per month"
|
|
|
|
|
5913 |
msgstr ""
|
|
|
|
|
5914 |
|
5915 |
+
msgid "per 365 days"
|
|
|
|
|
5916 |
msgstr ""
|
|
|
|
|
5917 |
|
5918 |
+
msgid "per year"
|
|
|
|
|
|
|
|
|
5919 |
msgstr ""
|
|
|
|
|
|
|
|
|
5920 |
|
5921 |
msgid ""
|
5922 |
+
"This setting allows you to limit the number of appointments that can be "
|
5923 |
+
"booked by a customer in any given period. Restriction may end after a fixed "
|
5924 |
+
"period or with the beginning of the next calendar period - new day, week, "
|
5925 |
+
"month, etc."
|
5926 |
msgstr ""
|
|
|
|
|
5927 |
|
5928 |
+
msgid "Limit"
|
|
|
|
|
|
|
|
|
|
|
|
|
5929 |
msgstr ""
|
5930 |
|
5931 |
+
msgid "Padding time (before and after)"
|
5932 |
+
msgstr "Tempo aggiuntivo prima e dopo l'appuntamento (padding time)"
|
5933 |
|
5934 |
+
msgid ""
|
5935 |
+
"Set padding time before and/or after an appointment. For example, if you "
|
5936 |
+
"require 15 minutes to prepare for the next appointment then you should set "
|
5937 |
+
"\"padding before\" to 15 min. If there is an appointment from 8:00 to 9:00 "
|
5938 |
+
"then the next available time slot will be 9:15 rather than 9:00."
|
5939 |
msgstr ""
|
5940 |
+
"Imposta il tempo aggiuntivo prima e dopo l'appuntamento (padding time). Ad "
|
5941 |
+
"esempio se avete bisogno di 15 minuti per preparare il prossimo appuntamento,"
|
5942 |
+
" è necessario impostare Il tempo aggiuntivo prima dell'appuntamento a 15 min."
|
5943 |
+
" In questo caso se c'è un appuntamento dalle 8:00 alle 9:00, la successiva "
|
5944 |
+
"fascia oraria disponibile sarà 09:15 anziché 09:00."
|
5945 |
|
5946 |
+
msgid "Providers preference for ANY"
|
5947 |
msgstr ""
|
|
|
|
|
5948 |
|
5949 |
+
msgid ""
|
5950 |
+
"Allows you to define the rule of staff members auto assignment when ANY "
|
5951 |
+
"option is selected"
|
5952 |
+
msgstr ""
|
5953 |
+
"Consente di definire la regola di assegnazione automatica dei membri dello "
|
5954 |
+
"staff quando è selezionata l'opzione QUALSIASI"
|
5955 |
|
5956 |
+
msgid "Period (before and after)"
|
|
|
|
|
|
|
|
|
|
|
5957 |
msgstr ""
|
5958 |
|
5959 |
msgid ""
|
5960 |
+
"Set number of days before and after appointment that will be taken into "
|
5961 |
+
"account when calculating provider's occupancy. 0 means the day of booking."
|
|
|
5962 |
msgstr ""
|
5963 |
|
5964 |
+
msgid "Pick random staff member in case of uncertainty"
|
|
|
|
|
5965 |
msgstr ""
|
|
|
|
|
|
|
5966 |
|
5967 |
msgid ""
|
5968 |
+
"Enable this option to pick a random staff member if both meet the criteria "
|
5969 |
+
"chosen in \"Providers preference for ANY\". Otherwise the selection order is "
|
5970 |
+
"unknown."
|
|
|
|
|
5971 |
msgstr ""
|
|
|
|
|
|
|
|
|
|
|
|
|
5972 |
|
5973 |
msgid ""
|
5974 |
+
"To make service invisible to your customers set the visibility to "
|
5975 |
+
"\"Private\"."
|
5976 |
msgstr ""
|
5977 |
+
"Per rendere il servizio invisibile ai clienti impostare la visibilità su "
|
5978 |
+
"\"Private\"."
|
5979 |
|
5980 |
+
msgid "Create online meetings"
|
5981 |
msgstr ""
|
5982 |
|
5983 |
+
#, php-format
|
5984 |
msgid ""
|
5985 |
+
"If this setting is enabled then online meetings will be created for new "
|
5986 |
+
"appointments with the selected online meeting provider. Make sure that the "
|
5987 |
+
"provider is configured properly in Settings > <a href=\"%s\">Online "
|
5988 |
+
"Meetings</a>"
|
5989 |
msgstr ""
|
5990 |
|
5991 |
+
msgid "Specified order"
|
5992 |
msgstr ""
|
5993 |
|
5994 |
+
msgid "Least occupied that day"
|
5995 |
+
msgstr "Ultimo occupato quel giorno"
|
5996 |
+
|
5997 |
+
msgid "Most occupied that day"
|
5998 |
+
msgstr "Più occupati quel giorno"
|
5999 |
+
|
6000 |
+
msgid "Least occupied for period"
|
6001 |
msgstr ""
|
6002 |
|
6003 |
+
msgid "Most occupied for period"
|
6004 |
+
msgstr ""
|
6005 |
|
6006 |
+
msgid "Least expensive"
|
6007 |
msgstr ""
|
6008 |
|
6009 |
+
msgid "Most expensive"
|
6010 |
msgstr ""
|
6011 |
|
6012 |
+
msgid "Welcome to Bookly Pro and thank you for purchasing our product!"
|
|
|
|
|
6013 |
msgstr ""
|
6014 |
|
6015 |
+
msgid "Add staff members."
|
6016 |
+
msgstr "Aggiungi membri dello staff"
|
6017 |
+
|
6018 |
+
msgid "Add services you provide and assign them to staff members."
|
6019 |
msgstr ""
|
6020 |
|
6021 |
msgid ""
|
6022 |
+
"Bookly can boost your sales and scale together with your business. With "
|
6023 |
+
"Bookly add-ons you can get more features and functionality to customize your "
|
6024 |
+
"online scheduling system according to your business needs and simplify the "
|
6025 |
+
"process even more."
|
6026 |
msgstr ""
|
6027 |
|
6028 |
+
msgid "Bookly Add-ons"
|
6029 |
msgstr ""
|
6030 |
|
6031 |
+
msgid "License verification required"
|
6032 |
+
msgstr "Verifica licenza necessaria"
|
6033 |
+
|
6034 |
+
msgid "Bookly Pro - License verification required"
|
6035 |
msgstr ""
|
6036 |
|
6037 |
msgid ""
|
6038 |
+
"Please verify your license by providing a valid purchase code. Upon "
|
6039 |
+
"providing the purchase code you will get access to software updates, "
|
6040 |
+
"including feature improvements and important security fixes."
|
6041 |
msgstr ""
|
6042 |
+
"Si prega di verificare la licenza, fornendo un codice di acquisto valida. Su "
|
6043 |
+
"fornendo il codice di acquisto si otterrà l'accesso agli aggiornamenti del "
|
6044 |
+
"software, inclusi alcuni miglioramenti e aggiornamenti di sicurezza "
|
6045 |
+
"importanti."
|
6046 |
|
6047 |
+
msgid ""
|
6048 |
+
"If you do not provide a valid purchase code within {days}, access to your "
|
6049 |
+
"bookings will be disabled. <a href=\"{url}\">Details</a>"
|
6050 |
msgstr ""
|
6051 |
|
6052 |
+
msgid "License verification succeeded"
|
6053 |
+
msgstr "La verifica di licenza è riuscito"
|
6054 |
+
|
6055 |
+
msgid "Your license has been verified successfully."
|
6056 |
+
msgstr "La licenza è stata verificata con successo."
|
6057 |
+
|
6058 |
+
msgid ""
|
6059 |
+
"You have access to software updates, including feature improvements and "
|
6060 |
+
"important security fixes."
|
6061 |
msgstr ""
|
6062 |
+
"Si ha accesso agli aggiornamenti del software, inclusi alcuni miglioramenti "
|
6063 |
+
"e aggiornamenti di sicurezza importanti."
|
6064 |
|
6065 |
+
msgid "Thank you for choosing Bookly Pro as your booking solution."
|
6066 |
msgstr ""
|
6067 |
|
6068 |
+
msgid "Proceed"
|
6069 |
+
msgstr "Procedere"
|
6070 |
|
6071 |
msgid ""
|
6072 |
+
"Please contact your website administrator to verify your license by "
|
6073 |
+
"providing a valid purchase code. Upon providing the purchase code you will "
|
6074 |
+
"get access to software updates, including feature improvements and important "
|
6075 |
+
"security fixes. If you do not provide a valid purchase code within {days}, "
|
6076 |
+
"access to your bookings will be disabled."
|
6077 |
msgstr ""
|
|
|
|
|
|
|
6078 |
|
6079 |
+
msgid "Access to your bookings has been disabled."
|
6080 |
+
msgstr "L'accesso alle tue prenotazioni è stato disattivato."
|
6081 |
|
6082 |
msgid ""
|
6083 |
+
"To enable access to your bookings, please contact your website administrator "
|
6084 |
+
"in order to verify the license."
|
6085 |
msgstr ""
|
6086 |
+
"Per abilitare l'accesso alle vostre prenotazioni, si prega di contattare "
|
6087 |
+
"l'amministratore del sito, al fine di verificare la licenza."
|
|
|
6088 |
|
6089 |
msgid ""
|
6090 |
+
"To enable access to your bookings, please verify your license by providing a "
|
6091 |
+
"valid purchase code."
|
6092 |
msgstr ""
|
6093 |
+
"Per abilitare l'accesso alle vostre prenotazioni, si prega di verificare la "
|
6094 |
+
"tua licenza, fornendo un codice di acquisto valida."
|
6095 |
|
6096 |
+
msgid "I have already made the purchase"
|
6097 |
+
msgstr "Ho già fatto l'acquisto"
|
|
|
6098 |
|
6099 |
+
msgid "I want to make a purchase now"
|
6100 |
+
msgstr "Voglio fare un acquisto ora"
|
6101 |
|
6102 |
+
msgid "Deactivate Bookly Pro"
|
|
|
|
|
6103 |
msgstr ""
|
|
|
6104 |
|
6105 |
msgid ""
|
6106 |
+
"Please contact your website administrator in order to verify the license."
|
|
|
|
|
6107 |
msgstr ""
|
6108 |
+
"Si prega di contattare l'amministratore del sito, al fine di verificare la "
|
6109 |
+
"licenza."
|
6110 |
|
6111 |
msgid ""
|
6112 |
+
"If you do not verify the license within {days}, access to your bookings will "
|
6113 |
+
"be disabled."
|
|
|
6114 |
msgstr ""
|
6115 |
+
"Se non si verifica della licenza entro {days}, l'accesso alle vostre "
|
6116 |
+
"prenotazioni sarà disattivato."
|
|
|
|
|
6117 |
|
6118 |
+
msgid "Proceed to Bookly Pro without license verification"
|
6119 |
+
msgstr ""
|
6120 |
|
6121 |
+
#, php-format
|
6122 |
+
msgid ""
|
6123 |
+
"Cannot find your purchase code? See this <a href=\"%s\" target=\"_blank\">"
|
6124 |
+
"page</a>."
|
6125 |
+
msgstr ""
|
6126 |
+
"Non riesci a trovare il tuo codice di acquisto? Guarda questa <a href=\"%s\" "
|
6127 |
+
"target=\"_blank\">pagina</a>."
|
6128 |
|
6129 |
+
msgid "I will provide license info later"
|
6130 |
+
msgstr "Mi impegno a fornire informazioni di licenza in seguito"
|
6131 |
|
6132 |
msgid ""
|
6133 |
+
"To enable access to your bookings, please verify your license by providing a "
|
6134 |
+
"valid purchase code. <a href=\"{url}\">Details</a>"
|
|
|
6135 |
msgstr ""
|
6136 |
|
6137 |
msgid ""
|
6138 |
+
"To enable access to your bookings, please contact your website administrator "
|
6139 |
+
"to verify your license by providing a valid purchase code."
|
|
|
6140 |
msgstr ""
|
6141 |
|
6142 |
+
msgid "Cancellation confirmation"
|
6143 |
+
msgstr ""
|
6144 |
+
|
6145 |
+
msgid "A custom block for displaying cancellation confirmation"
|
6146 |
+
msgstr ""
|
6147 |
+
|
6148 |
+
msgid "Appointments list"
|
6149 |
+
msgstr ""
|
6150 |
+
|
6151 |
+
msgid "A custom block for displaying appointments list"
|
6152 |
+
msgstr ""
|
6153 |
+
|
6154 |
+
msgid "Custom fields"
|
6155 |
+
msgstr ""
|
6156 |
+
|
6157 |
+
msgid "Confirm cancellation"
|
6158 |
+
msgstr ""
|
6159 |
+
|
6160 |
+
msgid "Do not cancel"
|
6161 |
msgstr ""
|
6162 |
|
6163 |
+
msgid "Thank you for being with us"
|
6164 |
+
msgstr ""
|
6165 |
+
|
6166 |
+
msgid "Invalid token provided"
|
6167 |
+
msgstr "Token validi forniti"
|
6168 |
+
|
6169 |
msgid ""
|
6170 |
+
"Sorry, the time slot %date_time% for %service% has been already occupied."
|
|
|
6171 |
msgstr ""
|
6172 |
+
"Spiacenti, l'intervallo di tempo%date_time% per il %service% è stato già "
|
6173 |
+
"occupato."
|
6174 |
|
6175 |
+
msgid "This service is no longer provided."
|
6176 |
+
msgstr ""
|
6177 |
|
6178 |
+
msgid "Service was not found"
|
6179 |
+
msgstr "Il servizio non è stato trovato"
|
6180 |
|
6181 |
+
msgid "No appointments found."
|
6182 |
+
msgstr "Nessun appuntamento trovato."
|
6183 |
+
|
6184 |
+
msgid "Show past appointments"
|
6185 |
+
msgstr "Mostra appuntamenti passati"
|
6186 |
|
6187 |
+
msgid "Would you like to pay deposit or total price"
|
6188 |
+
msgstr ""
|
6189 |
|
6190 |
+
msgid "I will pay deposit"
|
|
|
|
|
6191 |
msgstr ""
|
|
|
|
|
|
|
6192 |
|
6193 |
+
msgid "I will pay total price"
|
6194 |
+
msgstr ""
|
6195 |
|
6196 |
+
msgid "Deposit options"
|
6197 |
msgstr ""
|
6198 |
|
6199 |
+
msgid "Deposit only"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6200 |
msgstr ""
|
6201 |
|
6202 |
+
msgid "Deposit or full price"
|
|
|
|
|
6203 |
msgstr ""
|
6204 |
|
6205 |
msgid ""
|
6206 |
+
"If you enable \"Deposit only\", customers will be requested to pay only a "
|
6207 |
+
"deposit amount. If you enable \"Deposit or full price\", customers will be "
|
6208 |
+
"requested to pay a deposit amount or a full amount."
|
6209 |
msgstr ""
|
6210 |
|
6211 |
+
msgid "Amount due"
|
6212 |
msgstr ""
|
6213 |
|
6214 |
+
msgid "Amount to pay"
|
6215 |
msgstr ""
|
6216 |
|
6217 |
+
msgid "Total deposit amount to be paid"
|
6218 |
msgstr ""
|
6219 |
|
6220 |
+
msgid "Amount paid"
|
|
|
|
|
|
|
6221 |
msgstr ""
|
6222 |
|
6223 |
+
msgid "Disable deposit update"
|
6224 |
msgstr ""
|
6225 |
|
6226 |
+
msgid "Deposit value"
|
6227 |
msgstr ""
|
6228 |
|
6229 |
+
msgid "Pay now"
|
6230 |
msgstr ""
|
6231 |
|
6232 |
+
msgid "Pay now tax"
|
6233 |
msgstr ""
|
6234 |
|
6235 |
+
msgid "Your task is done"
|
|
|
|
|
|
|
6236 |
msgstr ""
|
6237 |
|
6238 |
msgid ""
|
6239 |
+
"Dear {client_name}.\n"
|
6240 |
+
"\n"
|
6241 |
+
"Your task {service_name} has been done.\n"
|
6242 |
+
"\n"
|
6243 |
+
"Thank you for choosing our company.\n"
|
6244 |
+
"\n"
|
6245 |
+
"{company_name}\n"
|
6246 |
+
"{company_phone}\n"
|
6247 |
+
"{company_website}"
|
6248 |
msgstr ""
|
6249 |
|
6250 |
+
msgid "Task is done"
|
6251 |
msgstr ""
|
6252 |
|
6253 |
+
msgid ""
|
6254 |
+
"Hello.\n"
|
6255 |
+
"\n"
|
6256 |
+
"The following task has been done.\n"
|
6257 |
+
"\n"
|
6258 |
+
"Service: {service_name}\n"
|
6259 |
+
"\n"
|
6260 |
+
"Client name: {client_name}\n"
|
6261 |
+
"\n"
|
6262 |
+
"Client phone: {client_phone}\n"
|
6263 |
+
"\n"
|
6264 |
+
"Client email: {client_email}"
|
6265 |
msgstr ""
|
6266 |
|
6267 |
+
msgid ""
|
6268 |
+
"Dear {client_name}.\n"
|
6269 |
+
"Your task {service_name} has been done.\n"
|
6270 |
+
"Thank you for choosing our company.\n"
|
6271 |
+
"{company_name}\n"
|
6272 |
+
"{company_phone}\n"
|
6273 |
+
"{company_website}"
|
6274 |
msgstr ""
|
6275 |
|
6276 |
+
msgid ""
|
6277 |
+
"Hello.\n"
|
6278 |
+
"The following task has been done.\n"
|
6279 |
+
"Service: {service_name}\n"
|
6280 |
+
"Client name: {client_name}\n"
|
6281 |
+
"Client phone: {client_phone}\n"
|
6282 |
+
"Client email: {client_email}"
|
6283 |
msgstr ""
|
6284 |
|
6285 |
+
msgid "Skip"
|
6286 |
msgstr ""
|
6287 |
|
6288 |
+
msgid "Tasks"
|
6289 |
msgstr ""
|
6290 |
|
6291 |
+
msgid "Skip time selection"
|
6292 |
msgstr ""
|
6293 |
|
6294 |
+
msgid "Time step settings"
|
6295 |
msgstr ""
|
6296 |
|
6297 |
+
msgid "Optional"
|
6298 |
msgstr ""
|
6299 |
|
6300 |
+
msgid ""
|
6301 |
+
"This setting allows to display the step of selecting an appointment time, "
|
6302 |
+
"hide it and create a task without due time, or display the time step, but "
|
6303 |
+
"allow a customer to skip it."
|
6304 |
msgstr ""
|
6305 |
|
6306 |
+
msgid "Incorrect payment data"
|
6307 |
msgstr ""
|
6308 |
|
6309 |
+
msgid "Agent ID"
|
6310 |
msgstr ""
|
6311 |
|
6312 |
+
msgid "The total price for the booking is {total_price}."
|
6313 |
+
msgstr "Il prezzo totale per la prenotazione è {total_price}."
|
6314 |
+
|
6315 |
msgid ""
|
6316 |
+
"You selected to book {appointments_count} appointments with total price "
|
6317 |
+
"{total_price}."
|
6318 |
msgstr ""
|
6319 |
+
"Hai scelto di prenotare {appointments_count} con un prezzo totale di "
|
6320 |
+
"{total_price}."
|
6321 |
|
6322 |
+
msgid "Coupon"
|
6323 |
+
msgstr "Coupon"
|
6324 |
|
6325 |
+
msgid "This coupon code is invalid or has been used"
|
6326 |
+
msgstr "Questo coupon non è valido o è già stato utilizzato"
|
6327 |
|
6328 |
+
msgid "This coupon code has expired"
|
6329 |
msgstr ""
|
6330 |
|
6331 |
+
msgid "Discount (%)"
|
6332 |
+
msgstr "Sconto (%)"
|
6333 |
|
6334 |
+
msgid "Deduction"
|
6335 |
+
msgstr "Detrazione"
|
6336 |
+
|
6337 |
+
msgid "Customers limit"
|
6338 |
msgstr ""
|
6339 |
|
6340 |
+
msgid "Usage limit"
|
6341 |
+
msgstr "Limite di utilizzo"
|
6342 |
+
|
6343 |
+
msgid "Number of times used"
|
6344 |
+
msgstr "Numero di volte usato"
|
6345 |
+
|
6346 |
+
msgid "Active from"
|
6347 |
msgstr ""
|
6348 |
|
6349 |
+
msgid "Active until"
|
6350 |
msgstr ""
|
6351 |
|
6352 |
+
msgid "Min. appointments"
|
|
|
|
|
|
|
6353 |
msgstr ""
|
|
|
|
|
6354 |
|
6355 |
+
msgid "Max. appointments"
|
6356 |
msgstr ""
|
6357 |
|
6358 |
+
msgid "Coupons"
|
6359 |
+
msgstr "Coupons"
|
6360 |
|
6361 |
+
msgid "Add Coupon Series"
|
|
|
|
|
6362 |
msgstr ""
|
6363 |
|
6364 |
+
msgid "Add Coupon"
|
6365 |
+
msgstr "Aggiungi Coupon"
|
6366 |
+
|
6367 |
+
msgid "Coupon code"
|
6368 |
msgstr ""
|
6369 |
|
6370 |
+
msgid "Show only active"
|
|
|
6371 |
msgstr ""
|
|
|
|
|
6372 |
|
6373 |
+
msgid "Export only active coupons"
|
|
|
|
|
6374 |
msgstr ""
|
|
|
|
|
6375 |
|
6376 |
+
msgid "New coupon series"
|
6377 |
msgstr ""
|
6378 |
|
6379 |
+
msgid "New coupon"
|
6380 |
+
msgstr "Nuovo coupon"
|
6381 |
|
6382 |
+
msgid "Edit coupon"
|
6383 |
+
msgstr "Modifica coupon"
|
6384 |
+
|
6385 |
+
msgid "Generate"
|
|
|
|
|
6386 |
msgstr ""
|
6387 |
|
6388 |
msgid ""
|
6389 |
+
"You can enter a mask containing asterisks \"*\" for variables here and click "
|
6390 |
+
"Generate."
|
6391 |
msgstr ""
|
6392 |
|
6393 |
+
msgid "Mask"
|
6394 |
msgstr ""
|
6395 |
|
6396 |
+
msgid "Enter a mask containing asterisks \"*\" for variables."
|
|
|
|
|
6397 |
msgstr ""
|
|
|
|
|
6398 |
|
6399 |
+
msgid "Once per customer"
|
6400 |
+
msgstr ""
|
6401 |
|
6402 |
+
msgid ""
|
6403 |
+
"Select this option to limit the use of the coupon to 1 time per customer."
|
6404 |
+
msgstr ""
|
6405 |
|
6406 |
+
msgid "Date limit (from and to)"
|
6407 |
+
msgstr ""
|
6408 |
|
6409 |
+
msgid "No limit"
|
6410 |
+
msgstr ""
|
6411 |
|
6412 |
+
msgid "Clear field"
|
|
|
|
|
6413 |
msgstr ""
|
|
|
|
|
6414 |
|
6415 |
+
msgid "Limit appointments in cart (min and max)"
|
6416 |
+
msgstr ""
|
6417 |
|
6418 |
msgid ""
|
6419 |
+
"Specify minimum and maximum (optional) number of services of the same type "
|
6420 |
+
"required to apply a coupon."
|
6421 |
msgstr ""
|
|
|
|
|
6422 |
|
6423 |
+
msgid "Limit to customers"
|
|
|
|
|
|
|
6424 |
msgstr ""
|
|
|
|
|
|
|
|
|
6425 |
|
6426 |
+
msgid "Create another coupon"
|
|
|
|
|
6427 |
msgstr ""
|
6428 |
|
6429 |
+
msgid "No coupons found."
|
6430 |
+
msgstr "Nessun coupon trovato."
|
6431 |
|
6432 |
+
msgid "All customers"
|
6433 |
+
msgstr ""
|
6434 |
|
6435 |
+
msgid "Discount should be between 0 and 100."
|
6436 |
+
msgstr "Lo sconto dovrebbe essere compreso tra 0 e 100."
|
6437 |
+
|
6438 |
+
msgid "Deduction should be a positive number."
|
6439 |
+
msgstr "La detrazione dovrebbe essere un numero positivo."
|
6440 |
+
|
6441 |
+
msgid "Min appointments should be greater than zero."
|
6442 |
msgstr ""
|
6443 |
|
6444 |
+
msgid "Max appointments should be greater than zero."
|
6445 |
msgstr ""
|
6446 |
|
6447 |
+
msgid "The code already exists"
|
|
|
|
|
|
|
|
|
6448 |
msgstr ""
|
6449 |
|
6450 |
+
msgid "Please enter a non empty mask."
|
6451 |
msgstr ""
|
6452 |
|
6453 |
#, php-format
|
6454 |
msgid ""
|
6455 |
+
"It is not possible to generate %d codes for this mask. Only %d codes "
|
6456 |
+
"available."
|
6457 |
msgstr ""
|
6458 |
|
6459 |
+
msgid "All possible codes have already been generated for this mask."
|
6460 |
msgstr ""
|
6461 |
|
6462 |
+
msgid "Default code mask"
|
6463 |
msgstr ""
|
6464 |
|
6465 |
+
msgid "Enter default mask for auto-generated codes."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6466 |
msgstr ""
|
6467 |
|
6468 |
+
msgid "Show coupons"
|
6469 |
msgstr ""
|
6470 |
|
6471 |
+
msgid "Group name"
|
|
|
|
|
|
|
6472 |
msgstr ""
|
6473 |
|
6474 |
+
msgid "Number of users"
|
6475 |
msgstr ""
|
6476 |
|
6477 |
+
msgid "Description"
|
|
|
|
|
|
|
6478 |
msgstr ""
|
6479 |
|
6480 |
+
msgid "Group"
|
6481 |
msgstr ""
|
6482 |
|
6483 |
+
msgid "Customer Groups"
|
6484 |
msgstr ""
|
6485 |
|
6486 |
+
msgid "New group"
|
6487 |
msgstr ""
|
6488 |
|
6489 |
+
msgid "Customers without group"
|
|
|
|
|
|
|
|
|
|
|
6490 |
msgstr ""
|
|
|
|
|
6491 |
|
6492 |
+
msgid "New Group"
|
6493 |
msgstr ""
|
6494 |
|
6495 |
+
msgid "Edit Group"
|
|
|
|
|
6496 |
msgstr ""
|
6497 |
|
6498 |
+
msgid "No customer groups yet."
|
6499 |
msgstr ""
|
6500 |
|
6501 |
+
msgid "Customer Group"
|
6502 |
msgstr ""
|
6503 |
|
6504 |
+
msgid "No group"
|
6505 |
+
msgstr ""
|
6506 |
|
6507 |
+
msgid "Total discount"
|
6508 |
msgstr ""
|
6509 |
|
6510 |
+
#, php-format
|
6511 |
msgid ""
|
6512 |
+
"Enter the fixed amount of discount (e.g. 10 off). To specify a percentage "
|
6513 |
+
"discount (e.g. 10% off), add '%' symbol to a numerical value."
|
6514 |
msgstr ""
|
6515 |
|
6516 |
+
msgid "Edit group"
|
6517 |
msgstr ""
|
6518 |
|
6519 |
+
msgid "Group name is required"
|
6520 |
msgstr ""
|
6521 |
|
6522 |
+
msgid "Groups"
|
6523 |
msgstr ""
|
6524 |
|
6525 |
+
msgid "All groups"
|
6526 |
+
msgstr ""
|
6527 |
+
|
6528 |
+
msgid "No group selected"
|
6529 |
+
msgstr ""
|
6530 |
+
|
6531 |
+
msgid "Customer group based"
|
6532 |
+
msgstr ""
|
6533 |
+
|
6534 |
+
msgid "Notification to customer about placing on waiting list"
|
6535 |
msgstr ""
|
6536 |
|
6537 |
msgid ""
|
6538 |
"Dear {client_name}.\n"
|
6539 |
"\n"
|
6540 |
+
"This is a confirmation that you have been added to the waiting list for "
|
6541 |
+
"{service_name} on {appointment_date} at {appointment_time}.\n"
|
6542 |
"\n"
|
6543 |
"Thank you for choosing our company.\n"
|
6544 |
"\n"
|
6547 |
"{company_website}"
|
6548 |
msgstr ""
|
6549 |
|
6550 |
+
msgid "Notification to staff member about placing on waiting list"
|
6551 |
msgstr ""
|
6552 |
|
6553 |
msgid ""
|
6554 |
"Hello.\n"
|
6555 |
"\n"
|
6556 |
+
"You have new customer in the waiting list.\n"
|
6557 |
"\n"
|
6558 |
"Service: {service_name}\n"
|
6559 |
+
"Date: {appointment_date}\n"
|
6560 |
+
"Time: {appointment_time}\n"
|
6561 |
"Client name: {client_name}\n"
|
|
|
6562 |
"Client phone: {client_phone}\n"
|
|
|
6563 |
"Client email: {client_email}"
|
6564 |
msgstr ""
|
6565 |
|
6566 |
+
msgid "Notification to staff member to set appointment from waiting list"
|
6567 |
+
msgstr ""
|
6568 |
+
|
6569 |
+
msgid "Set appointment from waiting list"
|
6570 |
+
msgstr ""
|
6571 |
+
|
6572 |
+
msgid ""
|
6573 |
+
"Dear {staff_name},\n"
|
6574 |
+
"\n"
|
6575 |
+
"The time slot on {appointment_date} at {appointment_time} for {service_name} "
|
6576 |
+
"is now available for booking. Please see the list of customers on the "
|
6577 |
+
"waiting list and make a new appointment.\n"
|
6578 |
+
"\n"
|
6579 |
+
"{appointment_waiting_list}"
|
6580 |
+
msgstr ""
|
6581 |
+
|
6582 |
msgid ""
|
6583 |
"Dear {client_name}.\n"
|
6584 |
+
"This is a confirmation that you have been added to the waiting list for "
|
6585 |
+
"{service_name} on {appointment_date} at {appointment_time}.\n"
|
6586 |
"Thank you for choosing our company.\n"
|
6587 |
"{company_name}\n"
|
6588 |
"{company_phone}\n"
|
6591 |
|
6592 |
msgid ""
|
6593 |
"Hello.\n"
|
6594 |
+
"You have new customer in the waiting list.\n"
|
6595 |
"Service: {service_name}\n"
|
6596 |
+
"Date: {appointment_date}\n"
|
6597 |
+
"Time: {appointment_time}\n"
|
6598 |
"Client name: {client_name}\n"
|
6599 |
"Client phone: {client_phone}\n"
|
6600 |
"Client email: {client_email}"
|
6601 |
msgstr ""
|
6602 |
|
6603 |
+
msgid ""
|
6604 |
+
"Dear {staff_name},\n"
|
6605 |
+
"The time slot on {appointment_date} at {appointment_time} for {service_name} "
|
6606 |
+
"is now available for booking. Please see the list of customers on the "
|
6607 |
+
"waiting list and make a new appointment.\n"
|
6608 |
+
"{appointment_waiting_list}"
|
6609 |
msgstr ""
|
6610 |
|
6611 |
+
msgid ""
|
6612 |
+
"To join the waiting list for a busy time slot, please select a slot marked "
|
6613 |
+
"with \"(N)\", where N is a number of customers on the waiting list."
|
6614 |
msgstr ""
|
6615 |
|
6616 |
+
msgid "Notification for staff member to set up appointment from waiting list"
|
6617 |
+
msgstr ""
|
6618 |
+
|
6619 |
+
msgid "Set appointment"
|
6620 |
+
msgstr ""
|
6621 |
+
|
6622 |
+
msgid "Number of persons on waiting list"
|
6623 |
+
msgstr ""
|
6624 |
+
|
6625 |
+
msgid "Show waiting list slots"
|
6626 |
+
msgstr ""
|
6627 |
+
|
6628 |
+
msgid "Waiting list of appointment"
|
6629 |
+
msgstr ""
|
6630 |
+
|
6631 |
+
msgid "Show chain appointments"
|
6632 |
+
msgstr ""
|
6633 |
+
|
6634 |
+
msgid "Browse"
|
6635 |
+
msgstr ""
|
6636 |
+
|
6637 |
+
msgid "Upload directory"
|
6638 |
+
msgstr ""
|
6639 |
+
|
6640 |
+
msgid ""
|
6641 |
+
"Enter the network folder path where the files will be stored. If necessary, "
|
6642 |
+
"make sure that there is no free web access to the folder materials."
|
6643 |
+
msgstr ""
|
6644 |
+
|
6645 |
+
msgid "Files"
|
6646 |
+
msgstr ""
|
6647 |
+
|
6648 |
+
msgid "File Upload Field"
|
6649 |
+
msgstr ""
|
6650 |
+
|
6651 |
+
msgid "File"
|
6652 |
+
msgstr ""
|
6653 |
+
|
6654 |
+
msgid "Show custom fields required"
|
6655 |
+
msgstr ""
|
6656 |
+
|
6657 |
+
msgid "Show files"
|
6658 |
+
msgstr ""
|
6659 |
+
|
6660 |
+
msgid "Number of uploaded files"
|
6661 |
+
msgstr ""
|
6662 |
+
|
6663 |
+
msgid "download"
|
6664 |
+
msgstr ""
|
6665 |
+
|
6666 |
+
msgid ""
|
6667 |
+
"In <b>Checkout Options</b> of your 2Checkout account do the following steps:"
|
6668 |
+
msgstr ""
|
6669 |
+
|
6670 |
+
msgid "In <b>Direct Return</b> select <b>Header Redirect (Your URL)</b>."
|
6671 |
+
msgstr ""
|
6672 |
+
|
6673 |
+
msgid "In <b>Approved URL</b> enter the URL of your booking page."
|
6674 |
+
msgstr ""
|
6675 |
+
|
6676 |
+
msgid "Finally provide the necessary information in the form below."
|
6677 |
+
msgstr ""
|
6678 |
+
|
6679 |
+
msgid "Account Number"
|
6680 |
+
msgstr ""
|
6681 |
+
|
6682 |
+
msgid "Secret Word"
|
6683 |
+
msgstr ""
|
6684 |
+
|
6685 |
+
msgid "Select the Extras you'd like (Multiple Selection)"
|
6686 |
+
msgstr ""
|
6687 |
+
|
6688 |
+
msgid "Multiply extras by number of persons"
|
6689 |
+
msgstr ""
|
6690 |
+
|
6691 |
+
msgid "If enabled, all extras will be multiplied by number of persons."
|
6692 |
+
msgstr ""
|
6693 |
+
|
6694 |
+
msgid "Extras Step"
|
6695 |
+
msgstr ""
|
6696 |
+
|
6697 |
+
msgid "After Service step"
|
6698 |
+
msgstr ""
|
6699 |
+
|
6700 |
+
msgid "After Time step (Extras duration settings will be ignored)"
|
6701 |
+
msgstr ""
|
6702 |
+
|
6703 |
+
msgid "Summary"
|
6704 |
+
msgstr ""
|
6705 |
+
|
6706 |
+
msgid "Service Extras"
|
6707 |
+
msgstr ""
|
6708 |
+
|
6709 |
+
msgid "Extras titles"
|
6710 |
+
msgstr ""
|
6711 |
+
|
6712 |
+
msgid "Extras total price"
|
6713 |
msgstr ""
|
6714 |
|
6715 |
+
msgid "Show title"
|
|
|
|
|
|
|
6716 |
msgstr ""
|
6717 |
|
6718 |
+
msgid "Show price"
|
6719 |
msgstr ""
|
6720 |
|
6721 |
+
msgid "Show image"
|
6722 |
msgstr ""
|
6723 |
|
6724 |
+
msgid "Show duration"
|
6725 |
msgstr ""
|
6726 |
|
6727 |
+
msgid "Show summary"
|
6728 |
msgstr ""
|
6729 |
|
6730 |
+
msgid "Show Extras step"
|
6731 |
msgstr ""
|
6732 |
|
6733 |
+
msgid "Show extras"
|
6734 |
msgstr ""
|
6735 |
|
6736 |
+
msgid "Max quantity"
|
6737 |
msgstr ""
|
6738 |
|
6739 |
+
msgid "New Item"
|
6740 |
msgstr ""
|
6741 |
|
6742 |
+
msgid "Loop over extras"
|
6743 |
msgstr ""
|
6744 |
|
6745 |
+
msgid "Loop over extras with delimiter"
|
6746 |
msgstr ""
|
6747 |
|
6748 |
+
msgid "Extras title"
|
6749 |
msgstr ""
|
6750 |
|
6751 |
+
msgid "Extras quantity"
|
6752 |
msgstr ""
|
6753 |
|
6754 |
+
msgid "Extras price"
|
6755 |
msgstr ""
|
6756 |
|
6757 |
+
msgid "Extras tax"
|
6758 |
msgstr ""
|
6759 |
|
6760 |
+
msgid "Book More"
|
6761 |
+
msgstr "Prenota più servizi"
|
6762 |
+
|
6763 |
msgid ""
|
6764 |
+
"Below you can find a list of services selected for booking.\n"
|
6765 |
+
"Click BOOK MORE if you want to add more services."
|
|
|
6766 |
msgstr ""
|
6767 |
+
"Qui sotto puoi trovare un elenco di servizi selezionati per la prenotazione."
|
6768 |
+
"\n"
|
6769 |
+
"Clicca PRENOTA PIU' SERVIZI se si desidera aggiungere più servizi."
|
6770 |
|
6771 |
+
msgid "Show Cart step"
|
6772 |
msgstr ""
|
6773 |
|
6774 |
+
msgid "Total tax"
|
6775 |
msgstr ""
|
6776 |
|
6777 |
+
msgid "Waiting list"
|
6778 |
msgstr ""
|
6779 |
|
6780 |
+
msgid "Free/Busy"
|
6781 |
msgstr ""
|
6782 |
|
6783 |
+
msgid "Custom statuses"
|
6784 |
msgstr ""
|
6785 |
|
6786 |
+
msgid "Add status"
|
6787 |
msgstr ""
|
6788 |
|
6789 |
+
msgid "New Status"
|
6790 |
msgstr ""
|
6791 |
|
6792 |
+
msgid "Edit Status"
|
6793 |
msgstr ""
|
6794 |
|
6795 |
+
msgid "Free/busy"
|
6796 |
msgstr ""
|
6797 |
|
6798 |
+
msgid "Busy"
|
6799 |
msgstr ""
|
6800 |
|
6801 |
+
msgid ""
|
6802 |
+
"If you select busy, then a customer with this status will occupy a place in "
|
6803 |
+
"appointment. If you select free, then a place will be considered as free."
|
6804 |
msgstr ""
|
6805 |
|
6806 |
+
msgid "No statuses found."
|
6807 |
msgstr ""
|
6808 |
|
6809 |
+
msgid "Custom Statuses"
|
6810 |
msgstr ""
|
6811 |
|
6812 |
+
msgid "PayPal ID"
|
6813 |
msgstr ""
|
6814 |
|
6815 |
msgid ""
|
6816 |
+
"Your PayPal ID or an email address associated with your PayPal account. "
|
6817 |
+
"Email addresses must be confirmed."
|
|
|
6818 |
msgstr ""
|
6819 |
|
6820 |
+
msgid "Disable special hours update"
|
6821 |
msgstr ""
|
6822 |
|
6823 |
+
msgid "Special prices for appointments which begin between:"
|
6824 |
msgstr ""
|
6825 |
|
6826 |
+
msgid "add special period"
|
6827 |
msgstr ""
|
6828 |
|
6829 |
+
msgid "Please select a location"
|
6830 |
+
msgstr ""
|
6831 |
+
|
6832 |
+
msgid "Staff members"
|
6833 |
+
msgstr ""
|
6834 |
+
|
6835 |
+
msgid "Locations"
|
6836 |
msgstr ""
|
6837 |
|
6838 |
msgid "Custom settings for location"
|
6843 |
"different locations."
|
6844 |
msgstr ""
|
6845 |
|
6846 |
+
msgid "Location info"
|
6847 |
msgstr ""
|
6848 |
|
6849 |
+
msgid "Location name"
|
6850 |
msgstr ""
|
6851 |
|
6852 |
+
msgid "New Location"
|
6853 |
msgstr ""
|
6854 |
|
6855 |
+
msgid "Edit Location"
|
6856 |
msgstr ""
|
6857 |
|
6858 |
+
msgid "Add Location"
|
6859 |
msgstr ""
|
6860 |
|
6861 |
+
msgid "No locations found."
|
6862 |
msgstr ""
|
6863 |
|
6864 |
+
msgid "W/o location"
|
6865 |
msgstr ""
|
6866 |
|
6867 |
+
msgid "Custom settings for location enabled"
|
6868 |
msgstr ""
|
6869 |
|
6870 |
+
msgid "Make selecting location required"
|
6871 |
msgstr ""
|
6872 |
|
6873 |
+
msgid "Default value for location select"
|
6874 |
+
msgstr ""
|
6875 |
+
|
6876 |
+
msgid "Default settings"
|
6877 |
msgstr ""
|
6878 |
|
6879 |
msgid ""
|
6880 |
+
"Set Default values that will be used in all locations where Use default "
|
6881 |
+
"settings is selected. To use custom settings in a location, select Use "
|
6882 |
+
"custom settings and enter custom values."
|
6883 |
msgstr ""
|
6884 |
|
6885 |
+
msgid "Use default settings"
|
6886 |
msgstr ""
|
6887 |
|
6888 |
+
msgid "Use custom settings"
|
6889 |
msgstr ""
|
6890 |
|
6891 |
+
msgid "Select locations where the services are provided."
|
6892 |
msgstr ""
|
6893 |
|
6894 |
+
msgid "Account ID"
|
6895 |
msgstr ""
|
6896 |
|
6897 |
+
msgid "Merchant ID"
|
6898 |
msgstr ""
|
6899 |
|
6900 |
+
msgid "Transaction rejected"
|
6901 |
msgstr ""
|
6902 |
|
6903 |
+
msgid "Pending payment"
|
6904 |
msgstr ""
|
6905 |
|
6906 |
+
msgid "Rating"
|
6907 |
msgstr ""
|
6908 |
|
6909 |
+
msgid "Displaying appointments rating in the backend"
|
6910 |
msgstr ""
|
6911 |
|
6912 |
+
msgid "Enable this setting to display ratings in the back-end."
|
6913 |
msgstr ""
|
6914 |
|
6915 |
+
msgid "Timeout for rating appointment"
|
|
|
|
|
6916 |
msgstr ""
|
6917 |
|
6918 |
msgid ""
|
6919 |
+
"Set a period of time after appointment when customer can rate and leave "
|
6920 |
+
"feedback for your services."
|
6921 |
msgstr ""
|
6922 |
|
6923 |
+
msgid "Period for calculating rating average"
|
6924 |
msgstr ""
|
6925 |
|
6926 |
+
msgid "Set a period of time during which the rating average is calculated."
|
6927 |
msgstr ""
|
6928 |
|
6929 |
+
msgid "Ratings"
|
6930 |
msgstr ""
|
6931 |
|
6932 |
+
msgid "Rating page URL"
|
6933 |
msgstr ""
|
6934 |
|
6935 |
+
msgid "Set the URL of a page with a rating and comment form."
|
6936 |
msgstr ""
|
6937 |
|
6938 |
+
msgid "Show staff member rating before employee name"
|
6939 |
msgstr ""
|
6940 |
|
6941 |
+
msgid "URL of the page for staff rating"
|
6942 |
msgstr ""
|
6943 |
|
6944 |
+
msgid "Add staff rating form"
|
6945 |
msgstr ""
|
6946 |
|
6947 |
+
msgid "Staff ratings"
|
6948 |
msgstr ""
|
6949 |
|
6950 |
+
msgid "A custom block for displaying staff ratings"
|
6951 |
msgstr ""
|
6952 |
|
6953 |
+
msgid "Hide comment"
|
6954 |
msgstr ""
|
6955 |
|
6956 |
+
msgid "The feedback period has expired."
|
6957 |
msgstr ""
|
6958 |
|
6959 |
+
msgid "You cannot rate this service before appointment."
|
|
|
|
|
|
|
|
|
6960 |
msgstr ""
|
6961 |
|
6962 |
+
#, php-format
|
6963 |
+
msgid "Rate the quality of the %s provided to you on %s at %s by %s"
|
6964 |
msgstr ""
|
6965 |
|
6966 |
+
msgid "Leave your comment"
|
6967 |
msgstr ""
|
6968 |
|
6969 |
+
msgid "Your rating has been saved. We appreciate your feedback."
|
6970 |
msgstr ""
|
6971 |
|
6972 |
+
#, php-format
|
6973 |
+
msgid ""
|
6974 |
+
"Provide <b>Secret</b> and <b>Publishable</b> keys which are available in the "
|
6975 |
+
"<a href=\"%s\" target=\"_blank\">Dashboard</a>."
|
6976 |
msgstr ""
|
6977 |
|
6978 |
+
#, php-format
|
6979 |
+
msgid ""
|
6980 |
+
"In the Dashboard's <a href=\"%s\" target=\"_blank\">Webhooks settings</a> "
|
6981 |
+
"section, click <b>Add endpoint</b> to reveal a form to add a new endpoint "
|
6982 |
+
"for receiving events."
|
6983 |
msgstr ""
|
6984 |
|
6985 |
+
#, php-format
|
6986 |
+
msgid ""
|
6987 |
+
"Enter the following URL as the destination for events <b>%s</b> and click <b>"
|
6988 |
+
"Add endpoint</b>."
|
6989 |
msgstr ""
|
6990 |
|
6991 |
+
msgid ""
|
6992 |
+
"Add these events: <b>payment_intent.succeeded</b>, <b>payment_intent."
|
6993 |
+
"payment_failed</b> and click <b>Add endpoint</b>."
|
6994 |
msgstr ""
|
6995 |
|
6996 |
+
msgid "Publishable Key"
|
6997 |
msgstr ""
|
6998 |
|
6999 |
+
msgid "Secret Key"
|
7000 |
msgstr ""
|
7001 |
|
7002 |
+
#, php-format
|
7003 |
+
msgid ""
|
7004 |
+
"Bookly Stripe add-on has been upgraded to support <a href=\"%s\" "
|
7005 |
+
"target=\"_blank\">SCA</a>. You must update your Stripe settings to keep the "
|
7006 |
+
"integration with the upgraded add-on."
|
7007 |
msgstr ""
|
7008 |
|
7009 |
+
#, php-format
|
7010 |
msgid ""
|
7011 |
+
"1. Make sure that <b>Publishable Key</b> is provided in <a href=\"%s\">"
|
7012 |
+
"payment settings</a>."
|
7013 |
msgstr ""
|
7014 |
|
7015 |
+
#, php-format
|
7016 |
+
msgid ""
|
7017 |
+
"2. In the Dashboard's <a href=\"%s\" target=\"_blank\">Webhooks settings</a> "
|
7018 |
+
"section, click <b>Add endpoint</b> to reveal a form to add a new endpoint "
|
7019 |
+
"for receiving events."
|
7020 |
msgstr ""
|
7021 |
|
7022 |
+
msgid "Set maximum value for Quantity field."
|
|
|
|
|
7023 |
msgstr ""
|
7024 |
|
7025 |
+
msgid "Multiply Appointments"
|
7026 |
msgstr ""
|
7027 |
|
7028 |
+
msgid "Google Calendar event"
|
7029 |
+
msgstr ""
|
7030 |
|
7031 |
msgid ""
|
7032 |
+
"With \"One-way\" sync Bookly pushes new appointments and any further changes "
|
7033 |
+
"to Google Calendar. With \"Two-way front-end only\" sync Bookly will "
|
7034 |
+
"additionally fetch events from Google Calendar and remove corresponding time "
|
7035 |
+
"slots before displaying the Time step of the booking form (this may lead to "
|
7036 |
+
"a delay when users click Next to get to the Time step). With \"Two-way\" "
|
7037 |
+
"sync all bookings created in Bookly Calendar will be automatically copied to "
|
7038 |
+
"Google Calendar and vice versa. Important: your website must use HTTPS. "
|
7039 |
+
"Google Calendar API will be able to send notifications only if there is a "
|
7040 |
+
"valid SSL certificate installed on your web server."
|
7041 |
msgstr ""
|
|
|
|
|
|
|
7042 |
|
7043 |
+
msgid "Copy Google Calendar event titles"
|
7044 |
msgstr ""
|
7045 |
|
7046 |
+
msgid ""
|
7047 |
+
"If enabled then titles of Google Calendar events will be copied to Bookly "
|
7048 |
+
"appointments. If disabled, a standard title \"Google Calendar event\" will "
|
7049 |
+
"be used."
|
7050 |
msgstr ""
|
7051 |
|
7052 |
+
msgid "Overwrite the description of the original Google Calendar events"
|
7053 |
+
msgstr ""
|
7054 |
+
|
7055 |
+
msgid ""
|
7056 |
+
"If enabled then the description of the Google Calendar events originally "
|
7057 |
+
"copied to Bookly will be overwritten by the Bookly appointment data after "
|
7058 |
+
"they have been edited in Bookly Calendar"
|
7059 |
+
msgstr ""
|
7060 |
+
|
7061 |
+
msgid "Synchronize with Google Calendar"
|
7062 |
msgstr ""
|
languages/bookly-nl_NL.mo
CHANGED
Binary file
|
languages/bookly-nl_NL.po
CHANGED
@@ -8,8 +8,8 @@ msgstr ""
|
|
8 |
"Language: nl_NL\n"
|
9 |
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
10 |
"Report-Msgid-Bugs-To: \n"
|
11 |
-
"POT-Creation-Date: 2020-
|
12 |
-
"PO-Revision-Date: 2020-
|
13 |
"Last-Translator: support@bookly.info\n"
|
14 |
"Language-Team: Dutch\n"
|
15 |
"X-Loco-Version: 2.3.1; wp-5.5"
|
@@ -67,8 +67,11 @@ msgstr "Opleveringsdatum"
|
|
67 |
msgid "INVOICE"
|
68 |
msgstr "Factuur"
|
69 |
|
70 |
-
msgid "Thank you for your business"
|
71 |
-
msgstr "Bedankt voor uw zaken"
|
|
|
|
|
|
|
72 |
|
73 |
msgid ""
|
74 |
"Invoices add-on requires your customers address information. So options "
|
@@ -152,6 +155,9 @@ msgstr "Belasting"
|
|
152 |
msgid "N/A"
|
153 |
msgstr "N/A"
|
154 |
|
|
|
|
|
|
|
155 |
msgid "Subtotal"
|
156 |
msgstr "Subtotaal"
|
157 |
|
@@ -170,9 +176,6 @@ msgstr "Betaald"
|
|
170 |
msgid "Due"
|
171 |
msgstr "Verschuldigd"
|
172 |
|
173 |
-
msgid "Discount"
|
174 |
-
msgstr "Korting"
|
175 |
-
|
176 |
msgid "Outlook Calendar event"
|
177 |
msgstr "Outlook Kalender evenement"
|
178 |
|
@@ -1716,6 +1719,9 @@ msgstr "API Login ID"
|
|
1716 |
msgid "API Transaction Key"
|
1717 |
msgstr "API Transactie Sleutel"
|
1718 |
|
|
|
|
|
|
|
1719 |
msgid "Title"
|
1720 |
msgstr "Titel"
|
1721 |
|
@@ -3934,6 +3940,12 @@ msgstr "Volgende facturatiedatum"
|
|
3934 |
msgid "Deactivation date"
|
3935 |
msgstr "Deactiveringsdatum"
|
3936 |
|
|
|
|
|
|
|
|
|
|
|
|
|
3937 |
msgid "Stripe activation was not completed"
|
3938 |
msgstr "Stripe activatie is niet afgerond"
|
3939 |
|
@@ -7121,9 +7133,6 @@ msgstr ""
|
|
7121 |
msgid "Skip"
|
7122 |
msgstr "Overslaan"
|
7123 |
|
7124 |
-
msgid "Tasks"
|
7125 |
-
msgstr "Taken"
|
7126 |
-
|
7127 |
msgid "Skip time selection"
|
7128 |
msgstr "Sla tijd selectie over"
|
7129 |
|
@@ -7962,6 +7971,48 @@ msgstr ""
|
|
7962 |
"formulier weer te geven om een nieuw eindpunt toe te voegen voor het "
|
7963 |
"ontvangen van gebeurtenissen."
|
7964 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7965 |
msgid "Set maximum value for Quantity field."
|
7966 |
msgstr "Stel de maximale waarde in voor het veld Aantal."
|
7967 |
|
8 |
"Language: nl_NL\n"
|
9 |
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
10 |
"Report-Msgid-Bugs-To: \n"
|
11 |
+
"POT-Creation-Date: 2020-12-28 12:08+0000\n"
|
12 |
+
"PO-Revision-Date: 2020-12-28 12:13+0000\n"
|
13 |
"Last-Translator: support@bookly.info\n"
|
14 |
"Language-Team: Dutch\n"
|
15 |
"X-Loco-Version: 2.3.1; wp-5.5"
|
67 |
msgid "INVOICE"
|
68 |
msgstr "Factuur"
|
69 |
|
70 |
+
msgid "Thank you for your business!"
|
71 |
+
msgstr "Bedankt voor uw zaken!"
|
72 |
+
|
73 |
+
msgid "We really appreciate it"
|
74 |
+
msgstr "We waarderen het zeer"
|
75 |
|
76 |
msgid ""
|
77 |
"Invoices add-on requires your customers address information. So options "
|
155 |
msgid "N/A"
|
156 |
msgstr "N/A"
|
157 |
|
158 |
+
msgid "Discount"
|
159 |
+
msgstr "Korting"
|
160 |
+
|
161 |
msgid "Subtotal"
|
162 |
msgstr "Subtotaal"
|
163 |
|
176 |
msgid "Due"
|
177 |
msgstr "Verschuldigd"
|
178 |
|
|
|
|
|
|
|
179 |
msgid "Outlook Calendar event"
|
180 |
msgstr "Outlook Kalender evenement"
|
181 |
|
1719 |
msgid "API Transaction Key"
|
1720 |
msgstr "API Transactie Sleutel"
|
1721 |
|
1722 |
+
msgid "ID"
|
1723 |
+
msgstr "ID"
|
1724 |
+
|
1725 |
msgid "Title"
|
1726 |
msgstr "Titel"
|
1727 |
|
3940 |
msgid "Deactivation date"
|
3941 |
msgstr "Deactiveringsdatum"
|
3942 |
|
3943 |
+
msgid "Tasks"
|
3944 |
+
msgstr "Taken"
|
3945 |
+
|
3946 |
+
msgid "unlimited in trial"
|
3947 |
+
msgstr "onbeperkt in proefperiode"
|
3948 |
+
|
3949 |
msgid "Stripe activation was not completed"
|
3950 |
msgstr "Stripe activatie is niet afgerond"
|
3951 |
|
7133 |
msgid "Skip"
|
7134 |
msgstr "Overslaan"
|
7135 |
|
|
|
|
|
|
|
7136 |
msgid "Skip time selection"
|
7137 |
msgstr "Sla tijd selectie over"
|
7138 |
|
7971 |
"formulier weer te geven om een nieuw eindpunt toe te voegen voor het "
|
7972 |
"ontvangen van gebeurtenissen."
|
7973 |
|
7974 |
+
msgid "Condition"
|
7975 |
+
msgstr "Voorwaarde"
|
7976 |
+
|
7977 |
+
msgid "Discounts"
|
7978 |
+
msgstr "Kortingen"
|
7979 |
+
|
7980 |
+
msgid "number of persons"
|
7981 |
+
msgstr "aantal personen"
|
7982 |
+
|
7983 |
+
msgid "number of appointments"
|
7984 |
+
msgstr "aantal afspraken"
|
7985 |
+
|
7986 |
+
msgid "Add discount"
|
7987 |
+
msgstr "Voeg korting toe"
|
7988 |
+
|
7989 |
+
msgid "No discounts found."
|
7990 |
+
msgstr "Geen kortingen gevonden."
|
7991 |
+
|
7992 |
+
#, php-format
|
7993 |
+
msgid "If %s equals or exceeds %s"
|
7994 |
+
msgstr "indien %s gelijk is aan of groter dan %s"
|
7995 |
+
|
7996 |
+
msgid ""
|
7997 |
+
"Select if the discount is enabled and applied to the booking price if the "
|
7998 |
+
"conditions are met, or if it is disabled and not applied"
|
7999 |
+
msgstr ""
|
8000 |
+
"Selecteer of de korting is ingeschakeld en toegepast op de boekingsprijs als "
|
8001 |
+
"aan de voorwaarden is voldaan, of dat deze is uitgeschakeld en niet wordt "
|
8002 |
+
"toegepast"
|
8003 |
+
|
8004 |
+
msgid "Condition to apply the discount"
|
8005 |
+
msgstr "Voorwaarde om de korting toe te passen"
|
8006 |
+
|
8007 |
+
msgid "and the service is one of the selected"
|
8008 |
+
msgstr "en de service is een van de geselecteerde"
|
8009 |
+
|
8010 |
+
msgid "New discount"
|
8011 |
+
msgstr "Nieuwe korting"
|
8012 |
+
|
8013 |
+
msgid "Edit discount"
|
8014 |
+
msgstr "Korting bewerken"
|
8015 |
+
|
8016 |
msgid "Set maximum value for Quantity field."
|
8017 |
msgstr "Stel de maximale waarde in voor het veld Aantal."
|
8018 |
|
languages/bookly-pt_PT.mo
CHANGED
Binary file
|
languages/bookly-pt_PT.po
CHANGED
@@ -8,8 +8,8 @@ msgstr ""
|
|
8 |
"Language: pt_PT\n"
|
9 |
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
10 |
"Report-Msgid-Bugs-To: \n"
|
11 |
-
"POT-Creation-Date: 2020-
|
12 |
-
"PO-Revision-Date: 2020-
|
13 |
"Last-Translator: Isabel Andrade <estgf_nemo@hotmail.com>\n"
|
14 |
"Language-Team: Portuguese (Portugal)\n"
|
15 |
"X-Loco-Version: 2.3.1; wp-5.5"
|
@@ -68,8 +68,11 @@ msgstr "Data de vencimento"
|
|
68 |
msgid "INVOICE"
|
69 |
msgstr "FATURA"
|
70 |
|
71 |
-
msgid "Thank you for your business"
|
72 |
-
msgstr "Obrigado
|
|
|
|
|
|
|
73 |
|
74 |
msgid ""
|
75 |
"Invoices add-on requires your customers address information. So options "
|
@@ -158,6 +161,9 @@ msgstr "Tributação"
|
|
158 |
msgid "N/A"
|
159 |
msgstr "N/A"
|
160 |
|
|
|
|
|
|
|
161 |
msgid "Subtotal"
|
162 |
msgstr "Subtotal"
|
163 |
|
@@ -176,9 +182,6 @@ msgstr "Pago"
|
|
176 |
msgid "Due"
|
177 |
msgstr "Vencido"
|
178 |
|
179 |
-
msgid "Discount"
|
180 |
-
msgstr "Desconto"
|
181 |
-
|
182 |
msgid "Outlook Calendar event"
|
183 |
msgstr "Evento Calendário do Outlook"
|
184 |
|
@@ -1730,6 +1733,9 @@ msgstr "ID de Login do API"
|
|
1730 |
msgid "API Transaction Key"
|
1731 |
msgstr "Chave de transação do API"
|
1732 |
|
|
|
|
|
|
|
1733 |
msgid "Title"
|
1734 |
msgstr "Nome"
|
1735 |
|
@@ -3973,6 +3979,12 @@ msgstr "Próxima data de faturação"
|
|
3973 |
msgid "Deactivation date"
|
3974 |
msgstr "Data de desativação"
|
3975 |
|
|
|
|
|
|
|
|
|
|
|
|
|
3976 |
msgid "Stripe activation was not completed"
|
3977 |
msgstr ""
|
3978 |
"A ativação do Stripe não foi concluída\n"
|
@@ -7208,9 +7220,6 @@ msgstr ""
|
|
7208 |
msgid "Skip"
|
7209 |
msgstr "Passar"
|
7210 |
|
7211 |
-
msgid "Tasks"
|
7212 |
-
msgstr "Tarefas"
|
7213 |
-
|
7214 |
msgid "Skip time selection"
|
7215 |
msgstr "Saltar a seleção da hora"
|
7216 |
|
@@ -8049,6 +8058,48 @@ msgstr ""
|
|
8049 |
"Painel da Aplicação, clique em <b>Add endpoint</b> para exibir o formulário "
|
8050 |
"de adição de um novo endpoint para eventos recebidos."
|
8051 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8052 |
msgid "Set maximum value for Quantity field."
|
8053 |
msgstr "Defina o valor máximo para o campo Quantidade."
|
8054 |
|
8 |
"Language: pt_PT\n"
|
9 |
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
10 |
"Report-Msgid-Bugs-To: \n"
|
11 |
+
"POT-Creation-Date: 2020-12-28 10:41+0000\n"
|
12 |
+
"PO-Revision-Date: 2020-12-28 11:53+0000\n"
|
13 |
"Last-Translator: Isabel Andrade <estgf_nemo@hotmail.com>\n"
|
14 |
"Language-Team: Portuguese (Portugal)\n"
|
15 |
"X-Loco-Version: 2.3.1; wp-5.5"
|
68 |
msgid "INVOICE"
|
69 |
msgstr "FATURA"
|
70 |
|
71 |
+
msgid "Thank you for your business!"
|
72 |
+
msgstr "Obrigado por sua preferência!"
|
73 |
+
|
74 |
+
msgid "We really appreciate it"
|
75 |
+
msgstr "Ficamos muito agradecido"
|
76 |
|
77 |
msgid ""
|
78 |
"Invoices add-on requires your customers address information. So options "
|
161 |
msgid "N/A"
|
162 |
msgstr "N/A"
|
163 |
|
164 |
+
msgid "Discount"
|
165 |
+
msgstr "Desconto"
|
166 |
+
|
167 |
msgid "Subtotal"
|
168 |
msgstr "Subtotal"
|
169 |
|
182 |
msgid "Due"
|
183 |
msgstr "Vencido"
|
184 |
|
|
|
|
|
|
|
185 |
msgid "Outlook Calendar event"
|
186 |
msgstr "Evento Calendário do Outlook"
|
187 |
|
1733 |
msgid "API Transaction Key"
|
1734 |
msgstr "Chave de transação do API"
|
1735 |
|
1736 |
+
msgid "ID"
|
1737 |
+
msgstr "ID"
|
1738 |
+
|
1739 |
msgid "Title"
|
1740 |
msgstr "Nome"
|
1741 |
|
3979 |
msgid "Deactivation date"
|
3980 |
msgstr "Data de desativação"
|
3981 |
|
3982 |
+
msgid "Tasks"
|
3983 |
+
msgstr "Tarefas"
|
3984 |
+
|
3985 |
+
msgid "unlimited in trial"
|
3986 |
+
msgstr "Teste ilimitado"
|
3987 |
+
|
3988 |
msgid "Stripe activation was not completed"
|
3989 |
msgstr ""
|
3990 |
"A ativação do Stripe não foi concluída\n"
|
7220 |
msgid "Skip"
|
7221 |
msgstr "Passar"
|
7222 |
|
|
|
|
|
|
|
7223 |
msgid "Skip time selection"
|
7224 |
msgstr "Saltar a seleção da hora"
|
7225 |
|
8058 |
"Painel da Aplicação, clique em <b>Add endpoint</b> para exibir o formulário "
|
8059 |
"de adição de um novo endpoint para eventos recebidos."
|
8060 |
|
8061 |
+
msgid "Condition"
|
8062 |
+
msgstr "Condição"
|
8063 |
+
|
8064 |
+
msgid "Discounts"
|
8065 |
+
msgstr "Descontos"
|
8066 |
+
|
8067 |
+
msgid "number of persons"
|
8068 |
+
msgstr "número de pessoas"
|
8069 |
+
|
8070 |
+
msgid "number of appointments"
|
8071 |
+
msgstr "número de compromissos."
|
8072 |
+
|
8073 |
+
msgid "Add discount"
|
8074 |
+
msgstr "Adicionar desconto"
|
8075 |
+
|
8076 |
+
msgid "No discounts found."
|
8077 |
+
msgstr "Nenhum desconto encontrado."
|
8078 |
+
|
8079 |
+
#, php-format
|
8080 |
+
msgid "If %s equals or exceeds %s"
|
8081 |
+
msgstr "Se %s igual ou superior %s"
|
8082 |
+
|
8083 |
+
msgid ""
|
8084 |
+
"Select if the discount is enabled and applied to the booking price if the "
|
8085 |
+
"conditions are met, or if it is disabled and not applied"
|
8086 |
+
msgstr ""
|
8087 |
+
"Selecione se o desconto estiver ativado e aplique ao preço de reserva se as "
|
8088 |
+
"condições se aplicarem, ou, se não estiver ativado e não aplicado"
|
8089 |
+
|
8090 |
+
msgid "Condition to apply the discount"
|
8091 |
+
msgstr "Condição para aplicar o desconto"
|
8092 |
+
|
8093 |
+
msgid "and the service is one of the selected"
|
8094 |
+
msgstr "e o serviço é um dos selecionados"
|
8095 |
+
|
8096 |
+
msgid "New discount"
|
8097 |
+
msgstr "Novo desconto"
|
8098 |
+
|
8099 |
+
msgid "Edit discount"
|
8100 |
+
msgstr ""
|
8101 |
+
"Editar descontos\n"
|
8102 |
+
|
8103 |
msgid "Set maximum value for Quantity field."
|
8104 |
msgstr "Defina o valor máximo para o campo Quantidade."
|
8105 |
|
languages/bookly-ru_RU.mo
CHANGED
Binary file
|
languages/bookly-ru_RU.po
CHANGED
@@ -9,8 +9,8 @@ msgstr ""
|
|
9 |
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
|
10 |
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
11 |
"Report-Msgid-Bugs-To: \n"
|
12 |
-
"POT-Creation-Date: 2020-
|
13 |
-
"PO-Revision-Date: 2020-
|
14 |
"Last-Translator: support@bookly.info\n"
|
15 |
"Language-Team: Russian\n"
|
16 |
"X-Loco-Version: 2.3.1; wp-5.5"
|
@@ -68,8 +68,11 @@ msgstr "Срок платежа"
|
|
68 |
msgid "INVOICE"
|
69 |
msgstr "СЧЁТ"
|
70 |
|
71 |
-
msgid "Thank you for your business"
|
72 |
-
msgstr "
|
|
|
|
|
|
|
73 |
|
74 |
msgid ""
|
75 |
"Invoices add-on requires your customers address information. So options "
|
@@ -152,6 +155,9 @@ msgstr "Налог"
|
|
152 |
msgid "N/A"
|
153 |
msgstr "N/A"
|
154 |
|
|
|
|
|
|
|
155 |
msgid "Subtotal"
|
156 |
msgstr "Промежуточный итог"
|
157 |
|
@@ -170,9 +176,6 @@ msgstr "Оплачено"
|
|
170 |
msgid "Due"
|
171 |
msgstr "Долг"
|
172 |
|
173 |
-
msgid "Discount"
|
174 |
-
msgstr "Скидка"
|
175 |
-
|
176 |
msgid "Outlook Calendar event"
|
177 |
msgstr "Событие Календаря Outlook"
|
178 |
|
@@ -1729,6 +1732,9 @@ msgstr "API Login ID"
|
|
1729 |
msgid "API Transaction Key"
|
1730 |
msgstr "API Transaction Key"
|
1731 |
|
|
|
|
|
|
|
1732 |
msgid "Title"
|
1733 |
msgstr "Название"
|
1734 |
|
@@ -3954,6 +3960,12 @@ msgstr "Дата следующего платежа"
|
|
3954 |
msgid "Deactivation date"
|
3955 |
msgstr "Дата деактивации"
|
3956 |
|
|
|
|
|
|
|
|
|
|
|
|
|
3957 |
msgid "Stripe activation was not completed"
|
3958 |
msgstr "Активация Stripe не завершена"
|
3959 |
|
@@ -7159,9 +7171,6 @@ msgstr ""
|
|
7159 |
msgid "Skip"
|
7160 |
msgstr "Пропустить"
|
7161 |
|
7162 |
-
msgid "Tasks"
|
7163 |
-
msgstr "Задачи"
|
7164 |
-
|
7165 |
msgid "Skip time selection"
|
7166 |
msgstr "Пропустить назначение времени"
|
7167 |
|
@@ -7992,6 +8001,47 @@ msgstr ""
|
|
7992 |
"Dashboard-а, нажмите <b>Add endpoint</b>, чтобы открыть форму для добавления "
|
7993 |
"новой точки входа для получения событий."
|
7994 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7995 |
msgid "Set maximum value for Quantity field."
|
7996 |
msgstr "Установите максимальное значение для поля Количество."
|
7997 |
|
9 |
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
|
10 |
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
11 |
"Report-Msgid-Bugs-To: \n"
|
12 |
+
"POT-Creation-Date: 2020-12-28 09:15+0000\n"
|
13 |
+
"PO-Revision-Date: 2020-12-28 12:14+0000\n"
|
14 |
"Last-Translator: support@bookly.info\n"
|
15 |
"Language-Team: Russian\n"
|
16 |
"X-Loco-Version: 2.3.1; wp-5.5"
|
68 |
msgid "INVOICE"
|
69 |
msgstr "СЧЁТ"
|
70 |
|
71 |
+
msgid "Thank you for your business!"
|
72 |
+
msgstr "Спасибо!"
|
73 |
+
|
74 |
+
msgid "We really appreciate it"
|
75 |
+
msgstr "Мы действительно это ценим"
|
76 |
|
77 |
msgid ""
|
78 |
"Invoices add-on requires your customers address information. So options "
|
155 |
msgid "N/A"
|
156 |
msgstr "N/A"
|
157 |
|
158 |
+
msgid "Discount"
|
159 |
+
msgstr "Скидка"
|
160 |
+
|
161 |
msgid "Subtotal"
|
162 |
msgstr "Промежуточный итог"
|
163 |
|
176 |
msgid "Due"
|
177 |
msgstr "Долг"
|
178 |
|
|
|
|
|
|
|
179 |
msgid "Outlook Calendar event"
|
180 |
msgstr "Событие Календаря Outlook"
|
181 |
|
1732 |
msgid "API Transaction Key"
|
1733 |
msgstr "API Transaction Key"
|
1734 |
|
1735 |
+
msgid "ID"
|
1736 |
+
msgstr "ID"
|
1737 |
+
|
1738 |
msgid "Title"
|
1739 |
msgstr "Название"
|
1740 |
|
3960 |
msgid "Deactivation date"
|
3961 |
msgstr "Дата деактивации"
|
3962 |
|
3963 |
+
msgid "Tasks"
|
3964 |
+
msgstr "Задачи"
|
3965 |
+
|
3966 |
+
msgid "unlimited in trial"
|
3967 |
+
msgstr "без ограничений в течение пробного периода"
|
3968 |
+
|
3969 |
msgid "Stripe activation was not completed"
|
3970 |
msgstr "Активация Stripe не завершена"
|
3971 |
|
7171 |
msgid "Skip"
|
7172 |
msgstr "Пропустить"
|
7173 |
|
|
|
|
|
|
|
7174 |
msgid "Skip time selection"
|
7175 |
msgstr "Пропустить назначение времени"
|
7176 |
|
8001 |
"Dashboard-а, нажмите <b>Add endpoint</b>, чтобы открыть форму для добавления "
|
8002 |
"новой точки входа для получения событий."
|
8003 |
|
8004 |
+
msgid "Condition"
|
8005 |
+
msgstr "Условие"
|
8006 |
+
|
8007 |
+
msgid "Discounts"
|
8008 |
+
msgstr "Скидки"
|
8009 |
+
|
8010 |
+
msgid "number of persons"
|
8011 |
+
msgstr "количество персон"
|
8012 |
+
|
8013 |
+
msgid "number of appointments"
|
8014 |
+
msgstr "количество записей"
|
8015 |
+
|
8016 |
+
msgid "Add discount"
|
8017 |
+
msgstr "Добавить скидку"
|
8018 |
+
|
8019 |
+
msgid "No discounts found."
|
8020 |
+
msgstr "Скидки не найдены."
|
8021 |
+
|
8022 |
+
#, php-format
|
8023 |
+
msgid "If %s equals or exceeds %s"
|
8024 |
+
msgstr "Если %s равно или больше %s"
|
8025 |
+
|
8026 |
+
msgid ""
|
8027 |
+
"Select if the discount is enabled and applied to the booking price if the "
|
8028 |
+
"conditions are met, or if it is disabled and not applied"
|
8029 |
+
msgstr ""
|
8030 |
+
"Выберите, включена ли скидка и применяется к стоимости бронирования при "
|
8031 |
+
"выполнении условий, или она отключена и не применяется"
|
8032 |
+
|
8033 |
+
msgid "Condition to apply the discount"
|
8034 |
+
msgstr "Условие для применения скидки"
|
8035 |
+
|
8036 |
+
msgid "and the service is one of the selected"
|
8037 |
+
msgstr "и сервис один из выбранных"
|
8038 |
+
|
8039 |
+
msgid "New discount"
|
8040 |
+
msgstr "Новая скидка"
|
8041 |
+
|
8042 |
+
msgid "Edit discount"
|
8043 |
+
msgstr "Редактировать скидку"
|
8044 |
+
|
8045 |
msgid "Set maximum value for Quantity field."
|
8046 |
msgstr "Установите максимальное значение для поля Количество."
|
8047 |
|
languages/bookly-zh_TW.mo
CHANGED
Binary file
|
languages/bookly-zh_TW.po
CHANGED
@@ -8,8 +8,8 @@ msgstr ""
|
|
8 |
"Language: zh_TW\n"
|
9 |
"Plural-Forms: nplurals=1; plural=0;\n"
|
10 |
"Report-Msgid-Bugs-To: \n"
|
11 |
-
"POT-Creation-Date: 2020-
|
12 |
-
"PO-Revision-Date: 2020-
|
13 |
"Last-Translator: Erika <erikayiu12@gmail.com>\n"
|
14 |
"Language-Team: Chinese (Taiwan)\n"
|
15 |
"X-Loco-Version: 2.3.1; wp-5.5"
|
@@ -66,8 +66,11 @@ msgstr "到期日"
|
|
66 |
msgid "INVOICE"
|
67 |
msgstr "發票"
|
68 |
|
69 |
-
msgid "Thank you for your business"
|
70 |
-
msgstr "
|
|
|
|
|
|
|
71 |
|
72 |
msgid ""
|
73 |
"Invoices add-on requires your customers address information. So options "
|
@@ -145,6 +148,9 @@ msgstr "稅"
|
|
145 |
msgid "N/A"
|
146 |
msgstr "不適用"
|
147 |
|
|
|
|
|
|
|
148 |
msgid "Subtotal"
|
149 |
msgstr "小計"
|
150 |
|
@@ -163,9 +169,6 @@ msgstr "付費"
|
|
163 |
msgid "Due"
|
164 |
msgstr "應有"
|
165 |
|
166 |
-
msgid "Discount"
|
167 |
-
msgstr "折扣"
|
168 |
-
|
169 |
msgid "Outlook Calendar event"
|
170 |
msgstr "Outlook日曆事件"
|
171 |
|
@@ -1608,6 +1611,9 @@ msgstr "API登入碼"
|
|
1608 |
msgid "API Transaction Key"
|
1609 |
msgstr "API交易金鑰"
|
1610 |
|
|
|
|
|
|
|
1611 |
msgid "Title"
|
1612 |
msgstr "標題"
|
1613 |
|
@@ -3666,6 +3672,12 @@ msgstr "下個收費日期"
|
|
3666 |
msgid "Deactivation date"
|
3667 |
msgstr "取消日期"
|
3668 |
|
|
|
|
|
|
|
|
|
|
|
|
|
3669 |
msgid "Stripe activation was not completed"
|
3670 |
msgstr "Stripe未能激活"
|
3671 |
|
@@ -6519,9 +6531,6 @@ msgstr ""
|
|
6519 |
msgid "Skip"
|
6520 |
msgstr "跳過"
|
6521 |
|
6522 |
-
msgid "Tasks"
|
6523 |
-
msgstr "任務"
|
6524 |
-
|
6525 |
msgid "Skip time selection"
|
6526 |
msgstr "跳過時間選項"
|
6527 |
|
@@ -7306,6 +7315,45 @@ msgstr ""
|
|
7306 |
"2.在控制板的<a href=\"%s\" target=\"_blank\"> Webhooks設置</a>部分中,點擊<b>添加端點</b>"
|
7307 |
"以顯示一個表單,以添加一個新的端點來接收事件。"
|
7308 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7309 |
msgid "Set maximum value for Quantity field."
|
7310 |
msgstr "設置數量字段的最大值。"
|
7311 |
|
8 |
"Language: zh_TW\n"
|
9 |
"Plural-Forms: nplurals=1; plural=0;\n"
|
10 |
"Report-Msgid-Bugs-To: \n"
|
11 |
+
"POT-Creation-Date: 2020-12-28 10:40+0000\n"
|
12 |
+
"PO-Revision-Date: 2020-12-28 13:54+0000\n"
|
13 |
"Last-Translator: Erika <erikayiu12@gmail.com>\n"
|
14 |
"Language-Team: Chinese (Taiwan)\n"
|
15 |
"X-Loco-Version: 2.3.1; wp-5.5"
|
66 |
msgid "INVOICE"
|
67 |
msgstr "發票"
|
68 |
|
69 |
+
msgid "Thank you for your business!"
|
70 |
+
msgstr "謝謝你的支持!"
|
71 |
+
|
72 |
+
msgid "We really appreciate it"
|
73 |
+
msgstr "我們感謝你!"
|
74 |
|
75 |
msgid ""
|
76 |
"Invoices add-on requires your customers address information. So options "
|
148 |
msgid "N/A"
|
149 |
msgstr "不適用"
|
150 |
|
151 |
+
msgid "Discount"
|
152 |
+
msgstr "折扣"
|
153 |
+
|
154 |
msgid "Subtotal"
|
155 |
msgstr "小計"
|
156 |
|
169 |
msgid "Due"
|
170 |
msgstr "應有"
|
171 |
|
|
|
|
|
|
|
172 |
msgid "Outlook Calendar event"
|
173 |
msgstr "Outlook日曆事件"
|
174 |
|
1611 |
msgid "API Transaction Key"
|
1612 |
msgstr "API交易金鑰"
|
1613 |
|
1614 |
+
msgid "ID"
|
1615 |
+
msgstr "ID"
|
1616 |
+
|
1617 |
msgid "Title"
|
1618 |
msgstr "標題"
|
1619 |
|
3672 |
msgid "Deactivation date"
|
3673 |
msgstr "取消日期"
|
3674 |
|
3675 |
+
msgid "Tasks"
|
3676 |
+
msgstr "任務"
|
3677 |
+
|
3678 |
+
msgid "unlimited in trial"
|
3679 |
+
msgstr "使用時無限"
|
3680 |
+
|
3681 |
msgid "Stripe activation was not completed"
|
3682 |
msgstr "Stripe未能激活"
|
3683 |
|
6531 |
msgid "Skip"
|
6532 |
msgstr "跳過"
|
6533 |
|
|
|
|
|
|
|
6534 |
msgid "Skip time selection"
|
6535 |
msgstr "跳過時間選項"
|
6536 |
|
7315 |
"2.在控制板的<a href=\"%s\" target=\"_blank\"> Webhooks設置</a>部分中,點擊<b>添加端點</b>"
|
7316 |
"以顯示一個表單,以添加一個新的端點來接收事件。"
|
7317 |
|
7318 |
+
msgid "Condition"
|
7319 |
+
msgstr "條件"
|
7320 |
+
|
7321 |
+
msgid "Discounts"
|
7322 |
+
msgstr "折扣"
|
7323 |
+
|
7324 |
+
msgid "number of persons"
|
7325 |
+
msgstr "人數"
|
7326 |
+
|
7327 |
+
msgid "number of appointments"
|
7328 |
+
msgstr "預約數目"
|
7329 |
+
|
7330 |
+
msgid "Add discount"
|
7331 |
+
msgstr "加折扣"
|
7332 |
+
|
7333 |
+
msgid "No discounts found."
|
7334 |
+
msgstr "找不到折扣。"
|
7335 |
+
|
7336 |
+
#, php-format
|
7337 |
+
msgid "If %s equals or exceeds %s"
|
7338 |
+
msgstr "如果 %s 等於或大過 %s"
|
7339 |
+
|
7340 |
+
msgid ""
|
7341 |
+
"Select if the discount is enabled and applied to the booking price if the "
|
7342 |
+
"conditions are met, or if it is disabled and not applied"
|
7343 |
+
msgstr "選擇是否啟用折扣並在滿足條件的情況下將其應用於預訂價格,或者是否禁用且不應用折扣"
|
7344 |
+
|
7345 |
+
msgid "Condition to apply the discount"
|
7346 |
+
msgstr "應用折扣的條件"
|
7347 |
+
|
7348 |
+
msgid "and the service is one of the selected"
|
7349 |
+
msgstr "該服務是所選的服務之一"
|
7350 |
+
|
7351 |
+
msgid "New discount"
|
7352 |
+
msgstr "新折扣"
|
7353 |
+
|
7354 |
+
msgid "Edit discount"
|
7355 |
+
msgstr "編輯折扣"
|
7356 |
+
|
7357 |
msgid "Set maximum value for Quantity field."
|
7358 |
msgstr "設置數量字段的最大值。"
|
7359 |
|
languages/bookly.pot
CHANGED
@@ -38,7 +38,10 @@ msgstr ""
|
|
38 |
msgid "INVOICE"
|
39 |
msgstr ""
|
40 |
|
41 |
-
msgid "Thank you for your business"
|
|
|
|
|
|
|
42 |
msgstr ""
|
43 |
|
44 |
msgid ""
|
@@ -116,6 +119,9 @@ msgstr ""
|
|
116 |
msgid "N/A"
|
117 |
msgstr ""
|
118 |
|
|
|
|
|
|
|
119 |
msgid "Subtotal"
|
120 |
msgstr ""
|
121 |
|
@@ -134,9 +140,6 @@ msgstr ""
|
|
134 |
msgid "Due"
|
135 |
msgstr ""
|
136 |
|
137 |
-
msgid "Discount"
|
138 |
-
msgstr ""
|
139 |
-
|
140 |
msgid "Outlook Calendar event"
|
141 |
msgstr ""
|
142 |
|
@@ -1387,6 +1390,9 @@ msgstr ""
|
|
1387 |
msgid "API Transaction Key"
|
1388 |
msgstr ""
|
1389 |
|
|
|
|
|
|
|
1390 |
msgid "Title"
|
1391 |
msgstr ""
|
1392 |
|
@@ -3259,6 +3265,12 @@ msgstr ""
|
|
3259 |
msgid "Deactivation date"
|
3260 |
msgstr ""
|
3261 |
|
|
|
|
|
|
|
|
|
|
|
|
|
3262 |
msgid "Stripe activation was not completed"
|
3263 |
msgstr ""
|
3264 |
|
@@ -5903,9 +5915,6 @@ msgstr ""
|
|
5903 |
msgid "Skip"
|
5904 |
msgstr ""
|
5905 |
|
5906 |
-
msgid "Tasks"
|
5907 |
-
msgstr ""
|
5908 |
-
|
5909 |
msgid "Skip time selection"
|
5910 |
msgstr ""
|
5911 |
|
@@ -6635,6 +6644,45 @@ msgid ""
|
|
6635 |
"for receiving events."
|
6636 |
msgstr ""
|
6637 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6638 |
msgid "Set maximum value for Quantity field."
|
6639 |
msgstr ""
|
6640 |
|
38 |
msgid "INVOICE"
|
39 |
msgstr ""
|
40 |
|
41 |
+
msgid "Thank you for your business!"
|
42 |
+
msgstr ""
|
43 |
+
|
44 |
+
msgid "We really appreciate it"
|
45 |
msgstr ""
|
46 |
|
47 |
msgid ""
|
119 |
msgid "N/A"
|
120 |
msgstr ""
|
121 |
|
122 |
+
msgid "Discount"
|
123 |
+
msgstr ""
|
124 |
+
|
125 |
msgid "Subtotal"
|
126 |
msgstr ""
|
127 |
|
140 |
msgid "Due"
|
141 |
msgstr ""
|
142 |
|
|
|
|
|
|
|
143 |
msgid "Outlook Calendar event"
|
144 |
msgstr ""
|
145 |
|
1390 |
msgid "API Transaction Key"
|
1391 |
msgstr ""
|
1392 |
|
1393 |
+
msgid "ID"
|
1394 |
+
msgstr ""
|
1395 |
+
|
1396 |
msgid "Title"
|
1397 |
msgstr ""
|
1398 |
|
3265 |
msgid "Deactivation date"
|
3266 |
msgstr ""
|
3267 |
|
3268 |
+
msgid "Tasks"
|
3269 |
+
msgstr ""
|
3270 |
+
|
3271 |
+
msgid "unlimited in trial"
|
3272 |
+
msgstr ""
|
3273 |
+
|
3274 |
msgid "Stripe activation was not completed"
|
3275 |
msgstr ""
|
3276 |
|
5915 |
msgid "Skip"
|
5916 |
msgstr ""
|
5917 |
|
|
|
|
|
|
|
5918 |
msgid "Skip time selection"
|
5919 |
msgstr ""
|
5920 |
|
6644 |
"for receiving events."
|
6645 |
msgstr ""
|
6646 |
|
6647 |
+
msgid "Condition"
|
6648 |
+
msgstr ""
|
6649 |
+
|
6650 |
+
msgid "Discounts"
|
6651 |
+
msgstr ""
|
6652 |
+
|
6653 |
+
msgid "number of persons"
|
6654 |
+
msgstr ""
|
6655 |
+
|
6656 |
+
msgid "number of appointments"
|
6657 |
+
msgstr ""
|
6658 |
+
|
6659 |
+
msgid "Add discount"
|
6660 |
+
msgstr ""
|
6661 |
+
|
6662 |
+
msgid "No discounts found."
|
6663 |
+
msgstr ""
|
6664 |
+
|
6665 |
+
#, php-format
|
6666 |
+
msgid "If %s equals or exceeds %s"
|
6667 |
+
msgstr ""
|
6668 |
+
|
6669 |
+
msgid ""
|
6670 |
+
"Select if the discount is enabled and applied to the booking price if the "
|
6671 |
+
"conditions are met, or if it is disabled and not applied"
|
6672 |
+
msgstr ""
|
6673 |
+
|
6674 |
+
msgid "Condition to apply the discount"
|
6675 |
+
msgstr ""
|
6676 |
+
|
6677 |
+
msgid "and the service is one of the selected"
|
6678 |
+
msgstr ""
|
6679 |
+
|
6680 |
+
msgid "New discount"
|
6681 |
+
msgstr ""
|
6682 |
+
|
6683 |
+
msgid "Edit discount"
|
6684 |
+
msgstr ""
|
6685 |
+
|
6686 |
msgid "Set maximum value for Quantity field."
|
6687 |
msgstr ""
|
6688 |
|
lib/CartInfo.php
CHANGED
@@ -7,6 +7,8 @@ namespace Bookly\Lib;
|
|
7 |
*/
|
8 |
class CartInfo
|
9 |
{
|
|
|
|
|
10 |
/** @var float cost of services based on deposit value (without services in waiting list) */
|
11 |
protected $deposit = 0;
|
12 |
/** @var float cost of services included in waiting list */
|
@@ -15,6 +17,8 @@ class CartInfo
|
|
15 |
protected $waiting_list_deposit = 0;
|
16 |
/** @var float cost of services before discounts */
|
17 |
protected $subtotal = 0;
|
|
|
|
|
18 |
/** @var float amount of discount based on the customer group */
|
19 |
protected $group_discount = 0;
|
20 |
/** @var float amount of discount for applied coupon */
|
@@ -53,6 +57,8 @@ class CartInfo
|
|
53 |
*/
|
54 |
public function __construct( UserBookingData $userData, $apply_coupon )
|
55 |
{
|
|
|
|
|
56 |
if ( $apply_coupon ) {
|
57 |
$this->coupon = $userData->getCoupon();
|
58 |
}
|
@@ -101,6 +107,10 @@ class CartInfo
|
|
101 |
$this->total += $this->coupon_discount;
|
102 |
}
|
103 |
|
|
|
|
|
|
|
|
|
104 |
$total_without_group_discount = $this->total;
|
105 |
$this->total = Proxy\CustomerGroups::prepareCartTotalPrice( $total_without_group_discount, $userData );
|
106 |
$this->group_discount = $this->total - $total_without_group_discount;
|
@@ -276,12 +286,30 @@ class CartInfo
|
|
276 |
return $this->group_discount;
|
277 |
}
|
278 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
279 |
/**
|
280 |
* @return bool
|
281 |
*/
|
282 |
public function withDiscount()
|
283 |
{
|
284 |
-
return ( $this->coupon_discount + $this->group_discount + $this->price_correction ) < 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
285 |
}
|
286 |
|
287 |
/**************************************************************************
|
@@ -293,7 +321,7 @@ class CartInfo
|
|
293 |
*/
|
294 |
private function getDiscount()
|
295 |
{
|
296 |
-
return $this->coupon_discount + $this->group_discount + $this->price_correction;
|
297 |
}
|
298 |
|
299 |
/**************************************************************************
|
7 |
*/
|
8 |
class CartInfo
|
9 |
{
|
10 |
+
/** @var UserBookingData $userData */
|
11 |
+
protected $userData;
|
12 |
/** @var float cost of services based on deposit value (without services in waiting list) */
|
13 |
protected $deposit = 0;
|
14 |
/** @var float cost of services included in waiting list */
|
17 |
protected $waiting_list_deposit = 0;
|
18 |
/** @var float cost of services before discounts */
|
19 |
protected $subtotal = 0;
|
20 |
+
/** @var float amount of discount based on the discount addon */
|
21 |
+
protected $addon_discount = 0;
|
22 |
/** @var float amount of discount based on the customer group */
|
23 |
protected $group_discount = 0;
|
24 |
/** @var float amount of discount for applied coupon */
|
57 |
*/
|
58 |
public function __construct( UserBookingData $userData, $apply_coupon )
|
59 |
{
|
60 |
+
$this->userData = $userData;
|
61 |
+
|
62 |
if ( $apply_coupon ) {
|
63 |
$this->coupon = $userData->getCoupon();
|
64 |
}
|
107 |
$this->total += $this->coupon_discount;
|
108 |
}
|
109 |
|
110 |
+
$total_without_discount = $this->total;
|
111 |
+
$this->total = Proxy\Discounts::prepareCartTotalPrice( $total_without_discount, $userData );
|
112 |
+
$this->addon_discount = $this->total - $total_without_discount;
|
113 |
+
|
114 |
$total_without_group_discount = $this->total;
|
115 |
$this->total = Proxy\CustomerGroups::prepareCartTotalPrice( $total_without_group_discount, $userData );
|
116 |
$this->group_discount = $this->total - $total_without_group_discount;
|
286 |
return $this->group_discount;
|
287 |
}
|
288 |
|
289 |
+
/**
|
290 |
+
* Get amount of discount based on the discount addon.
|
291 |
+
*
|
292 |
+
* @return float
|
293 |
+
*/
|
294 |
+
public function getAddonDiscount()
|
295 |
+
{
|
296 |
+
return $this->addon_discount;
|
297 |
+
}
|
298 |
+
|
299 |
/**
|
300 |
* @return bool
|
301 |
*/
|
302 |
public function withDiscount()
|
303 |
{
|
304 |
+
return ( $this->coupon_discount + $this->group_discount + $this->price_correction + $this->addon_discount ) < 0;
|
305 |
+
}
|
306 |
+
|
307 |
+
/**
|
308 |
+
* @return UserBookingData
|
309 |
+
*/
|
310 |
+
public function getUserData()
|
311 |
+
{
|
312 |
+
return $this->userData;
|
313 |
}
|
314 |
|
315 |
/**************************************************************************
|
321 |
*/
|
322 |
private function getDiscount()
|
323 |
{
|
324 |
+
return $this->coupon_discount + $this->group_discount + $this->price_correction + $this->addon_discount;
|
325 |
}
|
326 |
|
327 |
/**************************************************************************
|
lib/CartItem.php
CHANGED
@@ -111,7 +111,9 @@ class CartItem
|
|
111 |
{
|
112 |
$price = $this->getServicePriceWithoutExtras();
|
113 |
|
114 |
-
|
|
|
|
|
115 |
}
|
116 |
|
117 |
/**
|
111 |
{
|
112 |
$price = $this->getServicePriceWithoutExtras();
|
113 |
|
114 |
+
$price = Proxy\ServiceExtras::prepareServicePrice( $price * $nop, $price, $nop, $this->extras );
|
115 |
+
|
116 |
+
return Proxy\Discounts::prepareServicePrice( $price, $this->service_id, $nop );
|
117 |
}
|
118 |
|
119 |
/**
|
lib/Config.php
CHANGED
@@ -17,6 +17,7 @@ use Bookly\Lib\Utils\DateTime;
|
|
17 |
* @method static bool customerGroupsActive() Check whether Customer Groups add-on is active or not.
|
18 |
* @method static bool customerInformationActive() Check whether Customer Information add-on is active or not.
|
19 |
* @method static bool customFieldsActive() Check whether Custom Fields add-on is active or not.
|
|
|
20 |
* @method static bool depositPaymentsActive() Check whether Deposit Payments add-on is active or not.
|
21 |
* @method static bool filesActive() Check whether Files add-on is active or not.
|
22 |
* @method static bool groupBookingActive() Check whether Group Booking add-on is active or not.
|
17 |
* @method static bool customerGroupsActive() Check whether Customer Groups add-on is active or not.
|
18 |
* @method static bool customerInformationActive() Check whether Customer Information add-on is active or not.
|
19 |
* @method static bool customFieldsActive() Check whether Custom Fields add-on is active or not.
|
20 |
+
* @method static bool discountsActive() Check whether Discounts add-on is active or not.
|
21 |
* @method static bool depositPaymentsActive() Check whether Deposit Payments add-on is active or not.
|
22 |
* @method static bool filesActive() Check whether Files add-on is active or not.
|
23 |
* @method static bool groupBookingActive() Check whether Group Booking add-on is active or not.
|
lib/Scheduler.php
CHANGED
@@ -61,7 +61,7 @@ class Scheduler
|
|
61 |
$this->userData->chain = $chain;
|
62 |
$this->userData->setDays( array( 1, 2, 3, 4, 5, 6, 7 ) );
|
63 |
|
64 |
-
if ( isset( $params['time_zone_offset'] ) ) {
|
65 |
$this->userData
|
66 |
->setTimeZone( $params['time_zone'] )
|
67 |
->setTimeZoneOffset( $params['time_zone_offset'] )
|
61 |
$this->userData->chain = $chain;
|
62 |
$this->userData->setDays( array( 1, 2, 3, 4, 5, 6, 7 ) );
|
63 |
|
64 |
+
if ( isset ( $params['time_zone_offset'] ) ) {
|
65 |
$this->userData
|
66 |
->setTimeZone( $params['time_zone'] )
|
67 |
->setTimeZoneOffset( $params['time_zone_offset'] )
|
lib/data_holders/booking/Simple.php
CHANGED
@@ -240,7 +240,9 @@ class Simple extends Item
|
|
240 |
$price = $this->getServicePrice();
|
241 |
$nop = $this->getCA()->getNumberOfPersons();
|
242 |
|
243 |
-
|
|
|
|
|
244 |
}
|
245 |
|
246 |
/**
|
240 |
$price = $this->getServicePrice();
|
241 |
$nop = $this->getCA()->getNumberOfPersons();
|
242 |
|
243 |
+
$price = Lib\Proxy\ServiceExtras::prepareServicePrice( $price * $nop, $price, $nop, json_decode( $this->getCA()->getExtras(), true ) );
|
244 |
+
|
245 |
+
return Lib\Proxy\Discounts::prepareServicePrice( $price, $this->getService()->getId(), $nop );
|
246 |
}
|
247 |
|
248 |
/**
|
lib/entities/Payment.php
CHANGED
@@ -175,7 +175,7 @@ class Payment extends Lib\Base\Entity
|
|
175 |
? Lib\Proxy\Taxes::calculateTax( $extras_amount, $rate )
|
176 |
: null
|
177 |
);
|
178 |
-
$extras_price += $
|
179 |
}
|
180 |
}
|
181 |
}
|
@@ -185,7 +185,7 @@ class Payment extends Lib\Base\Entity
|
|
185 |
$deposit_format = null;
|
186 |
if ( ! $wait_listed ) {
|
187 |
$price = $sub_item->getServicePrice() * $sub_item->getCA()->getNumberOfPersons();
|
188 |
-
$price += $extras_multiply_nop ? $extras_price * $sub_item->getCA()->getNumberOfPersons() : $extras_price;
|
189 |
|
190 |
$details['subtotal']['price'] += $price;
|
191 |
if ( Lib\Config::depositPaymentsActive() ) {
|
@@ -195,19 +195,22 @@ class Payment extends Lib\Base\Entity
|
|
195 |
}
|
196 |
}
|
197 |
|
198 |
-
$details['items'][] =
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
|
|
|
|
|
|
211 |
);
|
212 |
}
|
213 |
}
|
@@ -249,6 +252,7 @@ class Payment extends Lib\Base\Entity
|
|
249 |
'items' => $details['items'],
|
250 |
'subtotal' => $details['subtotal'],
|
251 |
'group_discount' => isset( $details['customer_group']['discount_format'] ) ? $details['customer_group']['discount_format'] : false,
|
|
|
252 |
'coupon' => $details['coupon'],
|
253 |
'price_correction' => $this->gateway_price_correction,
|
254 |
'gateway' => $details['gateway'],
|
175 |
? Lib\Proxy\Taxes::calculateTax( $extras_amount, $rate )
|
176 |
: null
|
177 |
);
|
178 |
+
$extras_price += $extra->getPrice();
|
179 |
}
|
180 |
}
|
181 |
}
|
185 |
$deposit_format = null;
|
186 |
if ( ! $wait_listed ) {
|
187 |
$price = $sub_item->getServicePrice() * $sub_item->getCA()->getNumberOfPersons();
|
188 |
+
$price += Lib\Proxy\Discounts::prepareServicePrice( $extras_multiply_nop ? $extras_price * $sub_item->getCA()->getNumberOfPersons() : $extras_price, $service_id, $sub_item->getCA()->getNumberOfPersons() );
|
189 |
|
190 |
$details['subtotal']['price'] += $price;
|
191 |
if ( Lib\Config::depositPaymentsActive() ) {
|
195 |
}
|
196 |
}
|
197 |
|
198 |
+
$details['items'][] = Lib\Proxy\Shared::preparePaymentDetailsItem(
|
199 |
+
array(
|
200 |
+
'ca_id' => $sub_item->getCA()->getId(),
|
201 |
+
'appointment_date' => $sub_item->getAppointment()->getStartDate(),
|
202 |
+
'service_name' => $sub_item->getService()->getTitle(),
|
203 |
+
'service_price' => $sub_item->getServicePrice(),
|
204 |
+
'service_tax' => $wait_listed ? null : $sub_item->getServiceTax(),
|
205 |
+
'wait_listed' => $wait_listed,
|
206 |
+
'deposit_format' => $deposit_format,
|
207 |
+
'number_of_persons' => $sub_item->getCA()->getNumberOfPersons(),
|
208 |
+
'units' => $sub_item->getCA()->getUnits(),
|
209 |
+
'duration' => $sub_item->getService()->getDuration(),
|
210 |
+
'staff_name' => $sub_item->getStaff()->getFullName(),
|
211 |
+
'extras' => $extras,
|
212 |
+
),
|
213 |
+
$sub_item
|
214 |
);
|
215 |
}
|
216 |
}
|
252 |
'items' => $details['items'],
|
253 |
'subtotal' => $details['subtotal'],
|
254 |
'group_discount' => isset( $details['customer_group']['discount_format'] ) ? $details['customer_group']['discount_format'] : false,
|
255 |
+
'discounts' => $details['discounts'],
|
256 |
'coupon' => $details['coupon'],
|
257 |
'price_correction' => $this->gateway_price_correction,
|
258 |
'gateway' => $details['gateway'],
|
lib/proxy/Discounts.php
ADDED
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Bookly\Lib\Proxy;
|
3 |
+
|
4 |
+
use Bookly\Lib;
|
5 |
+
|
6 |
+
/**
|
7 |
+
* Class Discounts
|
8 |
+
* @package Bookly\Lib\Proxy
|
9 |
+
*
|
10 |
+
* @method static void addBooklyMenuItem() Add 'Discounts' to Bookly menu.
|
11 |
+
* @method static float prepareCartTotalPrice( float $total, Lib\UserBookingData $user_data ) Prepare cart total price.
|
12 |
+
* @method static float prepareServicePrice( float $price, int $service_id, int $nop ) Prepare total price of a service with given original service price, number of persons.
|
13 |
+
*/
|
14 |
+
abstract class Discounts extends Lib\Base\Proxy
|
15 |
+
{
|
16 |
+
|
17 |
+
}
|
lib/proxy/Shared.php
CHANGED
@@ -23,8 +23,10 @@ use Bookly\Lib;
|
|
23 |
* @method static array prepareNotificationTitles( array $titles ) Prepare notification titles.
|
24 |
* @method static array prepareNotificationTypes( array $types, string $gateway ) Prepare notification type IDs.
|
25 |
* @method static array preparePaymentDetails( array $details, Lib\DataHolders\Booking\Order $order, Lib\CartInfo $cart_info ) Add info about payment
|
|
|
26 |
* @method static Lib\Query prepareStaffServiceQuery( Lib\Query $query ) Prepare StaffService query for Finder.
|
27 |
* @method static array prepareTableColumns( array $columns, $table ) Prepare table columns for given table.
|
|
|
28 |
* @method static string prepareStatement( string $value, string $statement, string $table ) Prepare default value for sql statement.
|
29 |
* @method static void renderAdminNotices( bool $bookly_page ) Render admin notices from add-ons.
|
30 |
* @method static bool showPaymentSpecificPrices( bool $show ) Whether to show specific price for each payment system.
|
23 |
* @method static array prepareNotificationTitles( array $titles ) Prepare notification titles.
|
24 |
* @method static array prepareNotificationTypes( array $types, string $gateway ) Prepare notification type IDs.
|
25 |
* @method static array preparePaymentDetails( array $details, Lib\DataHolders\Booking\Order $order, Lib\CartInfo $cart_info ) Add info about payment
|
26 |
+
* @method static array preparePaymentDetailsItem( array $details, Lib\DataHolders\Booking\Item $item ) Add info about payment item
|
27 |
* @method static Lib\Query prepareStaffServiceQuery( Lib\Query $query ) Prepare StaffService query for Finder.
|
28 |
* @method static array prepareTableColumns( array $columns, $table ) Prepare table columns for given table.
|
29 |
+
* @method static array prepareTableDefaultSettings( array $columns, $table ) Get default settings for hide/show table columns.
|
30 |
* @method static string prepareStatement( string $value, string $statement, string $table ) Prepare default value for sql statement.
|
31 |
* @method static void renderAdminNotices( bool $bookly_page ) Render admin notices from add-ons.
|
32 |
* @method static bool showPaymentSpecificPrices( bool $show ) Whether to show specific price for each payment system.
|
lib/utils/Common.php
CHANGED
@@ -204,6 +204,28 @@ abstract class Common
|
|
204 |
|| self::isCurrentUserStaff();
|
205 |
}
|
206 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
207 |
/**
|
208 |
* Get required capability for view menu.
|
209 |
*
|
204 |
|| self::isCurrentUserStaff();
|
205 |
}
|
206 |
|
207 |
+
/**
|
208 |
+
* Determine the current user time zone which may be the staff or WP time zone
|
209 |
+
*
|
210 |
+
* @return string
|
211 |
+
*/
|
212 |
+
public static function getCurrentUserTimeZone()
|
213 |
+
{
|
214 |
+
if ( ! self::isCurrentUserSupervisor() ) {
|
215 |
+
/** @var Lib\Entities\Staff $staff */
|
216 |
+
$staff = Lib\Entities\Staff::query()->where( 'wp_user_id', get_current_user_id() )->findOne();
|
217 |
+
if ( $staff ) {
|
218 |
+
$staff_tz = $staff->getTimeZone();
|
219 |
+
if ( $staff_tz ) {
|
220 |
+
return $staff_tz;
|
221 |
+
}
|
222 |
+
}
|
223 |
+
}
|
224 |
+
|
225 |
+
// Use WP time zone by default
|
226 |
+
return Lib\Config::getWPTimeZone();
|
227 |
+
}
|
228 |
+
|
229 |
/**
|
230 |
* Get required capability for view menu.
|
231 |
*
|
lib/utils/Tables.php
CHANGED
@@ -26,6 +26,7 @@ abstract class Tables
|
|
26 |
const SMS_SENDER = 'sms_sender';
|
27 |
const STAFF_MEMBERS = 'staff_members';
|
28 |
const TAXES = 'taxes';
|
|
|
29 |
|
30 |
/**
|
31 |
* Get columns for given table.
|
@@ -39,107 +40,112 @@ abstract class Tables
|
|
39 |
switch ( $table ) {
|
40 |
case self::APPOINTMENTS:
|
41 |
$columns = array(
|
42 |
-
'id' =>
|
43 |
-
'start_date' =>
|
44 |
-
'staff_name' =>
|
45 |
-
'customer_full_name' =>
|
46 |
-
'customer_phone' =>
|
47 |
-
'customer_email' =>
|
48 |
-
'service_title' =>
|
49 |
-
'service_duration' =>
|
50 |
-
'status' =>
|
51 |
-
'payment' =>
|
52 |
-
'notes' =>
|
53 |
-
'created_date' =>
|
54 |
);
|
55 |
break;
|
56 |
case self::CLOUD_PURCHASES:
|
57 |
$columns = array(
|
58 |
-
'date' =>
|
59 |
-
'time' =>
|
60 |
-
'type' =>
|
61 |
-
'status' =>
|
62 |
-
'amount' =>
|
63 |
);
|
64 |
break;
|
65 |
case self::CUSTOMERS:
|
66 |
$columns = array(
|
67 |
-
'
|
68 |
-
'
|
69 |
-
'
|
70 |
-
'
|
71 |
-
'
|
72 |
-
'
|
73 |
-
'
|
74 |
-
'
|
75 |
-
'
|
76 |
-
'
|
|
|
77 |
);
|
78 |
break;
|
79 |
case self::EMAIL_NOTIFICATIONS:
|
80 |
case self::SMS_NOTIFICATIONS:
|
81 |
$columns = array(
|
82 |
-
'
|
83 |
-
'
|
84 |
-
'
|
|
|
85 |
);
|
86 |
break;
|
87 |
case self::PAYMENTS:
|
88 |
$columns = array(
|
89 |
-
'id' =>
|
90 |
-
'created_at' =>
|
91 |
-
'type' =>
|
92 |
-
'customer' =>
|
93 |
-
'provider' =>
|
94 |
-
'service' =>
|
95 |
-
'start_date' =>
|
96 |
-
'paid' =>
|
97 |
-
'status' =>
|
98 |
);
|
99 |
break;
|
100 |
case self::SERVICES:
|
101 |
$columns = array(
|
102 |
-
'
|
103 |
-
'
|
104 |
-
'
|
105 |
-
'
|
|
|
106 |
);
|
107 |
break;
|
108 |
case self::SMS_DETAILS:
|
109 |
$columns = array(
|
110 |
-
'
|
111 |
-
'
|
112 |
-
'
|
113 |
-
'
|
114 |
-
'
|
115 |
-
'
|
116 |
-
'
|
117 |
-
'
|
|
|
118 |
);
|
119 |
break;
|
120 |
case self::SMS_PRICES:
|
121 |
$columns = array(
|
122 |
-
'country_iso_code' =>
|
123 |
-
'country_name' =>
|
124 |
-
'phone_code' =>
|
125 |
-
'price' =>
|
126 |
-
'price_alt' =>
|
127 |
);
|
128 |
break;
|
129 |
case self::SMS_SENDER:
|
130 |
$columns = array(
|
131 |
-
'date' =>
|
132 |
-
'name' =>
|
133 |
-
'status' =>
|
134 |
-
'status_date' =>
|
135 |
);
|
136 |
break;
|
137 |
case self::STAFF_MEMBERS:
|
138 |
$columns = array(
|
139 |
-
'
|
140 |
-
'
|
141 |
-
'
|
142 |
-
'
|
|
|
143 |
);
|
144 |
break;
|
145 |
}
|
@@ -147,6 +153,36 @@ abstract class Tables
|
|
147 |
return Lib\Proxy\Shared::prepareTableColumns( $columns, $table );
|
148 |
}
|
149 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
150 |
/**
|
151 |
* Get table settings.
|
152 |
*
|
@@ -163,6 +199,7 @@ abstract class Tables
|
|
163 |
foreach ( $tables as $table ) {
|
164 |
$columns = self::getColumns( $table );
|
165 |
$meta = get_user_meta( get_current_user_id(), 'bookly_' . $table . '_table_settings', true );
|
|
|
166 |
|
167 |
$exist = true;
|
168 |
if ( ! $meta ) {
|
@@ -173,16 +210,20 @@ abstract class Tables
|
|
173 |
if ( ! isset ( $meta['columns'] ) ) {
|
174 |
$meta['columns'] = array();
|
175 |
}
|
|
|
176 |
// Remove columns with no title.
|
177 |
foreach ( $meta['columns'] as $key => $column ) {
|
178 |
if ( ! isset( $columns[ $key ] ) ) {
|
179 |
unset( $meta['columns'][ $key ] );
|
180 |
}
|
181 |
}
|
182 |
-
//
|
|
|
183 |
foreach ( $columns as $column => $title ) {
|
184 |
if ( ! isset ( $meta['columns'][ $column ] ) ) {
|
185 |
-
$meta['columns'][ $column ] =
|
|
|
|
|
186 |
}
|
187 |
}
|
188 |
|
26 |
const SMS_SENDER = 'sms_sender';
|
27 |
const STAFF_MEMBERS = 'staff_members';
|
28 |
const TAXES = 'taxes';
|
29 |
+
const DISCOUNTS = 'discounts';
|
30 |
|
31 |
/**
|
32 |
* Get columns for given table.
|
40 |
switch ( $table ) {
|
41 |
case self::APPOINTMENTS:
|
42 |
$columns = array(
|
43 |
+
'id' => esc_html__( 'No.', 'bookly' ),
|
44 |
+
'start_date' => esc_html__( 'Appointment date', 'bookly' ),
|
45 |
+
'staff_name' => esc_html( Common::getTranslatedOption( 'bookly_l10n_label_employee' ) ),
|
46 |
+
'customer_full_name' => esc_html__( 'Customer name', 'bookly' ),
|
47 |
+
'customer_phone' => esc_html__( 'Customer phone', 'bookly' ),
|
48 |
+
'customer_email' => esc_html__( 'Customer email', 'bookly' ),
|
49 |
+
'service_title' => esc_html( Common::getTranslatedOption( 'bookly_l10n_label_service' ) ),
|
50 |
+
'service_duration' => esc_html__( 'Duration', 'bookly' ),
|
51 |
+
'status' => esc_html__( 'Status', 'bookly' ),
|
52 |
+
'payment' => esc_html__( 'Payment', 'bookly' ),
|
53 |
+
'notes' => esc_html( Common::getTranslatedOption( 'bookly_l10n_label_notes' ) ),
|
54 |
+
'created_date' => esc_html__( 'Created', 'bookly' ),
|
55 |
);
|
56 |
break;
|
57 |
case self::CLOUD_PURCHASES:
|
58 |
$columns = array(
|
59 |
+
'date' => esc_html__( 'Date', 'bookly' ),
|
60 |
+
'time' => esc_html__( 'Time', 'bookly' ),
|
61 |
+
'type' => esc_html__( 'Type', 'bookly' ),
|
62 |
+
'status' => esc_html__( 'Status', 'bookly' ),
|
63 |
+
'amount' => esc_html__( 'Amount', 'bookly' ),
|
64 |
);
|
65 |
break;
|
66 |
case self::CUSTOMERS:
|
67 |
$columns = array(
|
68 |
+
'id' => esc_html__( 'ID', 'bookly' ),
|
69 |
+
'full_name' => esc_html( Common::getTranslatedOption( 'bookly_l10n_label_name' ) ),
|
70 |
+
'first_name' => esc_html( Common::getTranslatedOption( 'bookly_l10n_label_first_name' ) ),
|
71 |
+
'last_name' => esc_html( Common::getTranslatedOption( 'bookly_l10n_label_last_name' ) ),
|
72 |
+
'wp_user' => esc_html__( 'User', 'bookly' ),
|
73 |
+
'phone' => esc_html( Common::getTranslatedOption( 'bookly_l10n_label_phone' ) ),
|
74 |
+
'email' => esc_html( Common::getTranslatedOption( 'bookly_l10n_label_email' ) ),
|
75 |
+
'notes' => esc_html__( 'Notes', 'bookly' ),
|
76 |
+
'last_appointment' => esc_html__( 'Last appointment', 'bookly' ),
|
77 |
+
'total_appointments' => esc_html__( 'Total appointments', 'bookly' ),
|
78 |
+
'payments' => esc_html__( 'Payments', 'bookly' ),
|
79 |
);
|
80 |
break;
|
81 |
case self::EMAIL_NOTIFICATIONS:
|
82 |
case self::SMS_NOTIFICATIONS:
|
83 |
$columns = array(
|
84 |
+
'id' => esc_html__( 'ID', 'bookly' ),
|
85 |
+
'type' => esc_html__( 'Type', 'bookly' ),
|
86 |
+
'name' => esc_html__( 'Name', 'bookly' ),
|
87 |
+
'active' => esc_html__( 'State', 'bookly' ),
|
88 |
);
|
89 |
break;
|
90 |
case self::PAYMENTS:
|
91 |
$columns = array(
|
92 |
+
'id' => esc_html__( 'ID', 'bookly' ),
|
93 |
+
'created_at' => esc_html__( 'Date', 'bookly' ),
|
94 |
+
'type' => esc_html__( 'Type', 'bookly' ),
|
95 |
+
'customer' => esc_html__( 'Customer', 'bookly' ),
|
96 |
+
'provider' => esc_html__( 'Provider', 'bookly' ),
|
97 |
+
'service' => esc_html__( 'Service', 'bookly' ),
|
98 |
+
'start_date' => esc_html__( 'Appointment date', 'bookly' ),
|
99 |
+
'paid' => esc_html__( 'Amount', 'bookly' ),
|
100 |
+
'status' => esc_html__( 'Status', 'bookly' ),
|
101 |
);
|
102 |
break;
|
103 |
case self::SERVICES:
|
104 |
$columns = array(
|
105 |
+
'id' => esc_html__( 'ID', 'bookly' ),
|
106 |
+
'title' => esc_html__( 'Title', 'bookly' ),
|
107 |
+
'category_name' => esc_html__( 'Category', 'bookly' ),
|
108 |
+
'duration' => esc_html__( 'Duration', 'bookly' ),
|
109 |
+
'price' => esc_html__( 'Price', 'bookly' ),
|
110 |
);
|
111 |
break;
|
112 |
case self::SMS_DETAILS:
|
113 |
$columns = array(
|
114 |
+
'id' => esc_html__( 'ID', 'bookly' ),
|
115 |
+
'date' => esc_html__( 'Date', 'bookly' ),
|
116 |
+
'time' => esc_html__( 'Time', 'bookly' ),
|
117 |
+
'message' => esc_html__( 'Text', 'bookly' ),
|
118 |
+
'phone' => esc_html__( 'Phone', 'bookly' ),
|
119 |
+
'sender_id' => esc_html__( 'Sender ID', 'bookly' ),
|
120 |
+
'charge' => esc_html__( 'Cost', 'bookly' ),
|
121 |
+
'status' => esc_html__( 'Status', 'bookly' ),
|
122 |
+
'info' => esc_html__( 'Info', 'bookly' ),
|
123 |
);
|
124 |
break;
|
125 |
case self::SMS_PRICES:
|
126 |
$columns = array(
|
127 |
+
'country_iso_code' => esc_html__( 'Flag', 'bookly' ),
|
128 |
+
'country_name' => esc_html__( 'Country', 'bookly' ),
|
129 |
+
'phone_code' => esc_html__( 'Code', 'bookly' ),
|
130 |
+
'price' => esc_html__( 'Regular price', 'bookly' ),
|
131 |
+
'price_alt' => esc_html__( 'Price with custom Sender ID', 'bookly' ),
|
132 |
);
|
133 |
break;
|
134 |
case self::SMS_SENDER:
|
135 |
$columns = array(
|
136 |
+
'date' => esc_html__( 'Date', 'bookly' ),
|
137 |
+
'name' => esc_html__( 'Requested ID', 'bookly' ),
|
138 |
+
'status' => esc_html__( 'Status', 'bookly' ),
|
139 |
+
'status_date' => esc_html__( 'Status date', 'bookly' ),
|
140 |
);
|
141 |
break;
|
142 |
case self::STAFF_MEMBERS:
|
143 |
$columns = array(
|
144 |
+
'id' => esc_html__( 'ID', 'bookly' ),
|
145 |
+
'full_name' => esc_html__( 'Name', 'bookly' ),
|
146 |
+
'email' => esc_html__( 'Email', 'bookly' ),
|
147 |
+
'phone' => esc_html__( 'Phone', 'bookly' ),
|
148 |
+
'wp_user' => esc_html__( 'User', 'bookly' ),
|
149 |
);
|
150 |
break;
|
151 |
}
|
153 |
return Lib\Proxy\Shared::prepareTableColumns( $columns, $table );
|
154 |
}
|
155 |
|
156 |
+
/**
|
157 |
+
* Get default settings for hide/show table columns
|
158 |
+
*
|
159 |
+
* @param string $table
|
160 |
+
* @return array
|
161 |
+
*/
|
162 |
+
private static function getDefaultSettings( $table )
|
163 |
+
{
|
164 |
+
$columns = array();
|
165 |
+
switch ( $table ) {
|
166 |
+
case self::CUSTOMERS:
|
167 |
+
$columns = array(
|
168 |
+
'id' => false,
|
169 |
+
'full_name' => ! Lib\Config::showFirstLastName(),
|
170 |
+
'first_name' => Lib\Config::showFirstLastName(),
|
171 |
+
'last_name' => Lib\Config::showFirstLastName(),
|
172 |
+
);
|
173 |
+
break;
|
174 |
+
case self::EMAIL_NOTIFICATIONS:
|
175 |
+
case self::SMS_NOTIFICATIONS:
|
176 |
+
case self::SERVICES:
|
177 |
+
case self::SMS_DETAILS:
|
178 |
+
case self::STAFF_MEMBERS:
|
179 |
+
$columns = array( 'id' => false, );
|
180 |
+
break;
|
181 |
+
}
|
182 |
+
|
183 |
+
return Lib\Proxy\Shared::prepareTableDefaultSettings( $columns, $table );
|
184 |
+
}
|
185 |
+
|
186 |
/**
|
187 |
* Get table settings.
|
188 |
*
|
199 |
foreach ( $tables as $table ) {
|
200 |
$columns = self::getColumns( $table );
|
201 |
$meta = get_user_meta( get_current_user_id(), 'bookly_' . $table . '_table_settings', true );
|
202 |
+
$defaults = self::getDefaultSettings( $table );
|
203 |
|
204 |
$exist = true;
|
205 |
if ( ! $meta ) {
|
210 |
if ( ! isset ( $meta['columns'] ) ) {
|
211 |
$meta['columns'] = array();
|
212 |
}
|
213 |
+
|
214 |
// Remove columns with no title.
|
215 |
foreach ( $meta['columns'] as $key => $column ) {
|
216 |
if ( ! isset( $columns[ $key ] ) ) {
|
217 |
unset( $meta['columns'][ $key ] );
|
218 |
}
|
219 |
}
|
220 |
+
// New columns, which not saved at meta
|
221 |
+
// show/hide if default settings exist and show without default settings
|
222 |
foreach ( $columns as $column => $title ) {
|
223 |
if ( ! isset ( $meta['columns'][ $column ] ) ) {
|
224 |
+
$meta['columns'][ $column ] = array_key_exists( $column, $defaults )
|
225 |
+
? $defaults[ $column ]
|
226 |
+
: true;
|
227 |
}
|
228 |
}
|
229 |
|
main.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
Plugin Name: Bookly
|
4 |
Plugin URI: https://www.booking-wp-plugin.com/?utm_source=bookly_admin&utm_medium=plugins_page&utm_campaign=plugins_page
|
5 |
Description: Bookly Plugin – is a great easy-to-use and easy-to-manage booking tool for service providers who think about their customers. The plugin supports a wide range of services provided by business and individuals who offer reservations through websites. Set up any reservation quickly, pleasantly and easily with Bookly!
|
6 |
-
Version: 19.
|
7 |
Author: Bookly
|
8 |
Author URI: https://www.booking-wp-plugin.com/?utm_source=bookly_admin&utm_medium=plugins_page&utm_campaign=plugins_page
|
9 |
Text Domain: bookly
|
3 |
Plugin Name: Bookly
|
4 |
Plugin URI: https://www.booking-wp-plugin.com/?utm_source=bookly_admin&utm_medium=plugins_page&utm_campaign=plugins_page
|
5 |
Description: Bookly Plugin – is a great easy-to-use and easy-to-manage booking tool for service providers who think about their customers. The plugin supports a wide range of services provided by business and individuals who offer reservations through websites. Set up any reservation quickly, pleasantly and easily with Bookly!
|
6 |
+
Version: 19.2
|
7 |
Author: Bookly
|
8 |
Author URI: https://www.booking-wp-plugin.com/?utm_source=bookly_admin&utm_medium=plugins_page&utm_campaign=plugins_page
|
9 |
Text Domain: bookly
|
readme.txt
CHANGED
@@ -3,9 +3,9 @@ Contributors: Ladela
|
|
3 |
Tags: Booking, booking system, appointment booking, Booking calendar, reservation calendar, appointment scheduler, appointment calendar
|
4 |
Donate link: https://www.booking-wp-plugin.com/
|
5 |
Requires at least: 3.7
|
6 |
-
Tested up to: 5.
|
7 |
Requires PHP: 5.3.7
|
8 |
-
Stable tag: 19.
|
9 |
License: GPLv3
|
10 |
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
11 |
|
3 |
Tags: Booking, booking system, appointment booking, Booking calendar, reservation calendar, appointment scheduler, appointment calendar
|
4 |
Donate link: https://www.booking-wp-plugin.com/
|
5 |
Requires at least: 3.7
|
6 |
+
Tested up to: 5.6
|
7 |
Requires PHP: 5.3.7
|
8 |
+
Stable tag: 19.2
|
9 |
License: GPLv3
|
10 |
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
11 |
|