WordPress Online Booking and Scheduling Plugin – Bookly - Version 19.2

Version Description

Download this release

Release Info

Developer Ladela
Plugin Icon 128x128 WordPress Online Booking and Scheduling Plugin – Bookly
Version 19.2
Comparing to
See all releases

Code changes from version 19.1 to 19.2

Files changed (54) hide show
  1. backend/Backend.php +1 -0
  2. backend/components/dialogs/appointment/edit/Ajax.php +143 -93
  3. backend/components/dialogs/appointment/edit/resources/js/ng-appointment.js +1 -1
  4. backend/components/dialogs/payment/Ajax.php +1 -0
  5. backend/components/dialogs/payment/templates/details.php +42 -0
  6. backend/components/dialogs/payment/templates/dialog.php +1 -1
  7. backend/components/dialogs/service/edit/forms/Service.php +1 -0
  8. backend/components/dialogs/service/edit/proxy/Discounts.php +16 -0
  9. backend/components/dialogs/service/edit/resources/js/service-edit-dialog.js +3 -1
  10. backend/components/dialogs/table_settings/Ajax.php +1 -0
  11. backend/modules/appearance/resources/css/appearance.css +1 -3
  12. backend/modules/calendar/Ajax.php +19 -14
  13. backend/modules/calendar/Page.php +60 -45
  14. backend/modules/cloud_products/Page.php +6 -0
  15. backend/modules/cloud_products/templates/_price.php +3 -0
  16. backend/modules/customers/Page.php +1 -8
  17. backend/modules/debug/Ajax.php +12 -0
  18. backend/modules/debug/lib/QueryBuilder.php +14 -0
  19. backend/modules/notifications/Ajax.php +1 -1
  20. backend/modules/payments/Ajax.php +1 -1
  21. backend/modules/settings/Ajax.php +1 -1
  22. backend/resources/bootstrap/js/bootstrap.min.js +1 -1
  23. frontend/components/booking/InfoText.php +4 -2
  24. frontend/modules/booking/proxy/Discounts.php +15 -0
  25. frontend/resources/css/bookly-main.css +10 -0
  26. languages/bookly-de_DE.mo +0 -0
  27. languages/bookly-de_DE.po +61 -11
  28. languages/bookly-es_ES.mo +0 -0
  29. languages/bookly-es_ES.po +60 -10
  30. languages/bookly-fr_FR.mo +0 -0
  31. languages/bookly-fr_FR.po +60 -10
  32. languages/bookly-it_IT.mo +0 -0
  33. languages/bookly-it_IT.po +4053 -3868
  34. languages/bookly-nl_NL.mo +0 -0
  35. languages/bookly-nl_NL.po +61 -10
  36. languages/bookly-pt_PT.mo +0 -0
  37. languages/bookly-pt_PT.po +61 -10
  38. languages/bookly-ru_RU.mo +0 -0
  39. languages/bookly-ru_RU.po +60 -10
  40. languages/bookly-zh_TW.mo +0 -0
  41. languages/bookly-zh_TW.po +58 -10
  42. languages/bookly.pot +55 -7
  43. lib/CartInfo.php +30 -2
  44. lib/CartItem.php +3 -1
  45. lib/Config.php +1 -0
  46. lib/Scheduler.php +1 -1
  47. lib/data_holders/booking/Simple.php +3 -1
  48. lib/entities/Payment.php +19 -15
  49. lib/proxy/Discounts.php +17 -0
  50. lib/proxy/Shared.php +2 -0
  51. lib/utils/Common.php +22 -0
  52. lib/utils/Tables.php +107 -66
  53. main.php +1 -1
  54. 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
- Lib\Entities\CustomerAppointment::STATUS_PENDING,
34
- Lib\Entities\CustomerAppointment::STATUS_APPROVED,
35
- Lib\Entities\CustomerAppointment::STATUS_CANCELLED,
36
- Lib\Entities\CustomerAppointment::STATUS_REJECTED,
37
- Lib\Entities\CustomerAppointment::STATUS_WAITLISTED,
38
- Lib\Entities\CustomerAppointment::STATUS_DONE,
39
  ) );
40
  $status_items = array();
41
  foreach ( $statuses as $status ) {
42
- $status_items[ $status ] = Lib\Entities\CustomerAppointment::statusToString( $status );
43
  }
44
 
45
  $result = array(
46
- 'staff' => array(),
47
- 'customers' => array(),
48
- 'start_time' => array(),
49
- 'end_time' => array(),
50
- 'app_start_time' => null, // Appointment start time which may not be in the list of start times.
51
- 'app_end_time' => null, // Appointment end time which may not be in the list of end times.
52
- 'week_days' => array(),
53
- 'time_interval' => Lib\Config::getTimeSlotLength(),
54
- 'status' => array(
55
  'items' => $status_items,
56
  ),
57
  'extras_consider_duration' => (int) Lib\Proxy\ServiceExtras::considerDuration( true ),
58
- 'extras_multiply_nop' => (int) get_option( 'bookly_service_extras_multiply_nop', 1 ),
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
- $staff = Lib\Entities\Staff::query()->findOne();
64
- /** @var Lib\Entities\Staff[] $staff_members */
65
- $staff_members = $staff ? Lib\Config::proActive() ? Common::isCurrentUserSupervisor() ? Lib\Entities\Staff::query()->sortBy( 'position' )->find() : Lib\Entities\Staff::query()->where( 'wp_user_id', get_current_user_id() )->find() : array( $staff ) : array();
66
- $postfix_archived = sprintf( ' (%s)', __( 'Archived', 'bookly' ) );
 
 
 
 
67
 
 
68
  $max_duration = 0;
69
- $has_categories = (bool) Lib\Entities\Category::query()->findOne();
70
 
71
  foreach ( $staff_members as $staff_member ) {
72
  $services = array();
73
- if ( $type == Lib\Entities\Service::TYPE_SIMPLE ) {
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 Lib\Entities\Service $service */
80
  $service = $row['service'];
81
- /** @var Lib\Entities\Category $category */
82
  $category = $row['category'];
83
 
84
  $sub_services = $service->getSubServices();
85
- if ( $type == Lib\Entities\Service::TYPE_SIMPLE || ! empty( $sub_services ) ) {
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
- Lib\Utils\DateTime::secondsToInterval( $service->getDuration() )
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 Lib\Entities\Customer $customer */
139
  // Customers list.
140
- $customers_count = Lib\Entities\Customer::query( 'c' )->count();
141
- if ( $customers_count < Lib\Entities\Customer::REMOTE_LIMIT ) {
142
- foreach ( Lib\Entities\Customer::query()->sortBy( 'full_name' )->find() as $customer ) {
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' => Lib\Utils\DateTime::buildTimeString( $time_start, false ),
170
- 'title' => Lib\Utils\DateTime::formatTime( $time_start ),
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 == Lib\Entities\Service::TYPE_PACKAGE ) {
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 Lib\Entities\Appointment();
200
  if ( $appointment->load( self::parameter( 'id' ) ) ) {
201
  $response['success'] = true;
202
 
203
- $query = Lib\Entities\Appointment::query( 'a' )
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' => Lib\Utils\DateTime::formatTime( $info['start_date'] ),
235
  ) : null;
236
  $response['data']['end_time'] = $info['end_date'] ?
237
  array(
238
  'value' => date( 'H:i', strtotime( $info['end_date'] ) ),
239
- 'title' => Lib\Utils\DateTime::formatTime( $info['end_date'] ),
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 = Lib\Entities\CustomerAppointment::query( 'ca' )
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 Lib\Entities\Service();
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 Lib\Entities\Service();
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
- Lib\Entities\CustomerAppointment::STATUS_PENDING,
413
- Lib\Entities\CustomerAppointment::STATUS_APPROVED
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 = Lib\Entities\Service::find( $service_id );
459
  } else {
460
- $service = new Lib\Entities\Service();
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( Lib\Entities\Customer::find( $customer['id'] ) )
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
- $appointment = Lib\Entities\Appointment::query( 'a' )
 
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
- Lib\Entities\CustomerAppointment::STATUS_CANCELLED,
492
- Lib\Entities\CustomerAppointment::STATUS_REJECTED
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 Lib\Entities\Appointment();
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 Lib\Entities\Appointment();
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 = Lib\Entities\Appointment::query( 'a' )
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 Lib\Entities\Appointment $reschedule_appointment */
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 = Lib\Entities\Service::find( $service_id );
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( $staff_id, $appointment->getId() );
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 = Lib\Entities\Service::find( $service_id );
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
- Lib\Entities\CustomerAppointment::STATUS_PENDING,
713
- Lib\Entities\CustomerAppointment::STATUS_APPROVED
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 fit into staff schedule.
734
  if ( $staff_id ) {
735
  $interval_valid = true;
736
- $staff = Lib\Entities\Staff::find( $staff_id );
737
 
738
- // Check if interval is suitable for staff's hours limit
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
- $start_date = Lib\Utils\DateTime::convertTimeZone( $start_date, Lib\Config::getWPTimeZone(), $staff_tz );
745
- $end_date = Lib\Utils\DateTime::convertTimeZone( $end_date, Lib\Config::getWPTimeZone(), $staff_tz );
746
  }
747
 
748
- $start = date_create( $start_date );
749
- $end = date_create( $end_date );
 
 
 
 
 
 
 
 
 
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 + Lib\Utils\DateTime::timeToSeconds( $special_days[ $Ymd ][0]['end_time'] ) );
784
- if ( $day_start <= $start_date && $day_end >= $end_date ) {
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 + Lib\Utils\DateTime::timeToSeconds( $break['break_start'] )
792
  );
793
  $break_end = date(
794
  'Y-m-d H:i:s',
795
- $Ymd_secs + Lib\Utils\DateTime::timeToSeconds( $break['break_end'] )
796
  );
797
- if ( $break_start < $end_date && $break_end > $start_date ) {
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 + Lib\Utils\DateTime::timeToSeconds( $item->getEndTime() ) );
814
- if ( $day_start <= $start_date && $day_end >= $end_date ) {
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 + Lib\Utils\DateTime::timeToSeconds( $break['start_time'] )
821
  );
822
  $break_end = date(
823
  'Y-m-d H:i:s',
824
- $Ymd_secs + Lib\Utils\DateTime::timeToSeconds( $break['end_time'] )
825
  );
826
- if ( $break_start < $end_date && $break_end > $start_date ) {
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, $start_date, $end_date, $service_id, $service_duration );
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 = Lib\Entities\Customer::find( $customer['id'] );
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, $appointment_id )
876
  {
877
- $query = Lib\Entities\Appointment::query( 'a' )
878
  ->where( 'a.id', $appointment_id );
879
 
880
- $appointments = Calendar\Page::buildAppointmentsForCalendar( $staff_id, $query );
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 Lib\Entities\Appointment::query( 'a' )
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 Lib\Entities\Appointment $appointment
908
- * @param array $modified
909
  */
910
- private static function _deleteSentReminders( Lib\Entities\Appointment $appointment, $modified )
911
  {
912
  // When changed start_date need resend the reminders
913
  if ( array_key_exists( 'start_date', $modified ) ) {
914
- $ca_ids = Lib\Entities\CustomerAppointment::query()
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', (Math.floor((end_date - start_date) / 3600000) + start_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'));
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-lg" role="document">
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
- #bookly-tbs .bookly-cart .bookly-extras-cart-title {
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 ( Lib\Config::proActive() ) {
40
- if ( Lib\Utils\Common::isCurrentUserSupervisor() ) {
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'] ) + Lib\Utils\DateTime::timeToSeconds( $sp_day['break_start'] )
95
  );
96
  $break_end = date(
97
  'Y-m-d H:i:s',
98
- strtotime( $sp_day['date'] ) + Lib\Utils\DateTime::timeToSeconds( $sp_day['break_end'] )
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() + Lib\Utils\DateTime::timeToSeconds( $break['start_time'] )
128
  );
129
  $break_end = date(
130
  'Y-m-d H:i:s',
131
- $day->getTimestamp() + Lib\Utils\DateTime::timeToSeconds( $break['end_time'] )
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
- $wp_tz = Lib\Config::getWPTimeZone();
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, $wp_tz );
159
- $item['end'] = DateTime::convertTimeZone( $item['end'], $staff_tz, $wp_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 integer $staff_id
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, $query );
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 ( Lib\Config::proActive() ) {
23
- if ( Lib\Utils\Common::isCurrentUserSupervisor() ) {
24
- $staff_members = Lib\Entities\Staff::query()
25
  ->whereNot( 'visibility', 'archive' )
26
  ->sortBy( 'position' )
27
  ->find()
28
  ;
29
  $staff_dropdown_data = Lib\Proxy\Pro::getStaffDataForDropDown();
30
  } else {
31
- $staff_members = Lib\Entities\Staff::query()
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 = Lib\Entities\Staff::query()->findOne();
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 ( Lib\Config::getBusinessHours() as $day => $bh ) {
79
  if ( $bh['start'] === null ) {
80
- if ( Lib\Config::showOnlyBusinessDaysInCalendar() ) {
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 ( Lib\Config::showOnlyBusinessHoursInCalendar() ) {
95
  $min_time = $min;
96
  $max_time = $max;
97
  } else if ( $max > '24:00:00' ) {
98
- $min_time = Lib\Utils\DateTime::buildTimeString( Lib\Utils\DateTime::timeToSeconds( $max ) - DAY_IN_SECONDS );
99
  $max_time = $max;
100
  }
101
  }
102
 
103
  wp_localize_script( 'bookly-calendar.js', 'BooklyL10n', array(
104
- 'csrf_token' => Lib\Utils\Common::getCsrfToken(),
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' => Lib\Config::getShortLocale(),
111
- 'mjsTimeFormat' => Lib\Utils\DateTime::convertFormat( 'time', Lib\Utils\DateTime::FORMAT_MOMENT_JS ),
112
- 'datePicker' => Lib\Utils\DateTime::datePickerOptions(),
113
- 'dateRange' => Lib\Utils\DateTime::dateRangeOptions(),
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' => Lib\Config::showOnlyStaffWithAppointmentsInCalendarDayView(),
123
  'recurring_appointments' => array(
124
- 'active' => (int) Lib\Config::recurringAppointmentsActive(),
125
  'title' => __( 'Recurring appointments', 'bookly' ),
126
  ),
127
  'waiting_list' => array(
128
- 'active' => (int) Lib\Config::waitingListActive(),
129
  'title' => __( 'On waiting list', 'bookly' ),
130
  ),
131
  'packages' => array(
132
- 'active' => (int) Lib\Config::packagesActive(),
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 = Lib\Utils\Common::getServiceDataForDropDown();
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( $staff_id, Lib\Query $query )
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 ' . Lib\Entities\CustomerAppointment::getTableName() . ' ca WHERE ca.appointment_id = a.id) AS total_number_of_persons,
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 ' . Lib\Entities\CustomerAppointment::getTableName() . ' ca WHERE ca.appointment_id = a.id AND ca.status = "waitlisted") AS on_waiting_list' )
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 ( Lib\Config::groupBookingActive() ) {
225
  $query->addSelect( 'COALESCE(ss.capacity_max,9999) AS service_capacity' );
226
  } else {
227
  $query->addSelect( '1 AS service_capacity' );
228
  }
229
 
230
- if ( Lib\Config::proActive() ) {
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
- Lib\Entities\CustomerAppointment::STATUS_APPROVED => 'success',
249
- Lib\Entities\CustomerAppointment::STATUS_CANCELLED => 'danger',
250
- Lib\Entities\CustomerAppointment::STATUS_REJECTED => 'danger',
251
  );
252
  $cancelled_statuses = array(
253
- Lib\Entities\CustomerAppointment::STATUS_CANCELLED,
254
- Lib\Entities\CustomerAppointment::STATUS_REJECTED,
255
  );
256
  $pending_statuses = array(
257
- Lib\Entities\CustomerAppointment::STATUS_CANCELLED,
258
- Lib\Entities\CustomerAppointment::STATUS_REJECTED,
259
- Lib\Entities\CustomerAppointment::STATUS_PENDING,
260
  );
261
 
262
  foreach ( $appointments as $key => $appointment ) {
263
  $codes = $default_codes;
264
- $codes['{appointment_date}'] = Lib\Utils\DateTime::formatDate( $appointment['start_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}'] = Lib\Utils\Price::format( $appointment['service_price'] * $appointment['units'] );
271
- $codes['{service_duration}'] = Lib\Utils\DateTime::secondsToInterval( $appointment['duration'] * $appointment['units'] );
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 = Lib\Entities\CustomerAppointment::STATUS_PENDING;
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 . '">' . Lib\Entities\CustomerAppointment::statusToString( $customer['appointment_status'] ) . '</span></div></div>';
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}'] = Lib\Utils\Price::format( $appointment['total'] );
317
- $codes['{amount_paid}'] = Lib\Utils\Price::format( $appointment['paid'] );
318
- $codes['{amount_due}'] = Lib\Utils\Price::format( $appointment['total'] - $appointment['paid'] );
319
- $codes['{total_price}'] = Lib\Utils\Price::format( $appointment['total'] );
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}'] = Lib\Entities\CustomerAppointment::statusToString( $appointment['appointment_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'] : Lib\Utils\DateTime::formatTime( $appointment['end_date'] ) )
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' => $info_fields,
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['{login_form}'] = ! get_current_user_id() && ! $userData->getFacebookId()
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-11-25 12:41+0000\n"
12
- "PO-Revision-Date: 2020-11-30 07:17+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,9 +74,11 @@ msgstr "Fälligkeitsdatum"
74
  msgid "INVOICE"
75
  msgstr "RECHNUNG"
76
 
77
- # Vielen Dank für Ihr Geschäft wrong
78
- msgid "Thank you for your business"
79
- msgstr "Vielen Dank für Ihre Arbeit"
 
 
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-11-25 12:41+0000\n"
12
- "PO-Revision-Date: 2020-11-29 18:14+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,8 +67,11 @@ msgstr "Fecha de vencimiento"
67
  msgid "INVOICE"
68
  msgstr "FACTURA"
69
 
70
- msgid "Thank you for your business"
71
- msgstr "Gracias por hacer negocios"
 
 
 
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-11-26 18:19+0000\n"
12
- "PO-Revision-Date: 2020-11-30 08:16+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,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 confiance."
 
 
 
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-07 09:29+0000\n"
12
- "PO-Revision-Date: 2020-09-07 09:29+0000\n"
13
  "Last-Translator: support@bookly.info\n"
14
  "Language-Team: Italian\n"
15
- "X-Loco-Version: 2.3.1; wp-5.3"
16
 
17
- msgid "Are you sure?"
18
- msgstr "Sei sicuro?"
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 "Close"
30
- msgstr "Chiudi"
 
 
 
 
 
 
 
 
 
31
 
32
- msgid "Repeat every year"
33
- msgstr "Ripeti ogni anno"
34
 
35
- msgid "We are not working on this day"
36
- msgstr "Questo giorno siamo chiusi"
 
 
 
 
37
 
38
- msgid "All locations"
39
- msgstr "Tutti i luoghi"
40
 
41
- msgid "No locations selected"
42
- msgstr "Nessuna località selezionata"
43
 
44
- msgid "Full name"
45
- msgstr "Nome completo"
46
 
47
- msgid "Email"
48
- msgstr "Email"
49
 
50
- msgid "Phone"
51
- msgstr "Telefono"
52
 
53
- msgid "Info"
54
- msgstr "Informazioni"
55
 
56
  msgid ""
57
- "This text can be inserted into notifications to customers by Administrator."
 
 
 
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 "Public"
73
- msgstr "Pubblico"
74
 
75
- msgid "Private"
76
- msgstr "Privato"
77
 
78
- msgid "Today"
79
- msgstr "Oggi"
80
 
81
- msgid "Week"
82
- msgstr "Settimana"
83
 
84
- msgid "Day"
85
- msgstr "Giorno"
86
 
87
- msgid "Month"
88
- msgstr "Mese"
89
 
90
- msgid "All Day"
91
- msgstr "Tutto Il giorno"
92
 
93
- msgid "Delete"
94
- msgstr "Cancella"
95
 
96
- msgid "Recurring appointments"
97
- msgstr "Appuntamenti ricorrenti"
98
 
99
- msgid "On waiting list"
100
- msgstr "Sulla lista di attesa"
101
 
102
- msgid "Package"
103
- msgstr "Pacchetto"
104
 
105
- msgid "Booking Time"
106
- msgstr "Orario della prenotazione"
107
 
108
- msgid "Customer Name"
109
- msgstr "Nome del cliente"
110
 
111
- msgid "Customer Phone"
112
- msgstr "Telefono del cliente"
113
 
114
- msgid "Customer Email"
115
- msgstr "E-mail dei clienti"
 
 
116
 
117
  msgid "Service"
118
  msgstr "Servizio"
119
 
120
- msgid "Duration"
121
- msgstr "Durata"
122
 
123
- msgid "Status"
124
- msgstr "Stato"
125
 
126
- msgid "Payment"
127
- msgstr "Pagamento"
128
 
129
- #, php-format
130
- msgid "%s of %s"
131
- msgstr "%s di %s"
132
 
133
- msgid "Export to CSV"
134
- msgstr "Esporta in CSV"
135
 
136
- msgid "Displayed appointments"
137
- msgstr "Appuntamenti visualizzati"
138
 
139
- msgid "Upcoming appointments"
140
- msgstr "Appuntamenti prossimi"
141
 
142
- msgid "All appointments"
143
- msgstr "Tutti gli appuntament"
144
 
145
- msgid "Delimiter"
146
- msgstr "Delimitatore"
147
 
148
- msgid "Comma (,)"
149
- msgstr "Virgola (,)"
150
 
151
- msgid "Semicolon (;)"
152
- msgstr "Punto e virgola (;)"
153
 
154
- msgid "Duplicate dates are not permitted."
155
- msgstr "Le date duplicate non sono permesse."
156
 
157
- msgid "Date in the past."
158
  msgstr ""
159
 
160
- msgid "Min capacity should not be greater than max capacity."
161
- msgstr "La capacità minima non deve essere superiore alla capacità massima."
162
 
163
- msgid "All services"
164
- msgstr "Tutti i servizi"
165
 
166
- msgid "Price"
167
- msgstr "Costo"
 
 
 
168
 
169
  msgid ""
170
- "Your account has been disabled. Contact your website administrator to "
171
- "continue."
 
172
  msgstr ""
173
 
174
- msgid "You don't have permissions to view this content."
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
- msgid "Details"
184
- msgstr "Dettagli"
185
-
186
- msgid "A custom block for displaying staff details"
187
  msgstr ""
188
 
189
- msgid "Services"
190
- msgstr "Servizi"
191
-
192
- msgid "A custom block for displaying staff services"
193
  msgstr ""
194
 
195
- msgid "A custom block for displaying staff schedule"
 
 
196
  msgstr ""
197
 
198
- msgid "Special days"
 
 
 
 
 
199
  msgstr ""
200
 
201
- msgid "A custom block for displaying staff special days"
 
 
202
  msgstr ""
203
 
204
- msgid "Days off"
205
- msgstr "Giorni off"
206
-
207
- msgid "A custom block for displaying staff days off"
208
  msgstr ""
209
 
210
- msgid "Hide visibility field"
211
- msgstr "Nascondi visibilità campo"
212
-
213
- msgid "Capacity"
214
- msgstr "Capacità"
 
215
 
216
- msgid "Deposit"
217
- msgstr "Acconto"
 
 
 
 
218
 
219
- msgid "Hide WordPress users"
220
  msgstr ""
221
 
222
  msgid ""
223
- "Hide this field if you want to hide the list of WP users from your staff "
224
- "members."
225
  msgstr ""
 
 
226
 
227
- msgid "Special hours"
228
  msgstr ""
229
 
230
- msgid "Fields"
231
  msgstr ""
232
 
233
- msgid "read only"
234
  msgstr ""
235
 
236
- msgid "Add Staff Cabinet"
237
- msgstr "Aggiungi Armadio Staff "
 
 
238
 
239
- msgid "Short Codes"
240
- msgstr "Short codes"
241
 
242
- msgid "Add Staff Calendar"
243
- msgstr "Aggiungi Calendario Staff"
 
244
 
245
- msgid "Add Staff Details"
246
- msgstr "Aggiungi Dettagli Staff"
247
 
248
- msgid "Add Staff Services"
249
- msgstr "Aggiungi Servizi Staff"
 
 
 
 
 
 
 
250
 
251
- msgid "Add Staff Schedule"
252
- msgstr "Aggiungi Programmazione Staff"
253
 
254
- msgid "Add Staff Days Off"
255
- msgstr "Aggiungi Giorni Di Riposo Staff"
256
 
257
- msgid "Disable services update"
258
- msgstr "Disabilitare l'aggiornamento dei servizi"
259
 
260
- msgid "Disable price update"
261
- msgstr "Disabilitare l'aggiornamento del prezzo"
262
 
263
- msgid "Insert"
264
- msgstr "Inserisci"
 
 
 
265
 
266
- msgid "Custom Fields"
267
- msgstr "Campi personalizzati"
268
 
269
- msgid "Incorrect code"
270
- msgstr "Codice errato"
 
 
 
271
 
272
- msgid "Required"
273
- msgstr "Richiesto"
274
 
275
- msgid "Captcha"
276
- msgstr "Captcha"
 
 
 
277
 
278
- msgid "Another code"
279
- msgstr "Un'altra codice"
 
 
 
 
 
280
 
281
- msgid "combined values of all custom fields"
282
- msgstr "valori combinati di tutti i campi personalizzati"
283
 
284
- msgid "extended staff agenda for next day"
285
  msgstr ""
286
 
287
- msgid "combined values of all custom fields (formatted in 2 columns)"
288
  msgstr ""
289
- "valori combinati di tutti i campi personalizzati (formattati in 2 colonne)"
290
 
291
- msgid "Show custom fields"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 "Packages"
363
  msgstr ""
364
 
365
- msgid "Notification about new package creation"
366
  msgstr ""
367
 
368
- msgid "Notification about package deletion"
369
  msgstr ""
370
 
371
- msgid "No."
372
- msgstr "No"
373
 
374
- msgid "Creation date"
375
  msgstr ""
376
 
377
- msgid "Customer name"
378
- msgstr ""
379
 
380
- msgid "Customer phone"
381
- msgstr ""
382
-
383
- msgid "Customer email"
384
- msgstr ""
385
-
386
- msgid "Quantity"
 
 
 
 
 
 
 
 
 
 
387
  msgstr ""
388
 
389
- msgid "Notification to customer about package deactivation"
390
  msgstr ""
391
 
392
- msgid "Notification to customer about purchased package"
393
- msgstr ""
394
 
395
- msgid "Notification to staff member about package deactivation"
 
 
 
 
 
 
 
 
 
 
396
  msgstr ""
397
 
398
- msgid "Notification to staff member about purchased package"
399
  msgstr ""
400
 
401
- msgid "Any"
402
- msgstr "Qualsiasi"
403
-
404
- msgid "Your package at {company_name}"
405
- msgstr ""
406
 
407
  msgid ""
408
  "Dear {client_name}.\n"
409
  "\n"
410
- "This is a confirmation that you have booked {package_name}.\n"
411
- "We are waiting you at {company_address}.\n"
 
 
 
 
 
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 "New package booking"
421
  msgstr ""
422
 
423
  msgid ""
424
  "Hello.\n"
425
  "\n"
426
- "You have new package booking.\n"
427
  "\n"
428
- "Package: {package_name}\n"
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
- "This is a confirmation that you have booked {package_name}.\n"
440
- "We are waiting you at {company_address}.\n"
 
 
 
 
 
 
 
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
- "You have new package booking.\n"
450
- "Package: {package_name}\n"
 
 
 
 
 
 
451
  "Client name: {client_name}\n"
452
  "Client phone: {client_phone}\n"
453
  "Client email: {client_email}"
454
  msgstr ""
455
 
456
- msgid "Service package is deactivated"
 
 
 
 
 
457
  msgstr ""
458
 
459
  msgid ""
460
  "Dear {client_name}.\n"
461
  "\n"
462
- "Your package of services {package_name} has been deactivated.\n"
 
 
 
 
 
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
- "The following Package of services {package_name} has been deactivated.\n"
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
- "Your package of services {package_name} has been deactivated.\n"
 
 
 
 
 
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
- "The following Package of services {package_name} has been deactivated.\n"
 
 
 
497
  "Client name: {client_name}\n"
498
  "Client phone: {client_phone}\n"
499
  "Client email: {client_email}"
500
  msgstr ""
501
 
502
- msgid "No packages for selected period and criteria."
 
 
 
 
 
 
 
 
 
503
  msgstr ""
504
 
505
- msgid "Package schedule"
506
  msgstr ""
507
 
508
- msgid "Processing..."
509
- msgstr "Elaborazione in corso..."
510
-
511
- msgid "Creation Date"
 
 
 
 
 
 
512
  msgstr ""
513
 
514
- msgid "Expires"
 
 
 
 
 
 
 
 
 
515
  msgstr ""
516
 
517
- msgid "name of package"
 
 
 
 
 
 
 
 
 
518
  msgstr ""
519
 
520
- msgid "package size"
 
 
 
 
 
 
 
 
 
521
  msgstr ""
522
 
523
- msgid "price of package"
 
 
 
 
 
 
 
 
524
  msgstr ""
525
 
526
- msgid "package life time"
527
  msgstr ""
528
 
529
- msgid "reason you mentioned while deleting package"
 
 
 
 
 
 
 
 
530
  msgstr ""
531
 
532
- msgid "Select service"
533
- msgstr "Seleziona un servizio"
534
 
535
- msgid "Unassigned"
536
  msgstr ""
537
 
538
- msgid "Disabled"
539
- msgstr "Disabilitato"
540
 
541
- msgid "Enabled"
542
- msgstr "Abilitato"
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 "Life Time"
550
  msgstr ""
551
 
552
- msgid "The period in days when the customer can use a package of services."
553
  msgstr ""
554
 
555
- msgid "New package"
 
 
556
  msgstr ""
557
 
558
- msgid "Edit package"
559
  msgstr ""
560
 
561
- msgid "Edit"
562
- msgstr "Modifica"
563
-
564
- msgid "No result found"
565
- msgstr "Nessun risultato trovato"
566
 
567
- msgid "Searching"
568
  msgstr ""
569
 
570
- msgid "Expired"
571
- msgstr "Scaduto"
572
 
573
- msgid "Customer"
574
- msgstr "Cliente"
575
 
576
- msgid "Packages list"
577
  msgstr ""
578
 
579
- msgid "A custom block for displaying packages list"
 
 
580
  msgstr ""
581
 
582
- msgid "Could not save package in database."
583
  msgstr ""
584
 
585
- msgid "Provider"
586
- msgstr "Fornitore"
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 "-- Select a package --"
594
  msgstr ""
595
 
596
- msgid "Please select a package"
597
  msgstr ""
598
 
599
- msgid "Location"
600
- msgstr "Luogo"
601
 
602
- msgid "Incorrect location and package combination"
603
  msgstr ""
604
 
605
- msgid "Customers"
606
- msgstr "Clienti"
607
 
608
- msgid "-- Search customers --"
609
- msgstr "-- Cerca clienti --"
610
 
611
- msgid "New customer"
612
- msgstr "Nuovo cliente"
613
 
614
- msgid "Please select a customer"
615
  msgstr ""
616
 
617
- msgid "Internal note"
618
- msgstr "Nota interna"
619
-
620
- msgid "Send notifications"
621
- msgstr "Invia notifiche"
622
 
623
- msgid "Save & schedule"
624
  msgstr ""
625
 
626
  msgid ""
627
- "Selected appointment date exceeds the period when the customer can use a "
628
- "package of services."
629
  msgstr ""
630
 
631
- msgid "Ignore"
632
  msgstr ""
633
 
634
- msgid "There are no time slots for selected date."
635
  msgstr ""
636
 
637
- msgid "Selected period is occupied by another appointment"
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 "Select appointment date"
656
  msgstr ""
657
 
658
- msgid "Edit package appointment"
659
  msgstr ""
660
 
661
- msgid "Delete package appointment"
662
  msgstr ""
663
 
664
- msgid "Add customer packages list"
665
  msgstr ""
666
 
667
- msgid "Taxes"
668
  msgstr ""
669
 
670
- msgid "Title"
671
- msgstr "Titolo"
672
-
673
- msgid "Rate"
674
  msgstr ""
675
 
676
- msgid "New tax"
677
  msgstr ""
678
 
679
- msgid "Edit tax"
 
 
680
  msgstr ""
681
 
682
- msgid "No taxes found."
683
- msgstr ""
684
 
685
- msgid "Add tax"
686
- msgstr ""
687
 
688
- msgid "service tax amount"
689
  msgstr ""
690
 
691
- msgid "service tax rate"
692
  msgstr ""
693
 
694
- msgid "total tax included in the appointment (summary for all items)"
695
  msgstr ""
696
 
697
- msgid "total price without tax"
698
  msgstr ""
699
 
700
- msgid "Taxation"
701
  msgstr ""
702
 
703
- msgid "All"
704
- msgstr "Tutti"
705
-
706
- msgid "Nothing selected"
707
  msgstr ""
708
 
709
- msgid "Price settings and display"
 
 
 
710
  msgstr ""
711
 
712
  msgid ""
713
- "If the prices for your services include taxes, select include taxes. If the "
714
- "prices for your services do not include taxes, select exclude taxes."
715
  msgstr ""
716
 
717
- msgid "Include taxes"
718
  msgstr ""
719
 
720
- msgid "Exclude taxes"
721
  msgstr ""
722
 
723
- msgid "Tax"
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 "I will pay now with Credit Card"
735
- msgstr "PagheròPago subito con Carta di Credito"
736
 
737
- msgid "Sandbox Mode"
738
- msgstr "Sandbox Mode"
739
 
740
- msgid "No"
741
- msgstr "No"
742
 
743
- msgid "Yes"
744
- msgstr "Si"
745
 
746
- msgid "Merchant Key"
747
  msgstr ""
748
 
749
- msgid "Merchant Salt"
750
  msgstr ""
751
 
752
- msgid "Incorrect payment data"
753
  msgstr ""
754
 
755
- msgid "Agent ID"
756
  msgstr ""
757
 
758
- msgid "API Key"
759
  msgstr ""
760
 
761
- msgid "OFF"
762
- msgstr "OFF"
763
 
764
- msgid "Time interval of payment gateway"
765
- msgstr ""
766
 
767
- msgid ""
768
- "This setting determines the time limit after which the payment made via the "
769
- "payment gateway is considered to be incomplete. This functionality requires "
770
- "a scheduled cron job."
 
 
 
771
  msgstr ""
772
 
773
- msgid "PayPal ID"
774
  msgstr ""
775
 
776
- msgid ""
777
- "Your PayPal ID or an email address associated with your PayPal account. "
778
- "Email addresses must be confirmed."
 
779
  msgstr ""
780
 
781
- msgid "Untitled"
782
- msgstr "Senza titolo"
783
 
784
- msgid "Next"
785
- msgstr "Avanti"
786
 
787
- msgid "Extras"
788
- msgstr "Extra"
789
 
790
- msgid "Select the Extras you'd like (Multiple Selection)"
791
- msgstr ""
792
 
793
- msgid "Extras tax"
794
- msgstr ""
795
 
796
- msgid "Extras price"
797
  msgstr ""
798
 
799
- msgid "Summary"
800
  msgstr ""
801
 
802
- msgid "extras titles"
803
- msgstr ""
804
 
805
- msgid "extras total price"
806
  msgstr ""
807
 
808
- msgid "Image"
809
- msgstr "Immagine"
810
 
811
- msgid "Max quantity"
 
 
 
 
812
  msgstr ""
813
 
814
- msgid "New Item"
815
  msgstr ""
816
 
817
- msgid "Show extras"
818
  msgstr ""
819
 
820
- msgid "Show Extras step"
821
  msgstr ""
822
 
823
- msgid "Show title"
824
  msgstr ""
825
 
826
- msgid "Show price"
827
  msgstr ""
828
 
829
- msgid "Show image"
830
- msgstr ""
831
 
832
- msgid "Show duration"
833
- msgstr ""
834
 
835
- msgid "Show summary"
836
  msgstr ""
837
 
838
- msgid "Service Extras"
839
  msgstr ""
840
 
841
- msgid "Multiply extras by number of persons"
842
- msgstr ""
843
 
844
- msgid "If enabled, all extras will be multiplied by number of persons."
845
- msgstr ""
846
 
847
- msgid "Extras Step"
848
  msgstr ""
849
 
850
- msgid "After Service step"
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 "Invoice #{invoice_number} for your appointment"
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 "New invoice"
875
- msgstr ""
876
 
877
- msgid ""
878
- "Hello.\n"
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 "BILL TO"
885
- msgstr ""
886
 
887
- msgid "Invoice#"
888
  msgstr ""
889
 
890
- msgid "Date"
891
- msgstr "Data"
892
-
893
- msgid "Due date"
894
  msgstr ""
895
 
896
- msgid "INVOICE"
897
  msgstr ""
898
 
899
- msgid "Thank you for your business"
900
  msgstr ""
901
 
902
- msgid "Attach invoice"
903
  msgstr ""
904
 
905
- msgid "invoice creation date"
906
  msgstr ""
907
 
908
- msgid "due date of invoice"
909
  msgstr ""
910
 
911
- msgid "number of days to submit payment"
 
 
 
912
  msgstr ""
913
 
914
- msgid "invoice link"
915
- msgstr ""
916
 
917
- msgid "invoice number"
918
- msgstr ""
919
 
920
- msgid "Download invoices"
921
- msgstr ""
922
 
923
- msgid "Invoices"
924
  msgstr ""
925
 
926
- msgid ""
927
- "Invoices add-on requires your customers address information. So options "
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 "Invoice due days"
934
- msgstr ""
935
 
936
- msgid "This setting specifies the due period for the invoice (in days)."
937
- msgstr ""
938
 
939
- msgid "Invoice template"
 
 
940
  msgstr ""
941
 
942
- msgid "Specify the template for the invoice."
943
- msgstr ""
944
 
945
- msgid "Preview"
946
- msgstr ""
947
 
948
- msgid "Empty"
949
- msgstr ""
950
 
951
- msgid ""
952
- "Invoice due days: Please enter value in the following range (in days) - 1 to "
953
- "365."
954
- msgstr ""
955
 
956
- msgid "Subtotal"
957
- msgstr "Totale parziale"
958
 
959
- msgid "Discount"
960
  msgstr ""
961
 
962
- msgid "Total"
963
- msgstr "Totale"
964
 
965
- msgid "N/A"
966
  msgstr ""
967
 
968
- msgid "Coupon discount"
969
  msgstr ""
970
 
971
- msgid "Group discount"
972
  msgstr ""
973
 
974
- msgid "Paid"
975
- msgstr "Pagato"
976
-
977
- msgid "Due"
978
- msgstr "Dovuto"
979
 
980
- msgid "Notification for staff member to set up appointment from waiting list"
981
  msgstr ""
982
 
983
- msgid "Notification to customer about placing on waiting list"
984
  msgstr ""
985
 
986
- msgid "Notification to staff member to set appointment from waiting list"
987
  msgstr ""
988
 
989
- msgid "Notification to staff member about placing on waiting list"
990
  msgstr ""
991
 
992
- msgid ""
993
- "To join the waiting list for a busy time slot, please select a slot marked "
994
- "with \"(N)\", where N is a number of customers on the waiting list."
995
- msgstr ""
996
 
997
- msgid "Set appointment"
998
  msgstr ""
999
 
1000
- msgid "You have been added to waiting list for appointment"
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 "New waiting list information"
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 "Set appointment from waiting list"
1033
  msgstr ""
1034
 
1035
- msgid ""
1036
- "Dear {staff_name},\n"
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
- "Dear {client_name}.\n"
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
- "Hello.\n"
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
- "Dear {staff_name},\n"
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 "waiting list of appointment"
1075
- msgstr ""
1076
 
1077
- msgid "Show waiting list slots"
1078
- msgstr ""
1079
 
1080
- msgid "number of persons on waiting list"
1081
- msgstr ""
1082
 
1083
- msgid "Transaction rejected"
1084
- msgstr ""
1085
 
1086
- msgid "Error"
1087
- msgstr "Errore"
1088
 
1089
- msgid "Pending payment"
1090
- msgstr ""
1091
 
1092
- msgid "Invalid token provided"
1093
- msgstr "Token validi forniti"
1094
 
1095
- msgid "Account ID"
1096
- msgstr ""
1097
 
1098
- msgid "Merchant ID"
1099
- msgstr ""
1100
 
1101
- msgid "Mollie accepts payments in Euro only."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1102
  msgstr ""
1103
 
1104
- msgid "Mollie error."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1105
  msgstr ""
 
 
1106
 
1107
- msgid "I will pay now with Mollie"
1108
- msgstr "Pago subito con Mollie"
1109
 
1110
- msgid "Add service"
 
 
1111
  msgstr ""
 
 
1112
 
1113
- msgid "Show chain appointments"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1114
  msgstr ""
1115
 
1116
- msgid "Rating"
1117
  msgstr ""
1118
 
1119
- msgid "The feedback period has expired."
1120
  msgstr ""
1121
 
1122
- msgid "You cannot rate this service before appointment."
 
 
 
1123
  msgstr ""
1124
 
1125
- #, php-format
1126
- msgid "Rate the quality of the %s provided to you on %s at %s by %s"
1127
  msgstr ""
1128
 
1129
- msgid "Leave your comment"
1130
  msgstr ""
1131
 
1132
- msgid "Your rating has been saved. We appreciate your feedback."
 
 
1133
  msgstr ""
1134
 
1135
- msgid "URL of the page for staff rating"
1136
  msgstr ""
1137
 
1138
- msgid "Show staff member rating before employee name"
1139
  msgstr ""
1140
 
1141
- msgid "Ratings"
1142
  msgstr ""
1143
 
1144
- msgid "Rating page URL"
1145
  msgstr ""
1146
 
1147
- msgid "Set the URL of a page with a rating and comment form."
1148
  msgstr ""
1149
 
1150
- msgid "Displaying appointments rating in the backend"
1151
  msgstr ""
1152
 
1153
- msgid "Enable this setting to display ratings in the back-end."
 
 
 
1154
  msgstr ""
1155
 
1156
- msgid "Timeout for rating appointment"
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 "Period for calculating rating average"
1165
  msgstr ""
1166
 
1167
- msgid "Set a period of time during which the rating average is calculated."
 
 
 
 
 
1168
  msgstr ""
1169
 
1170
- msgid "Staff ratings"
1171
  msgstr ""
1172
 
1173
- msgid "A custom block for displaying staff ratings"
1174
  msgstr ""
1175
 
1176
- msgid "Hide comment"
1177
  msgstr ""
1178
 
1179
- msgid "Add staff rating form"
1180
  msgstr ""
1181
 
1182
- msgid "Comment"
 
 
1183
  msgstr ""
1184
 
1185
- msgid "New recurring booking notification"
1186
  msgstr ""
1187
 
1188
- msgid "Notification about recurring appointment status changes"
 
 
1189
  msgstr ""
1190
 
1191
- msgid "Notification to customer about approved recurring appointment"
 
 
 
1192
  msgstr ""
1193
 
1194
- msgid "Notification to customer about cancelled recurring appointment"
1195
  msgstr ""
1196
 
1197
- msgid "Notification to customer about pending recurring appointment"
1198
  msgstr ""
1199
 
1200
- msgid "Notification to customer about rejected recurring appointment"
1201
  msgstr ""
1202
 
1203
- msgid ""
1204
- "Notification to customer about placing on waiting list for recurring "
1205
- "appointment"
 
1206
  msgstr ""
1207
 
1208
- msgid "Notification to staff member about approved recurring appointment"
1209
  msgstr ""
1210
 
1211
- msgid "Notification to staff member about cancelled recurring appointment "
 
 
 
1212
  msgstr ""
1213
 
1214
- msgid "Notification to staff member about pending recurring appointment"
1215
  msgstr ""
1216
 
1217
- msgid "Notification to staff member about rejected recurring appointment "
 
 
 
1218
  msgstr ""
1219
 
1220
  msgid ""
1221
- "Notification to staff member about placing on waiting list for recurring "
1222
- "appointment"
1223
  msgstr ""
1224
 
1225
- msgid "or"
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 "There are no available time slots for this day"
1285
  msgstr ""
1286
 
1287
- msgid "at"
1288
  msgstr ""
1289
 
1290
- msgid "Your appointment information"
1291
- msgstr "Le informazioni del tuo appuntamento"
1292
 
1293
  msgid ""
1294
- "Dear {client_name}.\n"
1295
- "\n"
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 "New booking information"
1313
- msgstr "Informazioni nuova prenotazione"
1314
 
1315
  msgid ""
1316
- "Hello.\n"
1317
- "\n"
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 "Booking cancellation"
1329
- msgstr "Cancellazione prenotazione"
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 "Notification to staff member about cancelled recurring appointment"
1350
  msgstr ""
1351
 
1352
  msgid ""
1353
- "Hello.\n"
1354
- "\n"
1355
- "The following booking has been cancelled.\n"
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 "Booking rejection"
1368
- msgstr "Rifiuto della prenotazione"
1369
 
1370
  msgid ""
1371
- "Dear {client_name}.\n"
1372
- "\n"
1373
- "Your booking of {service_name} (x {recurring_count}) has been rejected.\n"
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
- "Hello.\n"
1390
- "\n"
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
- "Dear {client_name}.\n"
1410
- "This is a confirmation that you have booked {service_name} (x "
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
- "Hello.\n"
1471
- "The following booking has been rejected.\n"
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 "Repeat"
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 "Another time"
1492
  msgstr ""
1493
 
1494
- msgid "Biweekly"
1495
  msgstr ""
1496
 
1497
- msgid "Daily"
1498
  msgstr ""
1499
 
1500
- msgid "day(s)"
1501
  msgstr ""
1502
 
1503
- msgid "Deleted"
1504
  msgstr ""
1505
 
1506
- msgid "every"
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 "Monthly"
1515
- msgstr ""
1516
 
1517
- msgid "On"
1518
- msgstr ""
1519
 
1520
- msgid "Please select some days"
 
 
 
1521
  msgstr ""
1522
 
1523
- msgid "Another time was offered on pages {list}."
1524
  msgstr ""
1525
 
1526
- msgid ""
1527
- "Some of the desired time slots are busy. System offers the nearest time slot "
1528
- "instead. Click the Edit button to select another time if needed."
 
1529
  msgstr ""
1530
 
1531
- msgid "Specific day"
1532
  msgstr ""
1533
 
1534
- msgid "Repeat this appointment"
1535
  msgstr ""
1536
 
1537
- msgid "Until"
1538
  msgstr ""
1539
 
1540
- msgid "Weekly"
1541
  msgstr ""
1542
 
1543
- msgid "First"
1544
  msgstr ""
1545
 
1546
- msgid "Second"
1547
  msgstr ""
1548
 
1549
- msgid "Third"
1550
  msgstr ""
1551
 
1552
- msgid "Fourth"
1553
  msgstr ""
1554
 
1555
- msgid "Last"
1556
- msgstr "Successivo"
1557
 
1558
- msgid "Save"
1559
- msgstr "Salva"
1560
 
1561
- msgid "Remove"
1562
- msgstr "Rimuovere"
1563
 
1564
- msgid "Restore"
1565
  msgstr ""
1566
 
1567
- msgid "recurring appointments schedule"
1568
  msgstr ""
1569
 
1570
- msgid "recurring appointments schedule with cancel"
1571
- msgstr ""
1572
 
1573
- msgid "URL for approving the whole schedule"
1574
- msgstr ""
1575
 
1576
- msgid "recurring appointments"
1577
  msgstr ""
1578
 
1579
- msgid "Allow this service to have recurring appointments."
1580
  msgstr ""
1581
 
1582
- msgid "Frequencies"
 
 
 
1583
  msgstr ""
1584
 
1585
- msgid "pages with another time"
1586
  msgstr ""
1587
 
1588
- msgid "Show Repeat step"
 
 
 
 
 
 
1589
  msgstr ""
1590
 
1591
- msgid "Recurring Appointments"
1592
  msgstr ""
1593
 
1594
- msgid "Approve recurring appointment URL (success)"
 
 
1595
  msgstr ""
1596
 
1597
  msgid ""
1598
- "Set the URL of a page that is shown to staff after they successfully "
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 "Group appointments"
1620
- msgstr ""
1621
 
1622
- msgid "Create new appointment for every recurring booking"
1623
  msgstr ""
1624
 
1625
- msgid "Add customer to available group bookings"
1626
  msgstr ""
1627
 
1628
- msgid "Apply"
1629
- msgstr "Applica"
1630
-
1631
- msgid "Another time was offered on pages"
1632
  msgstr ""
1633
 
1634
- msgid "Back"
1635
- msgstr "Indietro"
1636
-
1637
- msgid "Every"
1638
  msgstr ""
1639
 
1640
- msgid "Delete Appointment"
 
 
1641
  msgstr ""
1642
 
1643
- msgid "Delete only this appointment"
 
 
1644
  msgstr ""
1645
 
1646
- msgid "Delete this and the following appointments"
1647
  msgstr ""
1648
 
1649
- msgid "Delete all appointments in series"
1650
  msgstr ""
1651
 
1652
- msgid "Cancellation reason (optional)"
1653
- msgstr "Motivo della cancellazione (facoltativa)"
1654
-
1655
- msgid "Customer Groups"
1656
- msgstr ""
1657
 
1658
- msgid "Group name"
1659
  msgstr ""
1660
 
1661
- msgid "Number of users"
1662
  msgstr ""
1663
 
1664
- msgid "Description"
1665
- msgstr ""
1666
 
1667
- msgid "Appointment status"
1668
- msgstr ""
1669
 
1670
- msgid "Group"
1671
- msgstr ""
1672
 
1673
- msgid "Customer group based"
1674
- msgstr ""
1675
 
1676
- msgid "Groups"
1677
- msgstr ""
1678
 
1679
- msgid "All groups"
1680
- msgstr ""
1681
 
1682
- msgid "No group selected"
1683
- msgstr ""
1684
 
1685
- msgid "New Group"
1686
  msgstr ""
1687
 
1688
- msgid "Edit Group"
1689
- msgstr ""
1690
 
1691
- msgid "No customer groups yet."
1692
  msgstr ""
1693
 
1694
- msgid "Default"
1695
- msgstr "Predefinito"
1696
-
1697
- msgid "New group"
1698
  msgstr ""
1699
 
1700
- msgid "Customers without group"
1701
- msgstr ""
1702
 
1703
- msgid "Edit group"
1704
- msgstr ""
1705
 
1706
- msgid "Group name is required"
1707
  msgstr ""
1708
 
1709
- msgid "Default appointment status"
1710
- msgstr "Stato predefinito dell'appuntamento"
1711
 
1712
- msgid "Total discount"
1713
- msgstr ""
1714
 
1715
  #, php-format
1716
  msgid ""
1717
- "Enter the fixed amount of discount (e.g. 10 off). To specify a percentage "
1718
- "discount (e.g. 10% off), add '%' symbol to a numerical value."
 
 
 
 
 
1719
  msgstr ""
1720
 
1721
- msgid "No group"
1722
  msgstr ""
1723
 
1724
- msgid "Customer Group"
 
 
1725
  msgstr ""
1726
 
1727
- msgid "Breaks"
1728
- msgstr "Pause"
1729
-
1730
- msgid "Delete break"
1731
- msgstr "Elimina pausa"
1732
-
1733
- msgid "Add special day"
1734
- msgstr ""
1735
 
1736
- msgid "Special Days"
1737
- msgstr ""
1738
 
1739
- msgid "to"
1740
- msgstr "alle"
1741
 
1742
- msgid "add break"
1743
- msgstr "+ intervallo"
1744
 
1745
- msgid "Add Staff Special Days"
1746
- msgstr ""
1747
 
1748
- msgid "Invalid session"
1749
- msgstr ""
1750
 
1751
- msgid "Instructions"
1752
- msgstr "Istruzioni"
1753
 
1754
- msgid ""
1755
- "In <b>Checkout Options</b> of your 2Checkout account do the following steps:"
1756
- msgstr ""
1757
 
1758
- msgid "In <b>Direct Return</b> select <b>Header Redirect (Your URL)</b>."
1759
- msgstr ""
1760
 
1761
- msgid "In <b>Approved URL</b> enter the URL of your booking page."
1762
- msgstr ""
1763
 
1764
- msgid "Finally provide the necessary information in the form below."
1765
- msgstr ""
1766
 
1767
- msgid "Account Number"
1768
- msgstr ""
1769
 
1770
- msgid "Secret Word"
1771
- msgstr ""
1772
 
1773
- msgid "Custom notification"
1774
- msgstr "Notifiche personalizzate"
1775
 
1776
- msgid "Appointment reminder"
1777
- msgstr ""
1778
 
1779
- msgid "New booking"
1780
- msgstr ""
1781
 
1782
- msgid "Notification about customer's appointment status change"
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
- "Follow-up message in the same day after appointment (requires cron setup)"
 
 
 
 
 
 
 
 
 
 
 
1796
  msgstr ""
1797
- "Messaggio di ringraziamento subito dopo l'appuntamento (richiede "
1798
- "configurazione cron)"
1799
-
1800
- msgid "Notification to customer about pending appointment"
1801
- msgstr "Notifica al cliente dell'appuntamento in attesa"
 
 
 
 
 
 
 
1802
 
1803
- msgid "Notification to customer about rejected appointment"
1804
- msgstr "Notifica al cliente dell'appuntamento rifiutato"
1805
 
1806
  msgid ""
1807
- "Evening reminder to customer about next day appointment (requires cron setup)"
1808
- msgstr ""
1809
- "Notifica serale al cliente con i dettagli della prenotazione del giorno dopo "
1810
- "(richiede configurazione cron)"
1811
-
1812
- msgid ""
1813
- "1st reminder to customer about upcoming appointment (requires cron setup)"
1814
- msgstr ""
1815
- "1 ° promemoria al cliente sull'imminente appuntamento (richiede "
1816
- "l'installazione di cron)"
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
- "Il tempo evidenziato non è più disponibile. Per favore, scegliere un altro "
1961
- "intervallo di tempo."
 
 
 
 
 
 
 
 
1962
 
1963
- msgid "Happy Birthday!"
1964
- msgstr "Buon compleanno!"
1965
 
1966
  msgid ""
1967
- "Dear {client_name},\n"
1968
  "\n"
1969
- "Happy birthday!\n"
1970
- "We wish you all the best.\n"
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
- "Caro {client_name},\n"
1980
- "\n"
1981
- "Buon compleanno!\n"
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
- "Dear {client_name},\n"
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
- "Possiate voi e la vostra famiglia essere felici e sani.\n"
2007
  "\n"
2008
- "Grazie per aver scelto la nostra azienda.\n"
2009
- "{company_name}\n"
2010
- "{company_phone}\n"
2011
- "{company_website}"
 
 
 
 
 
 
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
- "Your booking of {service_name} on {appointment_date} at {appointment_time} "
2070
- "has been rejected.\n"
2071
- "Reason: {cancellation_reason}\n"
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
- "The following booking has been rejected.\n"
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
- "\n"
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
- "\n"
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
- "\n"
2346
- "You have cancelled your booking of {service_name} on {appointment_date} at "
2347
- "{appointment_time}.\n"
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
- msgid ""
2357
- "Hello.\n"
2358
- "\n"
2359
- "The following booking has been cancelled.\n"
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
- "You have a new booking.\n"
 
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
- "Dear {client_name}.\n"
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 "Employee"
2472
- msgstr "Impiegato"
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 "Unknown"
 
 
 
 
 
 
2496
  msgstr ""
2497
 
2498
- msgid "New booking notification"
2499
  msgstr ""
2500
 
2501
- msgid "New booking combined notification"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2502
  msgstr ""
2503
 
2504
- msgid "New customer's WordPress user login details"
 
 
 
 
 
 
 
 
 
 
 
 
2505
  msgstr ""
2506
 
2507
- msgid "Customer's birthday greeting"
2508
- msgstr ""
2509
 
2510
- msgid "Customer's last appointment notification"
2511
- msgstr ""
2512
 
2513
- msgid "Staff full day agenda"
2514
- msgstr ""
2515
 
2516
- msgid "Test message"
2517
- msgstr "Messaggio di prova"
2518
 
2519
- msgid "Pending"
2520
- msgstr "In attesa di"
2521
 
2522
- msgid "Approved"
2523
- msgstr "Approvato"
2524
 
2525
- msgid "Cancelled"
2526
- msgstr "Cancellato"
2527
 
2528
- msgid "Rejected"
2529
- msgstr "Rifiutato"
2530
 
2531
- msgid "Local"
2532
- msgstr "Locale"
2533
 
2534
- msgid "Free"
2535
  msgstr ""
2536
 
2537
- msgid "Completed"
2538
- msgstr "Completato"
 
 
 
 
2539
 
2540
- msgid "Error connecting to server."
2541
- msgstr "Errore durante la connessione al server."
2542
 
2543
- msgid "Passwords must be the same."
2544
- msgstr "Le password devono essere uguali."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2545
 
2546
- msgid "Empty password."
2547
- msgstr "Password vuota."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2548
 
2549
- msgid "Incorrect password."
2550
- msgstr "Password errata."
 
 
 
2551
 
2552
- msgid "Incorrect recovery code."
2553
- msgstr "Codice di ripristino non corretto."
 
 
 
2554
 
2555
- msgid "Incorrect email or password."
2556
- msgstr "Email o password non corretta."
 
 
 
2557
 
2558
- msgid "Invalid email."
2559
- msgstr "E-mail non valido."
 
 
 
2560
 
2561
- msgid "Pending sender ID already exists."
2562
- msgstr "In attesa di ID del mittente esiste già."
 
2563
 
2564
- msgid "Product not found."
2565
- msgstr ""
 
2566
 
2567
- msgid "Recharge not available."
2568
- msgstr ""
2569
 
2570
- msgid "Recovery code expired."
2571
- msgstr "Codice di recupero è scaduto."
2572
 
2573
- msgid "Error sending email."
2574
- msgstr "Errore durante l'invio di posta elettronica."
2575
 
2576
- msgid "User not found."
2577
- msgstr "Utente non trovato."
2578
 
2579
- msgid "Email already in use."
2580
- msgstr "Email già in uso."
2581
 
2582
- #, php-format
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 "Bookly Cloud - Low Balance"
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 "Failed to send SMS."
2602
- msgstr "Impossibile inviare SMS."
2603
 
2604
- msgid "Phone number is empty."
2605
- msgstr "Numero di telefono è vuoto."
2606
 
2607
- msgid "Queued"
2608
- msgstr "In coda"
2609
 
2610
- msgid "Out of credit"
2611
- msgstr "Fuori del credito"
2612
 
2613
- msgid "Country out of service"
2614
- msgstr "Paese fuori servizio"
2615
 
2616
- msgid "Sending"
2617
- msgstr "Invio"
2618
 
2619
- msgid "Sent"
2620
- msgstr "Inviati"
2621
 
2622
- msgid "Delivered"
2623
- msgstr "Consegnato"
2624
 
2625
- msgid "Failed"
2626
- msgstr "Fallito"
2627
 
2628
- msgid "Undelivered"
2629
- msgstr "Non consegnato"
2630
 
2631
- msgid "Declined"
2632
- msgstr "Rifiutato"
2633
 
2634
- msgid "Incorrect sender ID"
2635
- msgstr "ID del mittente non corretto"
2636
 
2637
- msgid "Stripe not connected"
2638
- msgstr ""
2639
 
2640
- msgid "Stripe account not found"
2641
  msgstr ""
2642
 
2643
- msgid "Invalid email"
2644
- msgstr "Indirizzo eMail non valido"
2645
 
2646
- msgid "This email is already in use"
2647
- msgstr "Questo indirizzo eMail è già stato utilizzato"
2648
 
2649
- #, php-format
2650
- msgid "\"%s\" is too long (%d characters max)."
2651
- msgstr "\"%s\" è troppo lungo (%d caratteri max)."
2652
 
2653
- msgid "Invalid number"
2654
- msgstr "Numero non valido"
2655
 
2656
- msgid "Invalid date"
2657
  msgstr ""
2658
 
2659
- msgid "Invalid time"
2660
- msgstr ""
 
 
 
 
 
 
 
 
 
2661
 
2662
- #, php-format
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 "Previous month"
2712
- msgstr "Mese precedente"
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 "Error."
2730
  msgstr ""
2731
 
2732
- msgid "Username"
2733
- msgstr ""
2734
 
2735
- msgid "Password"
2736
- msgstr "Password"
2737
 
2738
- msgid "Remember Me"
2739
- msgstr ""
2740
 
2741
- msgid "Lost your password?"
2742
  msgstr ""
2743
 
2744
- msgid "Log In"
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 "Loading..."
2754
- msgstr "Caricamento in corso ..."
2755
-
2756
- msgid "Powered by"
2757
  msgstr ""
2758
 
2759
- msgid "Page Redirection"
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 "Last month"
2773
  msgstr ""
2774
 
2775
- msgid "Dashboard"
2776
  msgstr ""
2777
 
2778
- msgid ""
2779
- "See the number of appointments and total revenue for the selected period"
2780
  msgstr ""
2781
 
2782
- msgid "No customers found."
2783
- msgstr "Nessun cliente trovato."
2784
-
2785
- msgid "Edit customer"
2786
- msgstr "Modifica cliente"
2787
-
2788
- msgid "Create customer"
2789
- msgstr "Crea cliente"
2790
 
2791
- msgid "Quick search customer"
2792
- msgstr "Ricerca veloce clienti"
2793
 
2794
- msgid "Quick search customers"
2795
- msgstr ""
2796
 
2797
- msgid "Merge with"
2798
- msgstr ""
 
2799
 
2800
- msgid "Select for merge"
2801
- msgstr ""
2802
 
2803
- msgid "Merge list"
2804
  msgstr ""
2805
 
2806
- msgid "Merge customers"
2807
  msgstr ""
2808
 
 
2809
  msgid ""
2810
- "You are about to merge customers from the merge list with the selected one. "
2811
- "This will result in losing the merged customers and moving all their "
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 "No records for selected period."
2822
- msgstr "Nessun record per il periodo selezionato."
2823
-
2824
- msgid "Invoice"
2825
  msgstr ""
2826
 
2827
  msgid ""
2828
- "To generate an invoice you should fill in company information in Bookly "
2829
- "Cloud settings -> Invoice"
2830
  msgstr ""
2831
 
2832
- msgid "Addons"
2833
  msgstr ""
2834
 
2835
- msgid "New"
2836
  msgstr ""
2837
 
2838
- #, php-format
2839
- msgid "%d sale"
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 "Installed"
2851
- msgstr ""
2852
 
2853
- msgid "Get it!"
2854
- msgstr ""
2855
 
2856
- msgid "Sort by"
2857
- msgstr ""
2858
 
2859
- msgid "Best Sellers"
2860
- msgstr ""
2861
 
2862
- msgid "Best Rated"
2863
  msgstr ""
2864
 
2865
- msgid "Newest Items"
2866
  msgstr ""
2867
 
2868
- msgid "Price: low to high"
2869
  msgstr ""
2870
 
2871
- msgid "Price: high to low"
2872
- msgstr ""
2873
 
2874
- msgid "Demo"
2875
- msgstr ""
2876
 
2877
- msgid "Bookly Cloud Settings"
2878
- msgstr ""
2879
 
2880
  msgid "No records."
2881
  msgstr "Nessuna registrazione."
2882
 
2883
- msgid "Passwords don't match"
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 "Old password"
2951
- msgstr "Vecchia password"
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 "end time of appointment"
2966
- msgstr "orario di fine dell'appuntamento"
2967
 
2968
- msgid "customer notes for appointment"
2969
  msgstr ""
2970
 
2971
- msgid "time of appointment"
2972
- msgstr "orario dell'appuntamento"
2973
 
2974
- msgid "booking number"
2975
- msgstr "numero di prenotazione"
2976
 
2977
- msgid "cart information"
2978
- msgstr "informazioni carrello"
2979
 
2980
- msgid "cart information with cancel"
2981
- msgstr "informazioni carrello con annulla"
2982
 
2983
- msgid "name of category"
2984
- msgstr "nome della categoria"
2985
 
2986
- msgid "address of company"
2987
- msgstr "indirizzo della società"
2988
 
2989
- msgid "name of company"
2990
- msgstr "nome dell'azienda"
2991
 
2992
- msgid "company phone"
2993
- msgstr "telefono aziendale"
2994
 
2995
- msgid "company web-site address"
2996
- msgstr "indirizzo del sito web aziendale"
2997
 
2998
- msgid "address of client"
2999
- msgstr "indirizzo del cliente"
3000
 
3001
- msgid "email of client"
3002
- msgstr "e-mail del cliente"
3003
 
3004
- msgid "first name of client"
3005
- msgstr "Nome del cliente"
3006
 
3007
- msgid "last name of client"
3008
- msgstr "Cognome del cliente"
3009
 
3010
- msgid "full name of client"
3011
- msgstr "Nome completo del cliente"
3012
 
3013
- msgid "phone of client"
3014
- msgstr "telefono del cliente"
3015
 
3016
- msgid "time zone of client"
 
 
3017
  msgstr ""
 
 
3018
 
3019
- msgid "URL of approve appointment link (to use inside <a> tag)"
3020
  msgstr ""
3021
- "URL di collegamento per l'approvazione appuntamento (da utilizzare "
3022
- "all'interno <a> tag)"
3023
 
3024
  msgid ""
3025
- "URL of cancel appointment link with confirmation (to use inside <a> tag)"
 
3026
  msgstr ""
 
 
3027
 
3028
- msgid "URL of cancel appointment link (to use inside <a> tag)"
3029
- msgstr ""
3030
- "URL di collegamento per l'annullamento appuntamento (da utilizzare "
3031
- "all'interno <a> tag)"
3032
 
3033
- msgid "reason you mentioned while deleting appointment"
3034
- msgstr "motivo lei ha citato durante l'eliminazione appuntamento"
3035
 
3036
- msgid ""
3037
- "URL for adding event to client's Google Calendar (to use inside <a> tag)"
 
 
3038
  msgstr ""
3039
- "URL per l'aggiunta di evento al cliente Google Calendar (da utilizzare "
3040
- "all'interno <a> tag)"
3041
 
3042
- msgid "URL of reject appointment link (to use inside <a> tag)"
 
 
 
3043
  msgstr ""
3044
 
3045
- msgid "payment type"
3046
- msgstr "modalità di pagamento"
3047
 
3048
- msgid "payment status"
 
 
 
3049
  msgstr ""
 
 
 
3050
 
3051
- msgid "duration of service"
3052
- msgstr "durata del servizio"
3053
 
3054
- msgid "info of service"
3055
- msgstr "informazioni di servizio"
 
 
 
 
 
 
 
 
 
3056
 
3057
- msgid "name of service"
3058
- msgstr "nome del servizio"
3059
 
3060
- msgid "price of service"
3061
- msgstr "costo del servizio"
 
 
 
3062
 
3063
- msgid "email of staff"
3064
- msgstr "Email dello staff"
3065
 
3066
- msgid "info of staff"
3067
- msgstr "informazioni di personale"
 
 
 
3068
 
3069
- msgid "name of staff"
3070
- msgstr "nome"
3071
 
3072
- msgid "phone of staff"
3073
- msgstr "telefono"
3074
 
3075
- msgid "agenda date"
3076
  msgstr ""
3077
 
3078
- msgid "staff agenda for next day"
3079
- msgstr "agenda dello staff del giorno dopo"
3080
 
3081
- msgid "date of next day"
3082
- msgstr "data del giorno dopo"
3083
 
3084
- msgid "customer new password"
3085
- msgstr "nuova password del cliente"
3086
 
3087
- msgid "customer new username"
3088
- msgstr "nuova username del cliente"
3089
 
3090
- msgid "site address"
3091
- msgstr "sito internet"
3092
 
3093
- msgid "company logo"
3094
- msgstr "logo dell'azienda"
 
 
3095
 
3096
- msgid "cancel appointment link"
3097
- msgstr "link per la cancellazione di un appuntamento"
3098
 
3099
- msgid "photo of staff"
3100
- msgstr "foto"
 
 
3101
 
3102
- msgid "Sent successfully."
3103
- msgstr "Inviato con successo."
3104
 
3105
- msgid "enable"
 
 
3106
  msgstr ""
 
 
3107
 
3108
- msgid "disable"
3109
- msgstr ""
3110
 
3111
- msgid "General settings"
 
 
3112
  msgstr ""
 
 
3113
 
3114
- msgid "Scheduled notifications retry period"
3115
  msgstr ""
3116
 
3117
  msgid ""
3118
- "Set period of time when system will attempt to deliver notification to user. "
3119
- "Notification will be discarded after period expiration."
3120
  msgstr ""
3121
 
3122
- msgid "Save settings"
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
- "HTML allows formatting, colors, fonts, positioning, etc. With Text you must "
3136
- "use Text mode of rich-text editors below. On some servers only text emails "
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 "HTML"
3145
- msgstr "HTML"
 
 
 
 
 
 
 
 
 
 
 
3146
 
3147
- msgid "Reply directly to customers"
3148
- msgstr "Rispondi direttamente ai clienti"
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 "Email notifications"
3160
  msgstr ""
3161
 
3162
- msgid "Quick search notifications"
 
 
3163
  msgstr ""
3164
 
3165
- msgid "Test email notifications"
3166
  msgstr ""
3167
 
3168
- #, php-format
3169
  msgid ""
3170
- "To send scheduled notifications please refer to <a href=\"%1$s\">Bookly "
3171
- "Multisite</a> add-on <a href=\"%2$s\">message</a>."
 
 
 
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
- "To send scheduled notifications please execute the following command hourly "
3178
- "with your cron:"
3179
  msgstr ""
3180
- "Per inviare notifiche pianificate, eseguire il seguente comando ogni ora con "
3181
- "il tuo cron:"
3182
 
3183
- msgid "To email"
3184
- msgstr "All'indirizzo e-mail"
3185
 
3186
- msgid "Notification templates"
3187
- msgstr "Modelli per le notifiche"
3188
 
3189
- msgid "All templates"
3190
- msgstr "Tutti i modelli"
3191
 
3192
- msgid "Send"
3193
- msgstr "Inviare"
3194
 
3195
- msgid "The service will be created with the visibility of Private."
 
 
 
 
 
 
 
 
 
3196
  msgstr ""
 
 
 
3197
 
3198
- msgid "Duplicate"
 
 
 
 
 
 
 
 
 
 
 
 
3199
  msgstr ""
 
 
 
 
 
 
 
3200
 
3201
- msgid "Reorder"
3202
- msgstr "Riordina"
3203
 
3204
- msgid "You must select at least one repeat option for recurring services."
 
 
 
3205
  msgstr ""
 
 
 
3206
 
3207
- msgid "Simple"
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 "Services order"
 
 
3221
  msgstr ""
3222
 
3223
- msgid "Categories"
3224
  msgstr ""
3225
 
3226
- msgid "Quick search services"
 
 
3227
  msgstr ""
3228
 
3229
- msgid "Update service setting"
3230
- msgstr "Aggiorna le impostazioni dei servizi"
3231
 
3232
  msgid ""
3233
- "You are about to change a service setting which is also configured "
3234
- "separately for each staff member. Do you want to update it in staff settings "
3235
- "too?"
 
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 "All staff"
3253
- msgstr "Tutto lo staff"
3254
 
3255
- msgid "No staff selected"
3256
- msgstr "Nessuno staff selezionato"
3257
 
3258
- #, php-format
3259
- msgid "This text can be inserted into notifications with %s code."
3260
- msgstr "Questo testo può essere inserito in notifiche con %s codice."
3261
 
3262
- msgid "Start and end times of the appointment"
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 "Time slot length"
3272
- msgstr "dimensione fascia oraria"
3273
 
3274
- msgid "Slot length as service duration"
3275
  msgstr ""
3276
 
 
3277
  msgid ""
3278
- "The time interval which is used as a step when building all time slots for "
3279
- "the service at the Time step. The setting overrides global settings in "
3280
- "Settings > General. Use Default to apply global settings."
 
 
 
 
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
- "If you do not see your country in the list please contact us at <a "
3337
- "href=\"mailto:support@bookly.info\">support@bookly.info</a>."
3338
- msgstr ""
3339
 
3340
- msgid "Administrator phone"
3341
- msgstr "Telefono dell'amministratore"
3342
 
3343
- msgid "Send test SMS"
3344
- msgstr "Invia SMS di prova"
3345
 
3346
- msgid "Save administrator phone"
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 "Auto-refresh Calendar"
3357
- msgstr ""
3358
 
3359
- msgid "Every 1 minute"
3360
  msgstr ""
3361
 
3362
- msgid "Every 5 minutes"
3363
  msgstr ""
3364
 
3365
- msgid "Every 15 minutes"
 
 
3366
  msgstr ""
3367
 
3368
- msgid "Disable"
3369
  msgstr ""
3370
 
3371
- msgid "Welcome to Bookly and thank you for your choice!"
 
 
 
 
 
 
 
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
- #, php-format
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 "Add Staff Members"
3412
- msgstr "Aggiungi Membri dello Staff"
3413
 
3414
- msgid "Add Services"
3415
- msgstr "Aggiungi Servizi"
 
3416
 
3417
- msgid "Try Bookly Pro add-on"
3418
  msgstr ""
3419
 
3420
- msgid "Any time"
3421
  msgstr ""
3422
 
3423
- msgid "Created at any time"
3424
  msgstr ""
3425
 
3426
- msgid "No appointments for selected period."
3427
- msgstr "Nessun appuntamenti per il periodo selezionato."
3428
 
3429
- msgid "Attachments"
3430
  msgstr ""
3431
 
3432
- msgid "Archived"
 
 
3433
  msgstr ""
3434
 
3435
- msgid "Appointments"
3436
- msgstr "Appuntamenti"
3437
-
3438
- msgid "New appointment"
3439
- msgstr "Nuovo appuntamento"
3440
-
3441
- msgid "Custom"
3442
  msgstr ""
3443
 
3444
- msgid "Staff Members"
3445
- msgstr "Membri dello Staff"
3446
 
3447
- msgid "Profile"
3448
- msgstr "Profilo"
3449
 
3450
- msgid "Staff members order"
3451
  msgstr ""
3452
 
3453
- msgid "Add staff"
3454
  msgstr ""
3455
 
3456
- msgid "Quick search staff"
3457
  msgstr ""
3458
 
3459
- msgid "Show archived"
3460
  msgstr ""
3461
 
3462
- msgid "messages"
 
 
 
 
 
 
3463
  msgstr ""
 
 
3464
 
3465
- msgid "Previous"
3466
- msgstr "Precedente"
3467
 
3468
- msgid "Messages"
3469
- msgstr "Messaggi"
3470
 
3471
- msgid "Subject"
3472
- msgstr "Oggetto"
3473
 
3474
- msgid "Message"
3475
- msgstr "Messaggio"
3476
 
3477
- msgid "Your custom CSS was saved. Please refresh the page to see your changes."
3478
  msgstr ""
3479
- "Il tuo CSS personalizzato è stato salvato. Aggiorna la pagina per vedere le "
3480
- "tue modifiche."
3481
 
3482
- msgid "Appearance"
3483
- msgstr "Aspetto"
3484
 
3485
- msgid "Show form progress tracker"
3486
- msgstr "Mostra la barra di progresso nel form"
 
 
 
3487
 
3488
- msgid "Align buttons to the left"
 
3489
  msgstr ""
3490
 
3491
- msgid "Click on the underlined text to edit."
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
- "Open the page where you want to add the booking form in page edit mode and "
3499
- "click on the \"Add Bookly booking form\" button. Choose which fields you'd "
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
- msgid "Read more"
 
 
 
3505
  msgstr ""
3506
 
3507
- msgid "Make selecting employee required"
3508
- msgstr "Effettuare la selezione dei dipendenti richiesto"
3509
-
3510
- msgid "Show service price next to employee name"
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 "Show each day in one column"
3523
- msgstr "Mostra ogni giorno in una colonna"
 
 
3524
 
3525
- msgid "Phone field required"
3526
- msgstr "E' richiesto il numero di telefono"
3527
 
3528
- msgid "Email field required"
3529
- msgstr "Il campo email è obbligatorio"
 
 
3530
 
3531
- msgid "Both email and phone fields required"
3532
- msgstr "Il numero di telefono e l'email sono campi obbligatori"
3533
 
3534
- msgid "Show Login button"
3535
- msgstr "Mostra pulsante di accesso"
3536
 
3537
- msgid "Do not forget to update your email and SMS codes for customer names"
3538
  msgstr ""
3539
- "Non dimenticare di aggiornare la tua email e i codici SMS per i nomi dei "
3540
- "clienti"
3541
 
3542
- #. Fa riferimento alla funzione che permette di dividere Nome e Cognome invece di farli inserire agli utenti in un unico campo
3543
- msgid "Use first and last name instead of full name"
3544
- msgstr "Usa Nome e Cognome separati invece del Nome completo"
 
3545
 
3546
- msgid "Email confirmation field"
3547
  msgstr ""
3548
 
3549
- msgid "Show notes field"
3550
  msgstr ""
3551
 
3552
  msgid ""
3553
- "The booking form on this step may have different set or states of its "
3554
- "elements. It depends on various conditions such as installed/activated add-"
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 "Form view in case of successful booking"
3565
  msgstr ""
3566
 
3567
- msgid "Form view in case the number of bookings exceeds the limit"
 
3568
  msgstr ""
3569
 
3570
- msgid "Form view in case of payment has been accepted for processing"
3571
  msgstr ""
3572
 
3573
- msgid "Visible when the chosen time slot has been already booked"
3574
- msgstr "Visibile quando l'orario di tempo selezionato è già stato prenotato"
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 "Visible to non-logged in customers only"
3583
- msgstr "Visibile solo i clienti anonimi"
3584
 
3585
- msgid "Stripe activation was not completed"
3586
  msgstr ""
3587
 
3588
  msgid "Congrats!"
@@ -3591,750 +3435,686 @@ msgstr ""
3591
  msgid "Oops!"
3592
  msgstr ""
3593
 
3594
- msgid "Bookly Cloud"
3595
  msgstr ""
3596
 
3597
- #, php-format
3598
- msgid "Bookly %s required"
3599
  msgstr ""
3600
 
3601
- msgid "Bookly update required"
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 "Ok"
3610
  msgstr ""
3611
 
3612
- msgid "No payments for selected period and criteria."
3613
- msgstr "Nessun pagamento trovato per la fascia oraria e i criteri impostati."
3614
 
3615
- msgid "See details for more items"
3616
- msgstr "Vedi i dettagli per più voci"
3617
 
3618
- #, php-format
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 "Set order of the fields in calendar"
3633
  msgstr ""
3634
 
3635
- msgid "Phone field default country"
3636
- msgstr "Telefono paese predefinito campo"
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 "Guess country by user's IP address"
3648
- msgstr "Indovina paese da indirizzo IP dell'utente"
3649
 
3650
- msgid "Default country code"
3651
- msgstr "Prefisso internazionale predefinito"
3652
 
3653
  msgid ""
3654
- "Your clients must have their phone numbers in international format in order "
3655
- "to receive text messages. However you can specify a default country code "
3656
- "that will be used as a prefix for all phone numbers that do not start with "
3657
- "\"+\" or \"00\". E.g. if you enter \"1\" as the default country code and a "
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
- "If this setting is enabled then returning customers will have their personal "
3674
- "information fields filled in at the Details step with the data previously "
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 "Allow duplicate customers"
 
 
3682
  msgstr ""
3683
 
3684
  msgid ""
3685
- "If enabled, a new user will be created if any of the registration data "
3686
- "during the booking is different."
3687
  msgstr ""
3688
 
3689
- msgid "Show confirmation dialog before updating customer's data"
 
 
3690
  msgstr ""
3691
 
 
3692
  msgid ""
3693
- "If this option is enabled and customer enters contact info different from "
3694
- "the previous order, a warning message will appear asking to update the data."
 
 
 
 
3695
  msgstr ""
3696
 
3697
- msgid "Settings"
3698
- msgstr "Impostazioni"
3699
 
3700
- msgid "General"
3701
- msgstr "Generale"
3702
 
3703
- msgid "URL Settings"
3704
  msgstr ""
3705
 
3706
- msgid "Company"
3707
- msgstr "Azienda"
3708
 
3709
- msgid "Business Hours"
3710
- msgstr "Orari lavorativi"
3711
 
3712
- msgid "Holidays"
3713
- msgstr "Vacanze"
3714
 
3715
- msgid "internal note"
3716
- msgstr ""
3717
 
3718
- msgid "capacity of service"
3719
- msgstr "capacità di servizio"
3720
 
3721
- msgid "status of payment"
3722
- msgstr "stato del pagamento"
3723
 
3724
- msgid "status of appointment"
3725
- msgstr "stato dell'appuntamento"
3726
 
3727
- msgid "total price of booking (sum of all cart items after applying coupon)"
3728
  msgstr ""
3729
- "Prezzo totale della prenotazione (somma di tutte le voci della spesa dopo "
3730
- "l'applicazione coupon)"
3731
 
3732
  msgid ""
3733
- "Please note, the business hours below work as a template for all new staff "
3734
- "members. To render a list of available time slots the system takes into "
3735
- "account only staff members' schedule, not the company business hours. Be "
3736
- "sure to check the schedule of your staff members if you have some unexpected "
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 "Service paid locally"
3747
- msgstr "Servizio pagato il loco"
3748
 
3749
- msgid "Currency"
3750
- msgstr "Valuta"
3751
 
3752
- msgid "Price format"
3753
- msgstr "Formato prezzo"
3754
 
3755
- msgid "Website"
3756
- msgstr "Sito internet"
3757
 
3758
- msgid "Approve appointment URL (success)"
3759
- msgstr "URL di approvazione appuntamento (se riuscito)"
3760
 
3761
- msgid ""
3762
- "Set the URL of a page that is shown to staff after they successfully "
3763
- "approved the appointment."
3764
- msgstr ""
3765
 
3766
- msgid "Approve appointment URL (denied)"
3767
- msgstr "URL di approvazione appuntamento (se negato)"
3768
 
3769
- msgid ""
3770
- "Set the URL of a page that is shown to staff when the approval of "
3771
- "appointment cannot be done (due to capacity, changed status, etc.)."
3772
- msgstr ""
3773
 
3774
- msgid "Cancel appointment URL (success)"
3775
- msgstr "URL per la cancellazione di un appuntamento (se riuscito)"
3776
 
3777
- msgid ""
3778
- "Set the URL of a page that is shown to clients after they successfully "
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 "Cancel appointment URL (denied)"
3785
- msgstr "URL per la cancellazione di un appuntamento (se negato)"
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
- "Impostare la URL di una pagina che viene mostrata ai clienti quando "
3792
- "l'annullamento dell'appuntamento non è più disponibile."
3793
 
3794
- msgid "Reject appointment URL (success)"
3795
- msgstr ""
 
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 "Reject appointment URL (denied)"
3803
  msgstr ""
3804
 
3805
  msgid ""
3806
- "Set the URL of a page that is shown to staff when the rejection of "
3807
- "appointment cannot be done (due to changed status, etc.)."
 
 
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 "Set slot length as service duration"
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 "Number of days available for booking"
3831
- msgstr "Numero di giorni disponibili per la prenotazione"
3832
 
3833
- msgid "Set how far in the future the clients can book appointments."
3834
- msgstr ""
3835
- "Imposta quanto lontano nel futuro i clienti possono prenotare appuntamenti."
3836
 
3837
- msgid "Display available time slots in client's time zone"
3838
- msgstr "Mostra le fasce orarie con il fuso orario del cliente"
3839
 
3840
- msgid "The value is taken from client's browser."
 
 
 
3841
  msgstr ""
 
 
3842
 
3843
- msgid "Allow staff members to edit their profiles"
3844
- msgstr "Permetti allo staff di modificare il proprio profilo"
 
 
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 "Method to include Bookly JavaScript and CSS files on the page"
3856
- msgstr "Metodo di includere Bookly JavaScript e CSS della pagina"
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 "Caching of pages with booking form"
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 "Allow"
 
 
 
3889
  msgstr ""
3890
 
3891
- msgid "Prevent"
3892
  msgstr ""
3893
 
3894
- msgid "Email Notifications"
3895
- msgstr "Notifiche e-mail"
3896
 
3897
- msgid "Products"
3898
- msgstr ""
3899
 
3900
- msgid "Purchases"
3901
- msgstr "Acquisti"
3902
 
3903
- msgid "Get Bookly Pro"
3904
- msgstr ""
3905
 
3906
- msgid "Booking form"
3907
  msgstr ""
3908
 
3909
- msgid "A custom block for displaying booking form"
3910
  msgstr ""
3911
 
3912
- msgid "Select location"
3913
  msgstr ""
3914
 
3915
- msgid "Form fields"
3916
  msgstr ""
3917
 
3918
- msgid "Default value for location"
3919
  msgstr ""
3920
 
3921
- msgid "Default value for category"
3922
  msgstr ""
3923
 
3924
- msgid "Default value for service"
3925
  msgstr ""
3926
 
3927
- msgid "Default value for employee"
3928
  msgstr ""
3929
 
3930
- msgid "Number of persons"
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
- msgid "Revenue"
3943
- msgstr ""
 
 
 
3944
 
3945
- msgid "Approved appointments"
3946
- msgstr ""
 
 
 
3947
 
3948
- msgid "Pending appointments"
3949
  msgstr ""
3950
 
3951
- msgid "Period"
3952
- msgstr "Fascia oraria"
3953
 
3954
  msgid ""
3955
- "Could you please do me a BIG favor and give it a 5-star rating on WordPress?"
3956
  msgstr ""
3957
 
3958
- msgid "Just to help us spread the word and boost our motivation."
3959
  msgstr ""
3960
 
3961
- msgid "Ok, you deserve it"
3962
  msgstr ""
3963
 
3964
- msgid "Nope, maybe later"
3965
  msgstr ""
3966
 
3967
- msgid "Thank you for the {star} star rating!!!"
3968
  msgstr ""
3969
 
3970
- msgid "You asked to remind you"
3971
  msgstr ""
3972
 
3973
- msgid "Congratulations!!!"
3974
  msgstr ""
3975
 
3976
- msgid "You just made the <b>10th Sale</b> using Bookly Plugin!"
3977
  msgstr ""
 
 
3978
 
3979
- msgid "You just made the <b>100th Sale</b> using Bookly Plugin!"
 
3980
  msgstr ""
3981
 
3982
- msgid "You just made the <b>1000th Sale</b> using Bookly Plugin!"
3983
  msgstr ""
 
 
3984
 
3985
- msgid "You just made the <b>10000th Sale</b> using Bookly Plugin!"
3986
  msgstr ""
3987
 
3988
- msgid "Please, check your email to confirm the subscription. Thank you!"
 
3989
  msgstr ""
 
 
3990
 
3991
- msgid "Given email address is already subscribed, thank you!"
3992
  msgstr ""
3993
 
3994
- msgid "This email address is not valid."
3995
  msgstr ""
3996
 
3997
- #, php-format
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 "Agree"
4013
  msgstr ""
4014
 
4015
- msgid "Disagree"
4016
  msgstr ""
4017
 
4018
- #, php-format
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
- #, php-format
4028
- msgid "Enable Auto-Recharge and get up to %s extra."
4029
  msgstr ""
4030
 
4031
- msgid "Let Bookly Cloud products continuously work without interruptions."
4032
  msgstr ""
4033
 
4034
- msgid "Register"
4035
- msgstr "Registrare"
4036
-
4037
- msgid "Enable"
4038
  msgstr ""
4039
 
4040
- msgid "Recharge"
4041
  msgstr ""
4042
 
4043
- msgid "Remind me later"
4044
  msgstr ""
4045
 
4046
- msgid "This function is not available in the Bookly."
 
 
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 "What do you think should be improved?"
4061
- msgstr "Cosa pensi dovrebbe essere migliorato?"
4062
 
4063
- msgid "Please enter your email (optional)"
4064
- msgstr "Inserisci il tuo e-mail (facoltativo)"
4065
 
4066
- msgid "Subscribe to monthly emails about Bookly improvements and new releases."
4067
- msgstr ""
4068
- "Iscriviti alle e-mail mensili circa miglioramenti Bookly e nuove uscite."
4069
 
4070
- msgid ""
4071
- "To help us improve Bookly, the plugin anonymously collects usage information."
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 "All fields marked with an asterisk (*) are required."
4081
- msgstr "Tutti i campi contrassegnati con un asterisco (*) sono obbligatori."
4082
-
4083
- msgid "Error sending support request."
4084
- msgstr "Errore durante l'invio richiesta di supporto."
4085
 
4086
- msgid "Show all notifications"
4087
- msgstr "Mostra tutte le notifiche"
4088
 
4089
- msgid "Mark all notifications as read"
4090
- msgstr "Segna tutte le notifiche come lette"
4091
 
4092
- msgid "View this page at Bookly Pro Demo"
 
 
 
4093
  msgstr ""
 
 
 
 
4094
 
4095
- msgid "Visit demo"
4096
- msgstr ""
 
 
 
4097
 
4098
  msgid ""
4099
- "The demo is a version of Bookly Pro with all installed add-ons so that you "
4100
- "can try all the features and capabilities of the system and then choose the "
4101
- "most suitable configuration according to your business needs."
4102
  msgstr ""
 
 
 
4103
 
4104
- msgid "don't show this notification again"
4105
- msgstr ""
4106
 
4107
- msgid "Proceed to demo"
4108
- msgstr ""
4109
 
4110
- msgid "Documentation"
4111
- msgstr "Documentazione"
4112
 
4113
- msgid "Contact us"
 
 
 
4114
  msgstr ""
 
 
4115
 
4116
- msgid "Need help? Contact us here."
4117
- msgstr "Ho bisogno di aiuto? Contattaci qui."
4118
 
4119
- msgid "Leave us a message"
4120
- msgstr "Ci lascia un messaggio"
4121
 
4122
- msgid "Your name"
4123
- msgstr "Il tuo nome"
4124
 
4125
- msgid "Email address"
4126
- msgstr "Indirizzo e-mail"
4127
 
4128
- msgid "How can we help you?"
4129
- msgstr "Come possiamo aiutarti?"
4130
 
4131
- msgid "Feature requests"
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 "What is the issue you're struggling with?"
 
 
 
4153
  msgstr ""
4154
 
4155
- msgid "Where in your workflow do you encounter this issue?"
4156
- msgstr ""
4157
 
4158
- msgid ""
4159
- "Is this something that impacts just you, your whole team, or your customers?"
4160
  msgstr ""
4161
 
4162
- msgid "Proceed to Feature requests"
4163
  msgstr ""
4164
 
4165
- msgid "Feedback"
4166
- msgstr "Feedback"
4167
 
4168
  msgid ""
4169
- "We care about your experience of using Bookly!<br/>Leave a review and tell "
4170
- "others what you think."
4171
  msgstr ""
4172
 
4173
- msgid "Payment is not found."
 
 
 
4174
  msgstr ""
4175
 
4176
- msgid "Price correction"
 
 
4177
  msgstr ""
4178
 
4179
- msgid "Complete payment"
4180
- msgstr "Completare il pagamento"
4181
-
4182
- msgid "Bind payment"
4183
  msgstr ""
4184
 
4185
- msgid "Edit booking details"
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 "Start time must not be empty"
4194
- msgstr "L'ora di inizio non può essere vuota"
4195
 
4196
- msgid "End time must not be empty"
4197
- msgstr "L'ora di fine non può essere vuota"
4198
 
4199
- msgid "End time must not be equal to start time"
4200
- msgstr "L'ora finale non deve essere uguale all'ora di inizio"
4201
 
4202
- #, php-format
4203
- msgid "The number of customers should not be more than %d"
4204
- msgstr "Il numero dei clienti dovrebbe essere non maggiore di %d"
 
 
4205
 
4206
- msgid "Could not save appointment in database."
4207
- msgstr "Impossibile salvare appuntamento in banca dati."
 
 
 
4208
 
4209
  #, php-format
4210
- msgid "%s has reached the limit of bookings for this service"
 
 
4211
  msgstr ""
4212
 
4213
- msgid "Edit appointment"
4214
- msgstr "Modifica appuntamento"
4215
 
4216
- msgid "-- Select a service --"
4217
- msgstr "-- Seleziona un servizio --"
4218
 
4219
- msgid "Selected period doesn't match service duration"
4220
  msgstr ""
4221
- "Il periodo selezionato non corrisponde alla durata predefinita del servizio "
4222
- "scelto"
4223
 
4224
- msgid "The selected period is occupied by another appointment"
4225
- msgstr "Il periodo selezionato è occupato da un altro appuntamento"
 
 
4226
 
4227
- msgid "Selected period doesn't match provider's schedule"
4228
- msgstr "Il periodo selezionato non corrisponde all'orario stabilito"
4229
 
4230
- msgid "Selected period doesn't match service schedule"
4231
  msgstr ""
4232
- "Il periodo selezionato non corrisponde alla pianificazione del servizio"
4233
 
4234
- msgid "Booking exceeds the working hours limit for staff member"
4235
  msgstr ""
4236
 
4237
- msgid "Booking exceeds your working hours limit"
4238
  msgstr ""
4239
 
4240
- msgid "Selected / maximum"
4241
- msgstr "Selezionato / massimo"
 
4242
 
4243
- msgid "Minimum capacity"
4244
- msgstr "Capacità minima"
4245
 
4246
- msgid "View series"
4247
  msgstr ""
4248
 
4249
- msgid "Remove customer"
4250
- msgstr "Rimuovi cliente"
4251
 
4252
- msgid "Send if new or status changed"
4253
  msgstr ""
4254
 
4255
- msgid "Send as for new"
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 "New email notification"
4268
  msgstr ""
4269
 
4270
- msgid "Edit email notification"
4271
  msgstr ""
4272
 
4273
- msgid "Create notification"
4274
  msgstr ""
4275
 
4276
- msgid "Save notification"
4277
  msgstr ""
4278
 
4279
- msgid "Body"
4280
  msgstr ""
4281
 
4282
- msgid "Instant notifications"
4283
  msgstr ""
4284
 
4285
- msgid "Scheduled notifications (require cron setup)"
4286
  msgstr ""
4287
 
4288
- msgid "Select the type of event at which the notification is sent."
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 "Codes"
4297
- msgstr "Codici"
4298
 
4299
- msgid "Attach ICS file"
4300
  msgstr ""
4301
 
4302
- msgid "Create service"
4303
  msgstr ""
4304
 
4305
- msgid "Add category"
4306
  msgstr ""
4307
 
4308
- msgid "Adjust the order of categories in your booking form"
4309
  msgstr ""
4310
 
4311
- msgid "Edit service"
4312
  msgstr ""
4313
 
4314
- msgid "Advanced"
4315
  msgstr ""
4316
 
4317
- msgid "Adjust the order of services in your booking form"
 
 
 
4318
  msgstr ""
4319
 
4320
- msgid "Table settings"
4321
  msgstr ""
4322
 
4323
- msgid "Column"
 
 
 
 
4324
  msgstr ""
4325
 
4326
- msgid "Sms"
4327
  msgstr ""
 
4328
 
4329
- msgid "New sms notification"
4330
  msgstr ""
4331
 
4332
- msgid "Edit sms notification"
4333
  msgstr ""
4334
 
4335
- msgid "New notification"
 
 
 
 
 
 
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 "The start time must be less than the end one"
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 "Create staff"
4395
  msgstr ""
4396
 
4397
- msgid "Edit staff"
4398
  msgstr ""
4399
 
4400
- msgid "Days Off"
4401
  msgstr ""
4402
 
4403
- msgid "No services found. Please add services."
4404
- msgstr "Nessun servizio trovato. Per favore aggiungi un servizio."
4405
 
4406
- msgid "Add Service"
4407
- msgstr "Aggiungi Servizio"
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 "Archive"
4437
  msgstr ""
4438
 
4439
- msgid ""
4440
- "To make staff member invisible to your customers set the visibility to "
4441
- "\"Private\"."
 
 
 
 
 
 
 
4442
  msgstr ""
4443
- "Per rendere membro del personale invisibile ai vostri clienti impostare la "
4444
- "visibilità su \"Private\"."
4445
 
4446
- msgid "Adjust the order of staff members in your booking form"
4447
  msgstr ""
4448
 
4449
- msgid "All unsaved changes will be lost."
 
 
 
 
 
 
4450
  msgstr ""
4451
 
4452
- msgid "Don't save"
4453
  msgstr ""
4454
 
4455
  msgid ""
4456
- "You are going to delete item which is involved in upcoming appointments. All "
4457
- "related appointments will be deleted. Please double check and edit "
4458
- "appointments before this item deletion if needed."
 
 
 
4459
  msgstr ""
4460
 
4461
- msgid "Edit appointments"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4462
  msgstr ""
4463
 
4464
- msgid "Deleted Customer"
 
 
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 "New Customer"
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
- "Your country is the location from where you consume Bookly SMS services and "
4506
- "is used to provide you with the payment methods available in that country"
 
4507
  msgstr ""
4508
 
4509
- #, php-format
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 "Enter code from email"
4516
- msgstr "Inserisci il codice da e-mail"
4517
-
4518
- msgid "Thank you for registration."
4519
  msgstr ""
4520
 
4521
- msgid "You're almost ready to get started with Bookly SMS Service."
4522
  msgstr ""
4523
 
4524
- msgid "To complete registration, please enter the confirmation code below."
4525
  msgstr ""
4526
 
4527
- msgid "Confirmation code"
4528
- msgstr ""
4529
 
4530
- msgid "Confirm"
4531
- msgstr ""
4532
 
4533
- msgid "Didn't receive the email?"
4534
  msgstr ""
4535
 
4536
- msgid "Check your spam folder."
 
 
 
4537
  msgstr ""
4538
 
4539
- #, php-format
4540
- msgid "Click %s here %s to resend the email."
4541
  msgstr ""
4542
 
4543
- msgid "I'll do it later"
 
 
 
4544
  msgstr ""
4545
 
4546
- msgid "Setup your country"
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 "Set country"
4561
  msgstr ""
4562
 
4563
- msgid "Log out"
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 "Card payment has failed, please use another payment option"
4571
  msgstr ""
4572
 
4573
- msgid "Payment has failed, please use another payment option"
4574
  msgstr ""
4575
 
4576
- msgid "Pay using"
4577
  msgstr ""
4578
 
4579
- msgid "Your payment has been accepted for processing"
4580
- msgstr "Il pagamento è stato accettato per l'elaborazione"
4581
-
4582
- msgid "Your payment has been cancelled"
4583
  msgstr ""
4584
 
4585
- msgid "Continue with"
4586
  msgstr ""
4587
 
4588
- msgid "Auto-Recharge has been enabled"
4589
  msgstr ""
4590
 
4591
- msgid "Auto-Recharge has been cancelled"
4592
  msgstr ""
4593
 
4594
- msgid "Other options"
4595
  msgstr ""
4596
 
4597
- msgid "Best offer"
4598
  msgstr ""
4599
 
4600
- msgid "Users choice"
4601
  msgstr ""
4602
 
4603
- msgid "Buy now"
4604
  msgstr ""
4605
 
4606
- msgid "users choice"
4607
  msgstr ""
4608
 
4609
- msgid "current<br/>balance"
4610
  msgstr ""
4611
 
4612
- msgid "Auto-Recharge disabled"
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 "Turn on Auto-Recharge and get even more"
4620
  msgstr ""
4621
 
4622
- msgid "best offer"
4623
  msgstr ""
4624
 
4625
- msgid "Select amount of Auto-Recharge"
4626
  msgstr ""
4627
 
4628
- msgid "Disable Auto-Recharge"
4629
- msgstr "Disabilitare Auto-ricarica"
4630
-
4631
- msgid "Are you sure you want to disable Auto-Recharge?"
4632
  msgstr ""
4633
 
4634
- msgid "Please select an amount and recharge your account"
4635
  msgstr ""
4636
 
4637
- msgid "Oops"
4638
  msgstr ""
4639
 
4640
- msgid "Account recharge"
4641
  msgstr ""
4642
 
4643
- msgid "Thank you"
4644
  msgstr ""
4645
 
4646
- msgid "Back to the list of amounts"
4647
  msgstr ""
4648
 
4649
- msgid "Please select a payment method"
4650
  msgstr ""
4651
 
4652
- msgid "Credit card"
4653
  msgstr ""
4654
 
4655
- msgid "Add"
4656
  msgstr ""
4657
 
4658
- msgid "Reset"
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 "Default value for employee select"
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 "Enter a value"
4700
- msgstr "Inserisci un valore"
 
 
4701
 
4702
- msgid "Increase/Discount (%)"
 
 
4703
  msgstr ""
4704
 
4705
- msgid "Addition/Deduction"
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
- "Provide <b>Secret</b> and <b>Publishable</b> keys which are available in the "
4717
- "<a href=\"%s\" target=\"_blank\">Dashboard</a>."
 
 
 
4718
  msgstr ""
4719
 
4720
  #, php-format
 
 
 
4721
  msgid ""
4722
- "In the Dashboard's <a href=\"%s\" target=\"_blank\">Webhooks settings</a> "
4723
- "section, click <b>Add endpoint</b> to reveal a form to add a new endpoint "
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 "Publishable Key"
4739
  msgstr ""
4740
 
4741
- msgid "Secret Key"
4742
  msgstr ""
4743
 
4744
- #, php-format
4745
  msgid ""
4746
- "Bookly Stripe add-on has been upgraded to support <a href=\"%s\" "
4747
- "target=\"_blank\">SCA</a>. You must update your Stripe settings to keep the "
4748
- "integration with the upgraded add-on."
4749
  msgstr ""
4750
 
4751
- #, php-format
 
 
 
4752
  msgid ""
4753
- "1. Make sure that <b>Publishable Key</b> is provided in <a href=\"%s\">"
4754
- "payment settings</a>."
 
4755
  msgstr ""
4756
 
4757
- #, php-format
4758
  msgid ""
4759
- "2. In the Dashboard's <a href=\"%s\" target=\"_blank\">Webhooks settings</a> "
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 "Browse"
 
 
 
 
 
 
4765
  msgstr ""
4766
 
4767
- msgid "number of uploaded files"
4768
  msgstr ""
4769
 
4770
- msgid "File"
4771
  msgstr ""
4772
 
4773
- msgid "Show custom fields required"
4774
  msgstr ""
4775
 
4776
- msgid "Show files"
4777
  msgstr ""
4778
 
4779
- msgid "File Upload Field"
4780
  msgstr ""
4781
 
4782
- msgid "Files"
 
 
 
 
 
 
 
 
 
 
 
 
4783
  msgstr ""
4784
 
4785
- msgid "Upload directory"
4786
  msgstr ""
4787
 
4788
  msgid ""
4789
- "Enter the network folder path where the files will be stored. If necessary, "
4790
- "make sure that there is no free web access to the folder materials."
 
4791
  msgstr ""
4792
 
4793
- msgid "download"
4794
  msgstr ""
4795
 
4796
- msgid "Compound"
4797
  msgstr ""
4798
 
4799
- msgid "Spare time"
 
 
 
4800
  msgstr ""
4801
 
4802
- msgid "Add simple service"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4803
  msgstr ""
4804
 
4805
- msgid "=== Spare time ==="
 
 
4806
  msgstr ""
4807
 
4808
- msgid "Same staff member for all sub-services"
 
 
 
4809
  msgstr ""
4810
 
4811
  msgid ""
4812
- "If this option is enabled and the customer selects a staff member in the "
4813
- "first step of the booking form then only this staff will be used for "
4814
- "searching available slots for all sub-services."
 
4815
  msgstr ""
4816
 
4817
- msgid "Part of compound service"
4818
  msgstr ""
4819
 
4820
- msgid "Compound service"
4821
  msgstr ""
4822
 
4823
- msgid "Show address required"
 
4824
  msgstr ""
4825
 
4826
- msgid "Show google maps field"
4827
  msgstr ""
4828
 
4829
- msgid "Google Maps"
 
 
 
 
 
4830
  msgstr ""
4831
 
4832
- msgid "Follow these steps to get an API key:"
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 "Create or select a project. Click <b>Continue</b> to enable the API."
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 "Use your <b>API key</b> in the form below."
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 "Outlook Calendar event"
4864
  msgstr ""
4865
 
4866
- msgid "Calendars synchronized successfully."
4867
  msgstr ""
4868
 
4869
- msgid "Synchronize with Outlook Calendar"
4870
  msgstr ""
4871
 
4872
- msgid "Outlook Calendar"
4873
  msgstr ""
4874
 
4875
- msgid "Can't change calendar for archived staff"
4876
  msgstr ""
4877
 
4878
- msgid "Outlook Calendar integration"
4879
  msgstr ""
4880
 
4881
- msgid "Connect"
4882
- msgstr "Connetti"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4883
 
4884
  #, php-format
4885
- msgid "Please configure Outlook Calendar <a href=\"%s\">settings</a> first"
 
4886
  msgstr ""
 
 
4887
 
4888
- msgid "Connected"
4889
- msgstr "Connesso"
4890
 
4891
- msgid "disconnect"
4892
- msgstr "disconnetti"
4893
 
4894
- msgid "Synchronize staff member appointments with Outlook Calendar."
 
 
 
 
 
 
 
 
 
4895
  msgstr ""
4896
 
4897
- msgid "-- Select calendar --"
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
- "Important: Your website must use <b>HTTPS</b>. The Outlook Calendar API will "
4908
- "not work with your website if there is no valid SSL certificate installed on "
4909
- "your web server."
 
 
 
 
 
 
 
4910
  msgstr ""
4911
 
4912
- msgid "To find your Application ID and Application Secret, do the following:"
 
 
 
4913
  msgstr ""
4914
 
4915
- #, php-format
4916
  msgid ""
4917
- "Sign in to the <a href=\"%s\" target=\"_blank\">Azure portal</a> using "
4918
- "either a work or school account or a personal Microsoft account."
 
 
 
 
 
 
 
 
 
4919
  msgstr ""
4920
 
4921
  msgid ""
4922
- "If your account gives you access to more than one tenant, select your "
4923
- "account in the top right corner, and set your portal session to the Azure AD "
4924
- "tenant that you want."
 
 
 
 
4925
  msgstr ""
4926
 
4927
  msgid ""
4928
- "In the left-hand navigation pane, select the <b>Azure Active Directory</b> "
4929
- "service, and then select <b>App registrations &gt; New registration</b>."
 
 
 
 
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
- "Copy the <b>Application (client) ID</b> and insert it into the form below on "
4947
- "this page."
 
 
 
 
 
 
 
 
4948
  msgstr ""
4949
 
4950
- msgid ""
4951
- "Under <b>Certificates &amp; 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
- "Under <b>API permissions</b>, choose <b>Add a permission</b>, and select <b>"
4959
- "Microsoft Graph &gt; Delegated permissions</b>. In <b>Select permissions</b> "
4960
- "find <b>Calendars.ReadWrite</b>, select it and click <b>Add permissions</b> "
4961
- "button."
 
 
 
 
 
4962
  msgstr ""
4963
 
4964
- msgid "<b>Save</b> your changes."
 
 
 
 
 
 
 
4965
  msgstr ""
4966
 
4967
  msgid ""
4968
- "Go to Staff Members, select a staff member and click <b>Connect</b> which is "
4969
- "located at the bottom of the page."
 
 
 
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 "Application ID"
4975
  msgstr ""
4976
 
4977
- msgid "The Application ID obtained from the Microsoft App Registration Portal."
4978
  msgstr ""
4979
 
4980
- msgid "Application secret"
4981
  msgstr ""
4982
 
4983
- msgid ""
4984
- "The Application Secret password obtained from the Microsoft App Registration "
4985
- "Portal."
4986
  msgstr ""
4987
 
4988
- msgid "Redirect URI"
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 "Synchronization mode"
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 "One-way"
5009
  msgstr ""
5010
 
5011
- msgid "Two-way front-end only"
5012
  msgstr ""
5013
 
5014
- msgid "Two-way"
5015
  msgstr ""
5016
 
5017
- msgid "Sync appointments history (past and future)"
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 "Copy Outlook Calendar event titles"
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
- "If there is a lot of events in Outlook Calendar sometimes this leads to a "
5040
- "lack of memory in PHP when Bookly tries to fetch all events. You can limit "
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
- "Configure what information should be placed in the title of Outlook Calendar "
5049
- "event. Available codes are {service_name}, {staff_name} and {client_names}."
5050
  msgstr ""
5051
 
5052
- msgid "Appointment section"
5053
  msgstr ""
5054
 
5055
- msgid "This section describes information that is displayed about appointment."
5056
  msgstr ""
5057
 
5058
- msgid "Customer section"
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 "online meeting password"
5067
  msgstr ""
5068
 
5069
- msgid "online meeting start URL"
5070
  msgstr ""
5071
 
5072
- msgid "online meeting URL"
 
 
5073
  msgstr ""
5074
 
5075
- msgid "Coupons"
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 "Usage limit"
5088
- msgstr "Limite di utilizzo"
5089
-
5090
- msgid "Number of times used"
5091
- msgstr "Numero di volte usato"
5092
 
5093
- msgid "Active from"
 
 
5094
  msgstr ""
5095
 
5096
- msgid "Active until"
 
 
5097
  msgstr ""
5098
 
5099
- msgid "Min. appointments"
5100
  msgstr ""
5101
 
5102
- msgid "Max. appointments"
5103
  msgstr ""
5104
 
5105
- msgid "The total price for the booking is {total_price}."
5106
- msgstr "Il prezzo totale per la prenotazione è {total_price}."
5107
 
5108
  msgid ""
5109
- "You selected to book {appointments_count} appointments with total price "
5110
- "{total_price}."
5111
  msgstr ""
5112
- "Hai scelto di prenotare {appointments_count} con un prezzo totale di "
5113
- "{total_price}."
5114
 
5115
- msgid "Coupon"
5116
- msgstr "Coupon"
5117
 
5118
- msgid "This coupon code is invalid or has been used"
5119
- msgstr "Questo coupon non è valido o è già stato utilizzato"
5120
 
5121
- msgid "This coupon code has expired"
5122
  msgstr ""
5123
 
5124
- msgid "No coupons found."
5125
- msgstr "Nessun coupon trovato."
5126
 
5127
- msgid "All customers"
5128
  msgstr ""
5129
 
5130
- msgid "No limit"
5131
  msgstr ""
5132
 
5133
- msgid "Discount should be between 0 and 100."
5134
- msgstr "Lo sconto dovrebbe essere compreso tra 0 e 100."
5135
 
5136
- msgid "Deduction should be a positive number."
5137
- msgstr "La detrazione dovrebbe essere un numero positivo."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5138
 
5139
- msgid "Min appointments should be greater than zero."
 
 
 
 
 
 
 
 
 
 
 
 
 
5140
  msgstr ""
 
 
 
 
 
 
 
 
 
 
5141
 
5142
- msgid "Max appointments should be greater than zero."
5143
- msgstr ""
5144
 
5145
- msgid "The code already exists"
 
 
 
 
 
 
 
 
 
 
5146
  msgstr ""
 
 
 
 
 
 
 
 
 
 
5147
 
5148
- msgid "Please enter a non empty mask."
5149
- msgstr ""
5150
 
5151
- #, php-format
5152
  msgid ""
5153
- "It is not possible to generate %d codes for this mask. Only %d codes "
5154
- "available."
 
 
 
5155
  msgstr ""
 
 
 
 
 
5156
 
5157
- msgid "All possible codes have already been generated for this mask."
 
 
 
 
 
 
 
 
 
 
 
5158
  msgstr ""
 
 
 
 
 
 
 
 
 
 
 
5159
 
5160
- msgid "Export only active coupons"
 
 
 
 
 
 
 
5161
  msgstr ""
 
 
 
 
 
 
 
 
 
5162
 
5163
- msgid "New coupon series"
 
 
 
 
 
 
 
5164
  msgstr ""
5165
 
5166
- msgid "New coupon"
5167
- msgstr "Nuovo coupon"
5168
-
5169
- msgid "Edit coupon"
5170
- msgstr "Modifica coupon"
5171
-
5172
- msgid "Generate"
5173
- msgstr ""
5174
 
5175
  msgid ""
5176
- "You can enter a mask containing asterisks \"*\" for variables here and click "
5177
- "Generate."
5178
  msgstr ""
5179
 
5180
- msgid "Mask"
5181
  msgstr ""
5182
 
5183
- msgid "Enter a mask containing asterisks \"*\" for variables."
5184
  msgstr ""
5185
 
5186
- msgid "Once per customer"
5187
- msgstr ""
5188
 
5189
- msgid ""
5190
- "Select this option to limit the use of the coupon to 1 time per customer."
5191
- msgstr ""
5192
 
5193
- msgid "Date limit (from and to)"
5194
- msgstr ""
5195
 
5196
- msgid "Clear field"
5197
- msgstr ""
5198
 
5199
- msgid "Limit appointments in cart (min and max)"
5200
  msgstr ""
5201
 
5202
- msgid ""
5203
- "Specify minimum and maximum (optional) number of services of the same type "
5204
- "required to apply a coupon."
5205
- msgstr ""
5206
 
5207
- msgid "Limit to customers"
5208
  msgstr ""
5209
 
5210
- msgid "Create another coupon"
5211
- msgstr ""
5212
 
5213
- msgid "Add Coupon Series"
5214
- msgstr ""
5215
 
5216
- msgid "Add Coupon"
5217
- msgstr "Aggiungi Coupon"
5218
 
5219
- msgid "Coupon code"
5220
- msgstr ""
5221
 
5222
- msgid "Show only active"
5223
- msgstr ""
 
5224
 
5225
- msgid "Show coupons"
 
 
 
 
5226
  msgstr ""
5227
 
5228
- msgid "Default code mask"
 
 
5229
  msgstr ""
5230
 
5231
- msgid "Enter default mask for auto-generated codes."
 
 
5232
  msgstr ""
5233
 
5234
- msgid "API Login ID"
5235
  msgstr ""
5236
 
5237
- msgid "API Transaction Key"
 
 
 
 
 
 
5238
  msgstr ""
5239
 
5240
- msgid "Customer Information"
 
 
5241
  msgstr ""
5242
 
5243
- msgid "Ask once"
 
 
5244
  msgstr ""
5245
 
5246
- msgid "Show customer information"
 
5247
  msgstr ""
5248
 
5249
- msgid "Special prices for appointments which begin between:"
 
 
 
5250
  msgstr ""
 
 
 
5251
 
5252
- msgid "add special period"
5253
  msgstr ""
 
 
5254
 
5255
- msgid "Disable special hours update"
 
 
 
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 "License verification"
5282
- msgstr "La verifica di licenza"
5283
 
5284
- msgid ""
5285
- "A new appointment has been created. To view the details of this appointment, "
5286
- "please contact your website administrator in order to verify Bookly Pro "
5287
- "license."
5288
- msgstr ""
 
 
 
 
 
 
5289
 
5290
  msgid ""
5291
- "You have a new appointment. To view it, contact your admin to verify Bookly "
5292
- "Pro license."
5293
  msgstr ""
 
 
 
 
 
 
5294
 
5295
  msgid ""
5296
- "A new appointment has been created. To view the details of this appointment, "
5297
- "please verify Bookly Pro license in the administrative panel."
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
- "Please contact your website administrator in order to verify the license for "
5306
- "Bookly add-ons. If you do not verify the license within {days}, the "
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 "Contact your admin to verify Bookly add-ons license; {days} remaining."
 
 
5314
  msgstr ""
5315
- "Contattare l'amministratore per verificare Bookly licenza add-on; {days} "
5316
- "rimanenti."
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
- "Si prega di verificare la licenza per Bookly add-on nel pannello "
5324
- "amministrativo. Se non si verifica della licenza entro {days}, saranno "
5325
- "disattivati ​​i rispettivi componenti aggiuntivi."
5326
 
5327
- msgid "Please verify Bookly add-ons license; {days} remaining."
5328
- msgstr "Controllare Bookly licenza add-on; {days} rimanenti."
5329
 
5330
- msgid "Please verify your Bookly Pro license"
 
 
5331
  msgstr ""
 
5332
 
5333
  msgid ""
5334
- "Bookly Pro will need to verify your license to restore access to your "
5335
- "bookings. Please enter the purchase code in the administrative panel."
 
5336
  msgstr ""
5337
 
5338
  msgid ""
5339
- "Please verify Bookly Pro license in the administrative panel. If you do not "
5340
- "verify the license within {days}, access to your bookings will be disabled."
 
5341
  msgstr ""
 
 
 
 
5342
 
5343
- msgid "Online meeting"
5344
- msgstr ""
5345
 
5346
- msgid "Online meetings"
 
 
 
5347
  msgstr ""
5348
 
5349
  msgid ""
5350
- "You are not required to pay for the booked services, click Next to complete "
5351
- "the booking process."
5352
  msgstr ""
5353
 
5354
- msgid "Customer's birthday"
5355
  msgstr ""
5356
 
5357
- msgid "Notification to customer about approved appointments"
5358
- msgstr "Notifica al cliente degli appuntamenti approvati"
5359
-
5360
- msgid "Notification to customer about pending appointments"
5361
  msgstr ""
5362
 
5363
- msgid "Check for updates"
5364
- msgstr "Controlla gli aggiornamenti"
5365
 
5366
- msgid "This plugin is up to date."
5367
- msgstr "Questo plugin è aggiornata."
 
 
 
 
 
5368
 
5369
- msgid "A new version of this plugin is available."
5370
- msgstr "Una nuova versione di questo plugin è disponibile."
5371
 
5372
- #, php-format
5373
- msgid "Unknown update checker status \"%s\""
5374
- msgstr "Stato sconosciuto di checker aggiornamento \"%s\""
5375
 
5376
- #, php-format
5377
- msgid "To update - enter the <a href=\"%s\">Purchase Code</a>"
5378
- msgstr "Per aggiornare - inserire il <a href=\"%s\">codice di acquisto</a>"
 
5379
 
5380
- msgid "Notification to customer about their WordPress user login details"
5381
- msgstr "Notifica al cliente dei dettagli del suo account"
5382
 
5383
  msgid ""
5384
- "Hello.\n"
5385
- "\n"
5386
- "An account was created for you at {site_address}\n"
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 "Your appointment at {company_name}"
5405
- msgstr "Il tuo appuntamento presso {company_name}"
 
 
 
 
 
 
 
5406
 
5407
  msgid ""
5408
- "Dear {client_name}.\n"
5409
- "\n"
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
- "Gentile {client_name}.\n"
5420
- "\n"
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 "Your visit to {company_name}"
5431
- msgstr "La tua visita presso {company_name}"
5432
 
5433
  msgid ""
5434
- "Dear {client_name}.\n"
5435
- "\n"
5436
- "Thank you for choosing {company_name}. We hope you were satisfied with your "
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
- "Gentile {client_name}.\n"
5446
- "\n"
5447
- "Grazie per aver scelto {company_name}. Speriamo tu sia rimasto soddisfatto "
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 "Your agenda for {tomorrow_date}"
5457
- msgstr "La tua agenda per {tomorrow_date}"
5458
 
5459
  msgid ""
5460
- "Hello.\n"
5461
- "\n"
5462
- "Your agenda for tomorrow is:\n"
5463
- "\n"
5464
- "{next_day_agenda}"
5465
  msgstr ""
5466
- "Ciao.\n"
5467
- "\n"
5468
- "La tua agenda per domani è:\n"
5469
- "\n"
5470
- "{next_day_agenda}"
5471
 
5472
  msgid ""
5473
- "Dear {client_name}.\n"
5474
- "\n"
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
- "Caro {client_name}.\n"
5486
- "\n"
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
- "Hello.\n"
5499
- "An account was created for you at {site_address}\n"
5500
- "Your user details:\n"
5501
- "user: {new_username}\n"
5502
- "password: {new_password}\n"
5503
- "\n"
5504
- "Thanks."
5505
  msgstr ""
5506
- "Ciao.\n"
5507
- "\n"
5508
- "Abbiamo creato per te un account su {site_address}\n"
5509
- "\n"
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
- "Dear {client_name}.\n"
5518
- "This is a confirmation that you have booked the following items:\n"
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
- msgid "I will pay now with PayPal"
5527
- msgstr "Pago subito con PayPal"
5528
-
5529
- msgid "Street Number"
 
 
 
5530
  msgstr ""
5531
 
5532
- msgid "Street number is required"
5533
  msgstr ""
 
 
5534
 
5535
- msgid "Card Security Code"
5536
- msgstr "Codice di sicurezza della carta"
5537
-
5538
- msgid "Expiration Date"
5539
- msgstr "Data di scadenza"
5540
 
5541
- msgid "Credit Card Number"
5542
- msgstr "Numero della Carta di Credito"
 
 
5543
 
5544
- msgid "Appointment"
5545
- msgstr "Appuntamento"
5546
 
5547
- msgid "Confirm cancellation"
 
 
 
 
 
5548
  msgstr ""
5549
 
5550
- msgid "Do not cancel"
 
 
 
5551
  msgstr ""
5552
 
5553
- msgid "Thank you for being with us"
 
 
5554
  msgstr ""
 
 
 
5555
 
5556
- msgid "No appointments found."
5557
- msgstr "Nessun appuntamento trovato."
5558
-
5559
- msgid "Show past appointments"
5560
- msgstr "Mostra appuntamenti passati"
5561
-
5562
- msgid "Not allowed"
5563
- msgstr "Non consentito"
5564
 
5565
  msgid ""
5566
- "Sorry, the time slot %date_time% for %service% has been already occupied."
 
 
 
 
 
 
5567
  msgstr ""
5568
- "Spiacenti, l'intervallo di tempo%date_time% per il %service% è stato già "
5569
- "occupato."
5570
 
5571
- msgid "This service is no longer provided."
 
 
5572
  msgstr ""
5573
 
5574
- msgid "Service was not found"
5575
- msgstr "Il servizio non è stato trovato"
5576
-
5577
- msgid "Analytics"
5578
  msgstr ""
5579
 
5580
- msgid "Print"
5581
- msgstr "Stampare"
5582
 
5583
  msgid ""
5584
- "Note: If payment is made for several services, then for each service you "
5585
- "will see the entire amount paid as revenue."
 
 
 
5586
  msgstr ""
5587
-
5588
- msgid "Import"
5589
- msgstr "Importa"
5590
-
5591
- msgid "Note"
5592
- msgstr "Nota"
5593
 
5594
  msgid ""
5595
- "You may import list of clients in CSV format. You can choose the columns "
5596
- "contained in your file. The sequence of columns should coincide with the "
5597
- "specified one."
5598
  msgstr ""
 
 
5599
 
5600
- msgid "Select file"
5601
- msgstr "Seleziona un file"
5602
 
5603
- msgid "Date of birth"
5604
- msgstr "Data di nascita"
 
5605
 
5606
- msgid "online meeting join URL"
5607
  msgstr ""
5608
 
5609
- msgid "Specified order"
5610
  msgstr ""
5611
 
5612
- msgid "Least occupied that day"
5613
- msgstr "Ultimo occupato quel giorno"
 
 
5614
 
5615
- msgid "Most occupied that day"
5616
- msgstr "Più occupati quel giorno"
 
 
5617
 
5618
- msgid "Least occupied for period"
 
 
5619
  msgstr ""
5620
 
5621
- msgid "Most occupied for period"
5622
  msgstr ""
5623
 
5624
- msgid "Least expensive"
 
 
5625
  msgstr ""
5626
 
5627
- msgid "Most expensive"
 
 
5628
  msgstr ""
5629
 
5630
- msgid "Limit appointments per customer"
5631
  msgstr ""
5632
 
5633
- msgid "upcoming"
5634
  msgstr ""
5635
 
5636
- msgid "per 24 hours"
5637
  msgstr ""
5638
 
5639
- msgid "per day"
 
 
 
 
 
 
 
 
5640
  msgstr ""
5641
 
5642
- msgid "per 7 days"
 
 
 
 
 
 
 
 
 
 
 
 
5643
  msgstr ""
 
 
 
5644
 
5645
- msgid "per week"
 
 
 
 
 
 
5646
  msgstr ""
 
 
 
 
5647
 
5648
- msgid "per 30 days"
 
 
 
 
 
5649
  msgstr ""
 
 
5650
 
5651
- msgid "per month"
5652
  msgstr ""
5653
 
5654
- msgid "per 365 days"
 
 
 
 
 
 
 
5655
  msgstr ""
5656
 
5657
- msgid "per year"
5658
  msgstr ""
5659
 
5660
  msgid ""
5661
- "This setting allows you to limit the number of appointments that can be "
5662
- "booked by a customer in any given period. Restriction may end after a fixed "
5663
- "period or with the beginning of the next calendar period - new day, week, "
5664
- "month, etc."
5665
  msgstr ""
5666
 
5667
- msgid "Limit"
5668
  msgstr ""
5669
 
5670
- msgid "Providers preference for ANY"
5671
  msgstr ""
5672
 
 
5673
  msgid ""
5674
- "Allows you to define the rule of staff members auto assignment when ANY "
5675
- "option is selected"
5676
  msgstr ""
5677
- "Consente di definire la regola di assegnazione automatica dei membri dello "
5678
- "staff quando è selezionata l'opzione QUALSIASI"
5679
 
5680
- msgid "Period (before and after)"
5681
  msgstr ""
5682
 
 
 
 
 
 
 
5683
  msgid ""
5684
- "Set number of days before and after appointment that will be taken into "
5685
- "account when calculating provider's occupancy. 0 means the day of booking."
 
5686
  msgstr ""
5687
 
5688
- msgid "Pick random staff member in case of uncertainty"
 
 
 
 
 
 
5689
  msgstr ""
5690
 
5691
  msgid ""
5692
- "Enable this option to pick a random staff member if both meet the criteria "
5693
- "chosen in \"Providers preference for ANY\". Otherwise the selection order is "
5694
- "unknown."
5695
  msgstr ""
5696
 
5697
- msgid "Create online meetings"
5698
  msgstr ""
5699
 
5700
- #, php-format
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
- "To make service invisible to your customers set the visibility to "
5710
- "\"Private\"."
5711
- msgstr ""
5712
- "Per rendere il servizio invisibile ai clienti impostare la visibilità su "
5713
- "\"Private\"."
5714
 
5715
- msgid "Padding time (before and after)"
5716
- msgstr "Tempo aggiuntivo prima e dopo l'appuntamento (padding time)"
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
- msgid "Limit working hours per day"
 
 
 
5731
  msgstr ""
5732
 
5733
- msgid "Unlimited"
 
 
 
 
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 "Form view in case of single booking"
5754
- msgstr "Form view in caso di prenotazione singola"
5755
-
5756
- msgid "Form view in case of multiple booking"
5757
- msgstr "Form view in caso di prenotazione multipla"
5758
 
5759
- #, php-format
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 "Show address fields"
5769
  msgstr ""
5770
 
5771
- msgid "Show birthday field"
 
 
5772
  msgstr ""
5773
 
5774
- msgid "Show Facebook login button"
5775
  msgstr ""
5776
 
5777
- #, php-format
5778
  msgid ""
5779
- "Please configure Facebook App integration in <a href=\"%s\">settings</a> "
5780
- "first."
5781
  msgstr ""
5782
 
5783
- msgid "Show time zone switcher"
5784
  msgstr ""
5785
 
5786
  msgid ""
5787
- "Do not count appointments in 'Limit appointments per customer' with the "
5788
- "following statuses"
 
5789
  msgstr ""
5790
 
5791
- msgid "Google Calendar"
5792
- msgstr "Google Calendar"
5793
 
5794
- msgid "Purchase Code"
5795
- msgstr "Codice d'acquisto"
5796
 
5797
- msgid "Create WordPress user account for customers"
5798
- msgstr "Crea un account WordPress per i clienti"
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 "Cancel appointment action"
5810
- msgstr "Azione per cancellare l'appuntamento"
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 "New user account role"
5823
- msgstr "Ruolo del nuovo account utente"
5824
 
5825
  msgid ""
5826
- "Select what role will be assigned to newly created WordPress user accounts "
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 "Online Meetings"
5833
  msgstr ""
5834
 
5835
- msgid "Cart"
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 "Appointment cancellation confirmation URL"
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 "Customer address"
5858
  msgstr ""
5859
 
5860
- msgid ""
5861
- "Configure how the customer's address will be displayed in notifications."
5862
  msgstr ""
5863
 
5864
- msgid "To find your client ID and client secret, do the following:"
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 "Select a project, or create a new one."
5876
- msgstr "Seleziona un progetto, o creane uno nuovo."
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 "In the sidebar on the left, select <b>Credentials</b>."
5888
- msgstr "Nel menu laterale di sinistra, seleziona <b>Credentials</b>."
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
- "In the popup window look for the <b>Client ID</b> and <b>Client secret</b>. "
5917
- "Use them in the form below on this page."
 
 
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
- #, php-format
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 "Client ID"
5932
- msgstr "Client ID"
5933
 
5934
- msgid "The client ID obtained from the Developers Console"
 
 
 
 
5935
  msgstr ""
5936
- "Il \n"
5937
- "Client ID ottenuto dalla Developer Console"
5938
-
5939
- msgid "Client secret"
5940
- msgstr "Client secret"
5941
 
5942
- msgid "The client secret obtained from the Developers Console"
5943
  msgstr ""
5944
- "Il \n"
5945
- "Client secret ottenuto dalla Developer Console"
5946
 
5947
- msgid "Enter this URL as a redirect URI in the Developers Console"
5948
- msgstr "Inserisci questa URL come \"redirect URI\" nella Developer Console"
 
 
 
 
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
- "If there is a lot of events in Google Calendar sometimes this leads to a "
5960
- "lack of memory in PHP when Bookly tries to fetch all events. You can limit "
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
- "Upon providing the purchase code you will have access to free updates of "
5974
- "Bookly. Updates may contain functionality improvements and important "
5975
- "security fixes. For more information on where to find your purchase code see "
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
- "If you do not provide a valid purchase code within {days}, access to your "
5988
- "bookings will be disabled."
5989
  msgstr ""
5990
- "Se non si fornisce un codice di acquisto valido entro {days}, l'accesso alle "
5991
- "vostre prenotazioni sarà disattivato."
5992
 
5993
- msgid "Make address mandatory"
5994
  msgstr ""
5995
 
 
5996
  msgid ""
5997
- "Customers are required to enter address to proceed with a booking. To "
5998
- "disable, deactivate Invoices add-on first."
 
 
5999
  msgstr ""
6000
 
6001
- msgid "Customer's address fields"
6002
  msgstr ""
6003
 
6004
- msgid "Choose address fields you want to request from the client."
 
 
 
 
 
 
6005
  msgstr ""
6006
 
6007
- msgid "number of persons"
6008
- msgstr "numero di persone"
6009
 
6010
- msgid "To find your API Key and Secret, do the following:"
6011
  msgstr ""
6012
 
6013
- msgid "Sign in to your Zoom account"
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
- "Click on the <b>Develop</b> option in the dropdown on the top-right corner "
6023
- "and select <b>Build App</b>"
 
6024
  msgstr ""
6025
 
6026
  msgid ""
6027
- "A page with various app types will be displayed. Select <b>JWT</b> as the "
6028
- "app type and click on <b>Create</b>"
 
 
6029
  msgstr ""
6030
 
6031
- msgid "After creating your app, fill out descriptive and contact information"
6032
  msgstr ""
6033
 
6034
- msgid ""
6035
- "Go to <b>App Credentials</b> tab and look for the <b>API Key</b> and <b>API "
6036
- "Secret</b>. Use them in the form below on this page"
 
6037
  msgstr ""
6038
 
6039
  msgid ""
6040
- "Once you've copied over your API Key and Secret, go to <b>Activation</b> tab "
6041
- "and make sure your app is activated"
 
6042
  msgstr ""
 
 
 
 
6043
 
6044
- msgid "The API Key obtained from your JWT app"
 
 
6045
  msgstr ""
6046
 
6047
- msgid "API Secret"
 
 
 
 
 
 
 
 
6048
  msgstr ""
 
 
6049
 
6050
- msgid "The API Secret obtained from your JWT app"
6051
  msgstr ""
6052
 
6053
- msgid "Minimum time requirement prior to booking"
6054
- msgstr "Tempo richiesto prima della prenotazione"
6055
 
6056
  msgid ""
6057
- "Set how late appointments can be booked (for example, require customers to "
6058
- "book at least 1 hour before the appointment time)."
 
 
 
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 "Minimum time requirement prior to canceling"
6065
- msgstr "Requisito minimo di tempo prima di annullamento"
6066
 
6067
  msgid ""
6068
- "Set how late appointments can be cancelled (for example, require customers "
6069
- "to cancel at least 1 hour before the appointment time)."
6070
  msgstr ""
6071
- "Imposta come appuntamenti in ritardo può essere annullata (ad esempio, "
6072
- "richiedono ai clienti di annullare almeno 1 ora prima dell'orario di "
6073
- "appuntamento)."
6074
 
6075
  msgid ""
6076
- "You need to install and activate WooCommerce plugin before using the options "
6077
- "below.<br/><br/>Once the plugin is activated do the following steps:"
6078
  msgstr ""
6079
- "Devi installare ed attivare WooCommerce prima di utilizzare le opzioni "
6080
- "seguenti.<br/><br/>Una volta attivato il plugin segui questi passi:"
6081
 
6082
- msgid "Create a product in WooCommerce that can be placed in cart."
6083
- msgstr ""
6084
- "Crea un prodotto in WooCommerce che possa essere inserito in un carrello."
6085
 
6086
- msgid "In the form below enable WooCommerce option."
6087
- msgstr "Nel form sottostante abilita l'opzione WooCommerce."
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
- "If needed, edit item data which will be displayed in the cart. Besides cart "
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
- "Note that once you have enabled WooCommerce option in Bookly the built-in "
6103
- "payment methods will no longer work. All your customers will be redirected "
6104
- "to WooCommerce cart instead of standard payment step."
6105
  msgstr ""
6106
- "Nota che una volta abilitato WooCommerce in Bookly, le modalità di pagamento "
6107
- "predefinite non saranno più funzionanti. Tutti i tuoi clienti verranno re-"
6108
- "indirizzati al carrello WooCommerce invece di procedere allo step "
6109
- "predefinito per il pagamento."
6110
 
6111
- msgid "Booking product"
6112
- msgstr "Prenotazione del prodotto"
6113
 
6114
- msgid "Cart item data"
6115
- msgstr "Dati del prodotto nel carrello"
 
 
 
 
 
6116
 
6117
- msgid "Columns"
6118
- msgstr "Colonne"
6119
 
6120
  msgid ""
6121
- "Select columns that you want to display in a cart summary before the booking "
6122
- "confirmation. Uncheck the box to hide the column. Drag the sandwich icon to "
6123
- "change the order of fields."
6124
  msgstr ""
6125
 
6126
  msgid ""
6127
- "If you use {cart_info} code in notifications, you can select the columns "
6128
- "that you want to display and set the order of fields here. Uncheck the box "
6129
- "to hide the column."
6130
  msgstr ""
6131
 
6132
- msgid "Make birthday mandatory"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6133
  msgstr ""
6134
 
 
 
 
 
 
 
6135
  msgid ""
6136
- "If enabled, a customer will be required to enter a date of birth to proceed "
6137
- "with a booking."
6138
  msgstr ""
 
 
6139
 
6140
- msgid "API Username"
6141
- msgstr "API Username"
6142
 
6143
- msgid "API Password"
6144
- msgstr "API Password"
6145
 
6146
- msgid "API Signature"
6147
- msgstr "API Signature"
 
 
 
6148
 
6149
- msgid "Final step URL"
6150
- msgstr "URL dell'ultimo step"
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 "Enter a URL"
6161
- msgstr "Inserisci un URL"
6162
 
6163
- msgid "To set up Facebook integration, do the following:"
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
- "Go to your App Dashboard. In the left side navigation panel of the App "
6183
- "Dashboard, click Settings > Basic to view the App Details Panel with your "
6184
- "App ID. Use it in the form below."
6185
  msgstr ""
6186
 
6187
- msgid "App ID"
6188
  msgstr ""
6189
 
6190
- msgid "Appointments list"
6191
  msgstr ""
6192
 
6193
- msgid "A custom block for displaying appointments list"
6194
  msgstr ""
6195
 
6196
- msgid "Titles"
6197
- msgstr "Titoli"
6198
-
6199
- msgid "show"
6200
  msgstr ""
6201
 
6202
- msgid "Custom fields"
6203
  msgstr ""
6204
 
6205
- msgid "Cancellation confirmation"
6206
  msgstr ""
6207
 
6208
- msgid "A custom block for displaying cancellation confirmation"
6209
  msgstr ""
6210
 
6211
- msgid "Welcome to Bookly Pro and thank you for purchasing our product!"
6212
  msgstr ""
6213
 
6214
- msgid "Add staff members."
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
- "Bookly can boost your sales and scale together with your business. With "
6222
- "Bookly add-ons you can get more features and functionality to customize your "
6223
- "online scheduling system according to your business needs and simplify the "
6224
- "process even more."
 
 
 
 
 
6225
  msgstr ""
6226
 
6227
- msgid "Bookly Add-ons"
6228
  msgstr ""
6229
 
6230
- msgid "SMS service"
 
 
 
 
 
 
 
 
 
 
 
6231
  msgstr ""
6232
 
6233
- msgid "Manual adjustment"
 
 
 
 
 
 
6234
  msgstr ""
6235
 
6236
- msgid "Reason"
 
 
 
 
 
 
6237
  msgstr ""
6238
 
6239
- msgid "Attach payment"
6240
  msgstr ""
6241
 
6242
- msgid "Create payment"
6243
  msgstr ""
6244
 
6245
- msgid "Total price"
6246
  msgstr ""
6247
 
6248
- msgid "Search payment"
6249
  msgstr ""
6250
 
6251
- msgid "Payment ID"
6252
  msgstr ""
6253
 
6254
- msgid "Timezone"
 
 
 
6255
  msgstr ""
6256
 
6257
- msgid "Copy to clipboard"
6258
  msgstr ""
6259
 
6260
- msgid "copied"
6261
  msgstr ""
6262
 
 
 
 
6263
  msgid ""
6264
- "This link can be inserted into notifications with {online_meeting_url} code"
 
6265
  msgstr ""
 
 
6266
 
6267
- msgid "Save appointment to create a meeting"
6268
- msgstr ""
6269
 
6270
- msgid "Custom service name"
6271
- msgstr ""
6272
 
6273
- msgid "Please enter a service name"
6274
  msgstr ""
6275
 
6276
- msgid "Custom service price"
6277
- msgstr ""
6278
 
6279
- msgid "Archiving Staff"
 
 
 
6280
  msgstr ""
6281
 
6282
- msgid ""
6283
- "You are going to archive item which is involved in upcoming appointments. "
6284
- "Please double check and edit appointments before this item archive if needed."
 
 
 
 
6285
  msgstr ""
6286
 
6287
- msgid "Ok, continue editing"
6288
  msgstr ""
6289
 
6290
- #, php-format
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 "Bookly Pro - License verification required"
6299
  msgstr ""
6300
 
6301
- msgid "Access to your bookings has been disabled."
6302
- msgstr "L'accesso alle tue prenotazioni è stato disattivato."
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 "Thank you for choosing Bookly Pro as your booking solution."
 
 
 
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 "Proceed to Bookly Pro without license verification"
6326
  msgstr ""
6327
 
6328
- msgid "License verification required"
6329
- msgstr "Verifica licenza necessaria"
6330
 
6331
- msgid ""
6332
- "Please contact your website administrator to verify your license by "
6333
- "providing a valid purchase code. Upon providing the purchase code you will "
6334
- "get access to software updates, including feature improvements and important "
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
- "To enable access to your bookings, please verify your license by providing a "
6341
- "valid purchase code. <a href=\"{url}\">Details</a>"
6342
  msgstr ""
6343
 
6344
- msgid "Deactivate Bookly Pro"
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 "I have already made the purchase"
6355
- msgstr "Ho già fatto l'acquisto"
6356
 
6357
- msgid "I want to make a purchase now"
6358
- msgstr "Voglio fare un acquisto ora"
 
6359
 
6360
- msgid "License verification succeeded"
6361
- msgstr "La verifica di licenza è riuscito"
6362
 
6363
- msgid "Your license has been verified successfully."
6364
- msgstr "La licenza è stata verificata con successo."
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 "Proceed"
6374
- msgstr "Procedere"
6375
 
6376
  msgid ""
6377
- "To enable access to your bookings, please contact your website administrator "
6378
- "in order to verify the license."
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 "I will provide license info later"
6399
- msgstr "Mi impegno a fornire informazioni di licenza in seguito"
6400
 
6401
- msgid "Add Bookly appointments list"
6402
- msgstr "Aggiungi una lista appuntamenti di Bookly"
6403
 
6404
- msgid "Add appointment cancellation confirmation"
 
 
 
 
 
 
6405
  msgstr ""
6406
 
6407
- msgid "online meeting join url"
6408
  msgstr ""
6409
 
6410
- #, php-format
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 "Error dissociating purchase code."
6418
  msgstr ""
6419
 
6420
  #, php-format
6421
  msgid ""
6422
- "<a class=\"%s\" href=\"#\">Click here</a> to dissociate this purchase code "
6423
- "from the current domain (use to move the plugin to another site)."
6424
  msgstr ""
6425
 
6426
- msgid "Google Calendar event"
6427
  msgstr ""
6428
 
6429
- msgid "Synchronize with Google Calendar"
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 "Copy Google Calendar event titles"
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 "Overwrite the description of the original Google Calendar events"
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 "Multiply Appointments"
6463
  msgstr ""
6464
 
6465
- msgid "Set maximum value for Quantity field."
6466
  msgstr ""
6467
 
6468
- msgid "Persons"
6469
  msgstr ""
6470
 
6471
- msgid "Capacity (min and max)"
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 "One booking per time slot"
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 "Show information about group bookings"
6490
  msgstr ""
6491
 
6492
- msgid "Group Booking"
6493
  msgstr ""
6494
 
6495
- msgid "number of persons already in the list"
6496
- msgstr "numero di persone già presenti nell'elenco"
6497
 
6498
- msgid "Group bookings information format"
6499
  msgstr ""
6500
 
 
6501
  msgid ""
6502
- "Select format for displaying the time slot occupancy for group bookings."
 
6503
  msgstr ""
6504
 
6505
- msgid "[Booked/Max capacity]"
6506
  msgstr ""
6507
 
6508
- msgid "[Available left]"
6509
  msgstr ""
6510
 
6511
- msgid "Disable capacity update"
6512
  msgstr ""
6513
 
6514
- msgid "Your task is done"
 
 
 
 
 
 
 
 
 
6515
  msgstr ""
6516
 
6517
  msgid ""
6518
  "Dear {client_name}.\n"
6519
  "\n"
6520
- "Your task {service_name} has been done.\n"
 
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 "Task is done"
6530
  msgstr ""
6531
 
6532
  msgid ""
6533
  "Hello.\n"
6534
  "\n"
6535
- "The following task has been done.\n"
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
- "Your task {service_name} has been done.\n"
 
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
- "The following task has been done.\n"
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 "Skip"
 
 
 
 
 
6565
  msgstr ""
6566
 
6567
- msgid "Time step settings"
 
 
6568
  msgstr ""
6569
 
6570
- msgid "Optional"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 "Tasks"
6580
  msgstr ""
6581
 
6582
- msgid "Skip time selection"
6583
  msgstr ""
6584
 
6585
- msgid "Would you like to pay deposit or total price"
6586
  msgstr ""
6587
 
6588
- msgid "I will pay deposit"
6589
  msgstr ""
6590
 
6591
- msgid "I will pay total price"
6592
  msgstr ""
6593
 
6594
- msgid "Pay now"
6595
  msgstr ""
6596
 
6597
- msgid "Pay now tax"
6598
  msgstr ""
6599
 
6600
- msgid "amount due"
6601
  msgstr ""
6602
 
6603
- msgid "amount paid"
6604
  msgstr ""
6605
 
6606
- msgid "total deposit amount to be paid"
6607
  msgstr ""
6608
 
6609
- msgid "amount to pay"
6610
  msgstr ""
6611
 
6612
- msgid "Deposit options"
6613
  msgstr ""
6614
 
6615
- msgid "Deposit only"
6616
  msgstr ""
6617
 
6618
- msgid "Deposit or full price"
6619
  msgstr ""
6620
 
 
 
 
6621
  msgid ""
6622
- "If you enable \"Deposit only\", customers will be requested to pay only a "
6623
- "deposit amount. If you enable \"Deposit or full price\", customers will be "
6624
- "requested to pay a deposit amount or a full amount."
6625
  msgstr ""
 
 
 
6626
 
6627
- msgid "Disable deposit update"
6628
  msgstr ""
6629
 
6630
- msgid "deposit value"
6631
  msgstr ""
6632
 
6633
- msgid "Locations"
6634
  msgstr ""
6635
 
6636
- msgid "Staff members"
6637
  msgstr ""
6638
 
6639
- msgid "Please select a location"
6640
  msgstr ""
6641
 
6642
- msgid "location info"
6643
  msgstr ""
6644
 
6645
- msgid "location name"
6646
  msgstr ""
6647
 
6648
- msgid "No locations found."
6649
  msgstr ""
6650
 
6651
- msgid "Add Location"
6652
  msgstr ""
6653
 
6654
- msgid "New Location"
6655
  msgstr ""
6656
 
6657
- msgid "Edit Location"
 
 
6658
  msgstr ""
6659
 
6660
- msgid "W/o location"
6661
  msgstr ""
6662
 
6663
- msgid "Select locations where the services are provided."
6664
  msgstr ""
6665
 
6666
- msgid "Default settings"
6667
  msgstr ""
6668
 
6669
  msgid ""
6670
- "Set Default values that will be used in all locations where Use default "
6671
- "settings is selected. To use custom settings in a location, select Use "
6672
- "custom settings and enter custom values."
6673
  msgstr ""
6674
 
6675
- msgid "Use default settings"
6676
  msgstr ""
6677
 
6678
- msgid "Use custom settings"
6679
  msgstr ""
6680
 
6681
- msgid "Custom settings for location enabled"
6682
  msgstr ""
6683
 
6684
- msgid "Make selecting location required"
 
 
 
 
 
 
6685
  msgstr ""
6686
 
6687
  msgid "Custom settings for location"
@@ -6692,186 +6843,220 @@ msgid ""
6692
  "different locations."
6693
  msgstr ""
6694
 
6695
- msgid "Default value for location select"
6696
  msgstr ""
6697
 
6698
- msgid "Free/Busy"
6699
  msgstr ""
6700
 
6701
- msgid "No statuses found."
6702
  msgstr ""
6703
 
6704
- msgid "Busy"
6705
  msgstr ""
6706
 
6707
- msgid "Custom Statuses"
6708
  msgstr ""
6709
 
6710
- msgid "Custom statuses"
6711
  msgstr ""
6712
 
6713
- msgid "Add status"
6714
  msgstr ""
6715
 
6716
- msgid "New Status"
6717
  msgstr ""
6718
 
6719
- msgid "Edit Status"
6720
  msgstr ""
6721
 
6722
- msgid "Free/busy"
 
 
 
6723
  msgstr ""
6724
 
6725
  msgid ""
6726
- "If you select busy, then a customer with this status will occupy a place in "
6727
- "appointment. If you select free, then a place will be considered as free."
 
6728
  msgstr ""
6729
 
6730
- msgid "No appointments."
6731
  msgstr ""
6732
 
6733
- msgid "Reschedule"
6734
  msgstr ""
6735
 
6736
- msgid "Profile updated successfully."
6737
  msgstr ""
6738
 
6739
- msgid "Join online meeting"
6740
  msgstr ""
6741
 
6742
- msgid "Wrong current password"
6743
  msgstr ""
6744
 
6745
- msgid "Passwords mismatch"
6746
  msgstr ""
6747
 
6748
- msgid "WP user"
6749
  msgstr ""
6750
 
6751
- msgid "Current password"
6752
  msgstr ""
6753
 
6754
- msgid "Confirm password"
6755
  msgstr ""
6756
 
6757
- msgid "Delete account"
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
- "This account cannot be deleted because it is associated with scheduled "
6767
- "appointments. Please cancel bookings or contact the service provider."
6768
  msgstr ""
6769
 
6770
- msgid "Cancel Appointment"
6771
  msgstr ""
6772
 
6773
- msgid "You are going to cancel a scheduled appointment. Are you sure?"
6774
  msgstr ""
6775
 
6776
- msgid "Customer cabinet"
6777
  msgstr ""
6778
 
6779
- msgid "A custom block for displaying customer cabinet"
6780
  msgstr ""
6781
 
6782
- msgid "Custom field"
6783
  msgstr ""
6784
 
6785
- msgid "Wordpress password"
6786
  msgstr ""
6787
 
6788
- msgid "Customer information"
6789
  msgstr ""
6790
 
6791
- msgid "Appointment management"
6792
  msgstr ""
6793
 
6794
- msgid "Profile management"
6795
  msgstr ""
6796
 
6797
- msgid "Add Customer Cabinet"
6798
  msgstr ""
6799
 
6800
- msgid "Customer cabinet (all services displayed in tabs)"
6801
  msgstr ""
6802
 
6803
- msgid "Show timezone"
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
- msgid "Unit price"
 
6814
  msgstr ""
6815
 
6816
- msgid "Unit duration"
6817
  msgstr ""
6818
 
6819
- msgid "Minimum units"
6820
  msgstr ""
6821
 
6822
- msgid "Maximum units"
 
 
 
6823
  msgstr ""
6824
 
6825
- msgid "Show service price next to duration"
 
 
 
 
6826
  msgstr ""
6827
 
6828
- msgid "Collaborative"
 
 
 
6829
  msgstr ""
6830
 
6831
- msgid "Equal duration"
 
 
6832
  msgstr ""
6833
 
6834
- msgid "Make every service duration equal to the duration of the longest one."
6835
  msgstr ""
6836
 
6837
- msgid "Part of collaborative service"
6838
  msgstr ""
6839
 
6840
- msgid "Collaborative service"
 
 
 
 
6841
  msgstr ""
6842
 
 
6843
  msgid ""
6844
- "To receive REST API credentials, in <b>My Apps & Credentials</b> of your "
6845
- "PayPal account do the following steps:"
6846
  msgstr ""
6847
 
6848
- msgid "Click <b>Create App</b> and enter application details."
 
 
 
 
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 "Secret"
6857
  msgstr ""
6858
 
6859
- msgid "Book More"
6860
- msgstr "Prenota più servizi"
6861
 
6862
  msgid ""
6863
- "Below you can find a list of services selected for booking.\n"
6864
- "Click BOOK MORE if you want to add more services."
 
 
 
 
 
 
 
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 "Total tax"
6871
  msgstr ""
6872
 
6873
- msgid "Waiting list"
 
 
 
6874
  msgstr ""
6875
 
6876
- msgid "Show Cart step"
 
 
 
 
 
 
 
 
 
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 &gt; 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 &amp; 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 &gt; 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-11-26 12:29+0000\n"
12
- "PO-Revision-Date: 2020-11-26 13:07+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,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-11-25 12:42+0000\n"
12
- "PO-Revision-Date: 2020-11-25 14:55+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,8 +68,11 @@ msgstr "Data de vencimento"
68
  msgid "INVOICE"
69
  msgstr "FATURA"
70
 
71
- msgid "Thank you for your business"
72
- msgstr "Obrigado pelos seus serviços"
 
 
 
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-11-27 10:05+0000\n"
13
- "PO-Revision-Date: 2020-11-29 16:22+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,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-11-25 12:42+0000\n"
12
- "PO-Revision-Date: 2020-11-26 15: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,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
- return Proxy\ServiceExtras::prepareServicePrice( $price * $nop, $price, $nop, $this->extras );
 
 
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
- return Lib\Proxy\ServiceExtras::prepareServicePrice( $price * $nop, $price, $nop, json_decode( $this->getCA()->getExtras(), true ) );
 
 
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 += $extras_amount;
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'][] = array(
199
- 'ca_id' => $sub_item->getCA()->getId(),
200
- 'appointment_date' => $sub_item->getAppointment()->getStartDate(),
201
- 'service_name' => $sub_item->getService()->getTitle(),
202
- 'service_price' => $sub_item->getServicePrice(),
203
- 'service_tax' => $wait_listed ? null : $sub_item->getServiceTax(),
204
- 'wait_listed' => $wait_listed,
205
- 'deposit_format' => $deposit_format,
206
- 'number_of_persons' => $sub_item->getCA()->getNumberOfPersons(),
207
- 'units' => $sub_item->getCA()->getUnits(),
208
- 'duration' => $sub_item->getService()->getDuration(),
209
- 'staff_name' => $sub_item->getStaff()->getFullName(),
210
- 'extras' => $extras,
 
 
 
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' => esc_attr__( 'No.', 'bookly' ),
43
- 'start_date' => esc_attr__( 'Appointment date', 'bookly' ),
44
- 'staff_name' => esc_attr( Common::getTranslatedOption( 'bookly_l10n_label_employee' ) ),
45
- 'customer_full_name' => esc_attr__( 'Customer name', 'bookly' ),
46
- 'customer_phone' => esc_attr__( 'Customer phone', 'bookly' ),
47
- 'customer_email' => esc_attr__( 'Customer email', 'bookly' ),
48
- 'service_title' => esc_attr( Common::getTranslatedOption( 'bookly_l10n_label_service' ) ),
49
- 'service_duration' => esc_attr__( 'Duration', 'bookly' ),
50
- 'status' => esc_attr__( 'Status', 'bookly' ),
51
- 'payment' => esc_attr__( 'Payment', 'bookly' ),
52
- 'notes' => esc_attr( Common::getTranslatedOption( 'bookly_l10n_label_notes' ) ),
53
- 'created_date' => esc_attr__( 'Created', 'bookly' ),
54
  );
55
  break;
56
  case self::CLOUD_PURCHASES:
57
  $columns = array(
58
- 'date' => esc_attr__( 'Date', 'bookly' ),
59
- 'time' => esc_attr__( 'Time', 'bookly' ),
60
- 'type' => esc_attr__( 'Type', 'bookly' ),
61
- 'status' => esc_attr__( 'Status', 'bookly' ),
62
- 'amount' => esc_attr__( 'Amount', 'bookly' ),
63
  );
64
  break;
65
  case self::CUSTOMERS:
66
  $columns = array(
67
- 'full_name' => esc_attr( Common::getTranslatedOption( 'bookly_l10n_label_name' ) ),
68
- 'first_name' => esc_attr( Common::getTranslatedOption( 'bookly_l10n_label_first_name' ) ),
69
- 'last_name' => esc_attr( Common::getTranslatedOption( 'bookly_l10n_label_last_name' ) ),
70
- 'wp_user' => esc_attr__( 'User', 'bookly' ),
71
- 'phone' => esc_attr( Common::getTranslatedOption( 'bookly_l10n_label_phone' ) ),
72
- 'email' => esc_attr( Common::getTranslatedOption( 'bookly_l10n_label_email' ) ),
73
- 'notes' => esc_attr__( 'Notes', 'bookly' ),
74
- 'last_appointment' => esc_attr__( 'Last appointment', 'bookly' ),
75
- 'total_appointments' => esc_attr__( 'Total appointments', 'bookly' ),
76
- 'payments' => esc_attr__( 'Payments', 'bookly' ),
 
77
  );
78
  break;
79
  case self::EMAIL_NOTIFICATIONS:
80
  case self::SMS_NOTIFICATIONS:
81
  $columns = array(
82
- 'type' => esc_attr__( 'Type', 'bookly' ),
83
- 'name' => esc_attr__( 'Name', 'bookly' ),
84
- 'active' => esc_attr__( 'State', 'bookly' ),
 
85
  );
86
  break;
87
  case self::PAYMENTS:
88
  $columns = array(
89
- 'id' => esc_attr__( 'No.', 'bookly' ),
90
- 'created_at' => esc_attr__( 'Date', 'bookly' ),
91
- 'type' => esc_attr__( 'Type', 'bookly' ),
92
- 'customer' => esc_attr__( 'Customer', 'bookly' ),
93
- 'provider' => esc_attr__( 'Provider', 'bookly' ),
94
- 'service' => esc_attr__( 'Service', 'bookly' ),
95
- 'start_date' => esc_attr__( 'Appointment date', 'bookly' ),
96
- 'paid' => esc_attr__( 'Amount', 'bookly' ),
97
- 'status' => esc_attr__( 'Status', 'bookly' ),
98
  );
99
  break;
100
  case self::SERVICES:
101
  $columns = array(
102
- 'title' => esc_attr__( 'Title', 'bookly' ),
103
- 'category_name' => esc_attr__( 'Category', 'bookly' ),
104
- 'duration' => esc_attr__( 'Duration', 'bookly' ),
105
- 'price' => esc_attr__( 'Price', 'bookly' ),
 
106
  );
107
  break;
108
  case self::SMS_DETAILS:
109
  $columns = array(
110
- 'date' => esc_attr__( 'Date', 'bookly' ),
111
- 'time' => esc_attr__( 'Time', 'bookly' ),
112
- 'message' => esc_attr__( 'Text', 'bookly' ),
113
- 'phone' => esc_attr__( 'Phone', 'bookly' ),
114
- 'sender_id' => esc_attr__( 'Sender ID', 'bookly' ),
115
- 'charge' => esc_attr__( 'Cost', 'bookly' ),
116
- 'status' => esc_attr__( 'Status', 'bookly' ),
117
- 'info' => esc_attr__( 'Info', 'bookly' ),
 
118
  );
119
  break;
120
  case self::SMS_PRICES:
121
  $columns = array(
122
- 'country_iso_code' => esc_attr__( 'Flag', 'bookly' ),
123
- 'country_name' => esc_attr__( 'Country', 'bookly' ),
124
- 'phone_code' => esc_attr__( 'Code', 'bookly' ),
125
- 'price' => esc_attr__( 'Regular price', 'bookly' ),
126
- 'price_alt' => esc_attr__( 'Price with custom Sender ID', 'bookly' ),
127
  );
128
  break;
129
  case self::SMS_SENDER:
130
  $columns = array(
131
- 'date' => esc_attr__( 'Date', 'bookly' ),
132
- 'name' => esc_attr__( 'Requested ID', 'bookly' ),
133
- 'status' => esc_attr__( 'Status', 'bookly' ),
134
- 'status_date' => esc_attr__( 'Status date', 'bookly' ),
135
  );
136
  break;
137
  case self::STAFF_MEMBERS:
138
  $columns = array(
139
- 'full_name' => esc_attr__( 'Name', 'bookly' ),
140
- 'email' => esc_attr__( 'Email', 'bookly' ),
141
- 'phone' => esc_attr__( 'Phone', 'bookly' ),
142
- 'wp_user' => esc_attr__( 'User', 'bookly' ),
 
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
- // Show all new columns, which not saved at meta.
 
183
  foreach ( $columns as $column => $title ) {
184
  if ( ! isset ( $meta['columns'][ $column ] ) ) {
185
- $meta['columns'][ $column ] = true;
 
 
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.1
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.5.3
7
  Requires PHP: 5.3.7
8
- Stable tag: 19.1
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