@shopware-ag/acceptance-test-suite 11.31.0 → 11.32.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -1,5 +1,7 @@
1
1
  import { test as test$e, expect, request, mergeTests } from '@playwright/test';
2
2
  export { expect, mergeTests } from '@playwright/test';
3
+ import { AsyncLocalStorage } from 'async_hooks';
4
+ import { createInstance } from 'i18next';
3
5
  import { Image, encode } from 'image-js';
4
6
  import crypto from 'crypto';
5
7
  import { stringify } from 'uuid';
@@ -551,6 +553,2442 @@ async function mockApiCalls(page) {
551
553
  }));
552
554
  }
553
555
 
556
+ const general$a = {
557
+ name: "Name",
558
+ active: "Active",
559
+ save: "Save",
560
+ cancel: "Cancel",
561
+ "delete": "Delete",
562
+ customFields: "Custom fields"
563
+ };
564
+ const actions$d = {
565
+ createCategory: "Create category",
566
+ addLandingPage: "Add landing page",
567
+ configureHomePage: "Configure home page",
568
+ newCategoryAfter: "New category after"
569
+ };
570
+ const tabs$9 = {
571
+ general: "General",
572
+ products: "Products",
573
+ layout: "Layout",
574
+ seo: "SEO"
575
+ };
576
+ const fields$9 = {
577
+ categoryType: "Category type",
578
+ linkType: "Link type",
579
+ entity: "Entity",
580
+ openInNewTab: "Open in new tab"
581
+ };
582
+ const headings$5 = {
583
+ landingPages: "Landing pages"
584
+ };
585
+ const errors$5 = {
586
+ entityTypeNotFound: "Entity type not found"
587
+ };
588
+ const entities$1 = {
589
+ category: "Category",
590
+ product: "Product",
591
+ landingPage: "Landing page"
592
+ };
593
+ const administrationCategory = {
594
+ general: general$a,
595
+ actions: actions$d,
596
+ tabs: tabs$9,
597
+ fields: fields$9,
598
+ headings: headings$5,
599
+ errors: errors$5,
600
+ entities: entities$1
601
+ };
602
+
603
+ const listing$k = {
604
+ customers: "Customers",
605
+ bulkEdit: "Bulk edit",
606
+ "delete": "Delete",
607
+ cancel: "Cancel",
608
+ startBulkEdit: "Start bulk edit",
609
+ bulkEditItemsSelected: "Bulk edit - {{count}} items selected"
610
+ };
611
+ const detail$o = {
612
+ general: "General",
613
+ addresses: "Addresses",
614
+ orders: "Orders",
615
+ accept: "Accept",
616
+ decline: "Decline",
617
+ edit: "Edit",
618
+ customerGroupRequestMessage: "Access to customer group \"{{customerGroup}}\" requested.",
619
+ customerGroup: "Customer group",
620
+ accountStatus: "Account status",
621
+ language: "Language"
622
+ };
623
+ const bulkEdit$3 = {
624
+ title: "Bulk edit: {{count}} customer",
625
+ applyChanges: "Apply changes",
626
+ success: "Bulk edit - Success",
627
+ close: "Close",
628
+ changes: {
629
+ customerGroup: "Change: Customer group",
630
+ accountStatus: "Change: Account status",
631
+ language: "Change: Language",
632
+ tags: "Change: Tags",
633
+ replyToRequest: "Reply to: Customer group request"
634
+ },
635
+ placeholders: {
636
+ selectCustomerGroup: "Select customer group...",
637
+ selectLanguage: "Select language...",
638
+ selectCustomerGroupRequestReply: "Select customer group request reply..."
639
+ }
640
+ };
641
+ const administrationCustomer = {
642
+ listing: listing$k,
643
+ detail: detail$o,
644
+ bulkEdit: bulkEdit$3
645
+ };
646
+
647
+ const common$b = {
648
+ technicalName: "Technical name",
649
+ position: "Position",
650
+ labelEnglishGB: "Label (English (GB))"
651
+ };
652
+ const listing$j = {
653
+ addNewSet: "Add new set"
654
+ };
655
+ const create$d = {
656
+ assignTo: "Assign To",
657
+ save: "Save",
658
+ cancel: "Cancel"
659
+ };
660
+ const detail$n = {
661
+ type: "Type",
662
+ modifiableViaStoreApi: "Modifiable via Store API",
663
+ placeholderEnglishGB: "Placeholder (English (GB))",
664
+ helpTextEnglishGB: "Help text (English (GB))",
665
+ availableInShoppingCart: "Available in shopping cart",
666
+ select: "Select...",
667
+ newCustomField: "New custom field",
668
+ editCustomField: "Edit custom field",
669
+ add: "Add"
670
+ };
671
+ const general$9 = {
672
+ customFields: "Custom fields"
673
+ };
674
+ const actions$c = {
675
+ edit: "Edit",
676
+ "delete": "Delete",
677
+ cancel: "Cancel",
678
+ applyChanges: "Apply changes"
679
+ };
680
+ const dialogs$5 = {
681
+ warning: "Warning",
682
+ deleteCustomField: "Delete custom field"
683
+ };
684
+ const administrationCustomField = {
685
+ common: common$b,
686
+ listing: listing$j,
687
+ create: create$d,
688
+ detail: detail$n,
689
+ general: general$9,
690
+ actions: actions$c,
691
+ dialogs: dialogs$5
692
+ };
693
+
694
+ const buttons$d = {
695
+ agree: "Agree",
696
+ disableDataSharing: "Disable data sharing"
697
+ };
698
+ const messages$7 = {
699
+ sharingData: "You are sharing data with us",
700
+ termsAgreement: "By clicking \"Agree\", you confirm that you are authorised to enter into this agreement on behalf of your company."
701
+ };
702
+ const headlines$1 = {
703
+ dataConsent: "Data Consent"
704
+ };
705
+ const administrationDataSharing = {
706
+ buttons: buttons$d,
707
+ messages: messages$7,
708
+ headlines: headlines$1
709
+ };
710
+
711
+ const listing$i = {
712
+ addDocument: "Add document"
713
+ };
714
+ const types$1 = {
715
+ invoice: "invoice"
716
+ };
717
+ const detail$m = {
718
+ displayDocumentInMyAccount: "Display document in \"My\"",
719
+ save: "Save"
720
+ };
721
+ const administrationDocument = {
722
+ listing: listing$i,
723
+ types: types$1,
724
+ detail: detail$m
725
+ };
726
+
727
+ const create$c = {
728
+ searchLayoutsPlaceholder: "Search layouts...",
729
+ assignLayout: "Assign layout",
730
+ createNewLayout: "Create new layout",
731
+ selectLayout: "Select layout"
732
+ };
733
+ const general$8 = {
734
+ name: "Name",
735
+ save: "Save",
736
+ active: "Active",
737
+ salesChannels: "Sales Channels",
738
+ seoUrl: "SEO URL"
739
+ };
740
+ const layout$1 = {
741
+ layout: "Layout",
742
+ changeLayout: "Change layout",
743
+ editInDesigner: "Edit in designer"
744
+ };
745
+ const administrationLandingPage = {
746
+ create: create$c,
747
+ general: general$8,
748
+ layout: layout$1
749
+ };
750
+
751
+ const listing$h = {
752
+ createNewLayout: "Create new layout"
753
+ };
754
+ const create$b = {
755
+ shopPage: "Shop page",
756
+ landingPage: "Landing page",
757
+ listingPage: "Listing page",
758
+ productPage: "Product page",
759
+ cancel: "Cancel",
760
+ save: "Save",
761
+ fullWidth: "Full width",
762
+ sidebar: "Sidebar",
763
+ back: "Back",
764
+ layoutName: "Layout name",
765
+ createLayout: "Create layout"
766
+ };
767
+ const detail$l = {
768
+ save: "Save",
769
+ settings: "Settings",
770
+ blocks: "Blocks",
771
+ navigator: "Navigator",
772
+ layoutAssignment: "Layout assignment"
773
+ };
774
+ const administrationLayout = {
775
+ listing: listing$h,
776
+ create: create$b,
777
+ detail: detail$l
778
+ };
779
+
780
+ const username$1 = "Username";
781
+ const emailAddress$3 = "Email address";
782
+ const password$3 = "Password";
783
+ const loginButton$3 = "Log in";
784
+ const administrationLogin = {
785
+ username: username$1,
786
+ emailAddress: emailAddress$3,
787
+ password: password$3,
788
+ loginButton: loginButton$3
789
+ };
790
+
791
+ const listing$g = {
792
+ "delete": "Delete",
793
+ downloadFlow: "Download flow",
794
+ testFlow: "Test flow",
795
+ flowTemplates: "Flow templates"
796
+ };
797
+ const create$a = {
798
+ addAction: "Add action",
799
+ addConditionIf: "Add condition (IF)",
800
+ addActionThen: "Add action (THEN)",
801
+ newFlow: "New flow",
802
+ name: "Name",
803
+ description: "Description",
804
+ priority: "Priority",
805
+ active: "Active",
806
+ tags: "Tags"
807
+ };
808
+ const detail$k = {
809
+ name: "Name"
810
+ };
811
+ const templates$1 = {
812
+ createFromTemplate: "Create new flow from template",
813
+ createNewFlowFromTemplate: "Create new flow from template"
814
+ };
815
+ const messages$6 = {
816
+ deleteConfirmation: "If you delete this flow, no more actions will be performed for the trigger. Are you sure you want to delete this flow?"
817
+ };
818
+ const administrationFlowBuilder = {
819
+ listing: listing$g,
820
+ create: create$a,
821
+ detail: detail$k,
822
+ templates: templates$1,
823
+ messages: messages$6
824
+ };
825
+
826
+ const dataSharing$1 = {
827
+ agree: "Agree",
828
+ notAtTheMoment: "Not at the moment",
829
+ acceptMessage: "Thank you for your participation!",
830
+ notAtTheMomentMessage: "You can at any time enter into the agreement and thus contribute to and profit from the constant evolution of our services",
831
+ agreementText: "By clicking \"Agree\", you confirm that you are authorised to enter into this agreement on behalf of your company."
832
+ };
833
+ const shopwareServices$1 = {
834
+ close: "Close",
835
+ exploreNow: "Explore now"
836
+ };
837
+ const userMenu$1 = {
838
+ logout: "Logout"
839
+ };
840
+ const administrationDashboard = {
841
+ dataSharing: dataSharing$1,
842
+ shopwareServices: shopwareServices$1,
843
+ userMenu: userMenu$1
844
+ };
845
+
846
+ const listing$f = {
847
+ addManufacturer: "Add manufacturer"
848
+ };
849
+ const create$9 = {
850
+ name: "Name",
851
+ website: "Website",
852
+ save: "Save",
853
+ cancel: "Cancel"
854
+ };
855
+ const detail$j = {
856
+ customFields: "Custom fields"
857
+ };
858
+ const actions$b = {
859
+ edit: "Edit",
860
+ "delete": "Delete",
861
+ cancel: "Cancel"
862
+ };
863
+ const dialogs$4 = {
864
+ warning: "Warning"
865
+ };
866
+ const administrationManufacturer = {
867
+ listing: listing$f,
868
+ create: create$9,
869
+ detail: detail$j,
870
+ actions: actions$b,
871
+ dialogs: dialogs$4
872
+ };
873
+
874
+ const detail$i = {
875
+ items: "Items",
876
+ sendDocument: "Send document",
877
+ openActionsMenu: "Open actions menu"
878
+ };
879
+ const contextMenu$1 = {
880
+ sendDocument: "Send document"
881
+ };
882
+ const tabs$8 = {
883
+ general: "General",
884
+ details: "Details",
885
+ documents: "Documents"
886
+ };
887
+ const administrationOrder = {
888
+ detail: detail$i,
889
+ contextMenu: contextMenu$1,
890
+ tabs: tabs$8
891
+ };
892
+
893
+ const common$a = {
894
+ name: "Name",
895
+ availabilityRule: "Availability rule",
896
+ cashOnDelivery: "Cash on delivery",
897
+ paidInAdvance: "Paid in advance",
898
+ invoice: "Invoice"
899
+ };
900
+ const detail$h = {
901
+ };
902
+ const methods$5 = {
903
+ customPaymentMethod: "Custom payment method"
904
+ };
905
+ const administrationPayment = {
906
+ common: common$a,
907
+ detail: detail$h,
908
+ methods: methods$5
909
+ };
910
+
911
+ const tabs$7 = {
912
+ general: "General",
913
+ conditions: "Conditions",
914
+ discounts: "Discounts"
915
+ };
916
+ const cards$1 = {
917
+ preConditions: "Pre-conditions"
918
+ };
919
+ const headings$4 = {
920
+ promotionCodes: "Promotion codes"
921
+ };
922
+ const actions$a = {
923
+ addPromotion: "Add promotion",
924
+ addDiscount: "Add discount",
925
+ duplicate: "Duplicate",
926
+ "delete": "Delete",
927
+ edit: "Edit",
928
+ save: "Save",
929
+ cancel: "Cancel"
930
+ };
931
+ const fields$8 = {
932
+ priority: "Priority"
933
+ };
934
+ const administrationPromotion = {
935
+ tabs: tabs$7,
936
+ cards: cards$1,
937
+ headings: headings$4,
938
+ actions: actions$a,
939
+ fields: fields$8
940
+ };
941
+
942
+ const buttons$c = {
943
+ createRule: "Create rule",
944
+ add: "Add",
945
+ addAssignment: "Add assignment",
946
+ save: "Save",
947
+ cancel: "Cancel"
948
+ };
949
+ const fields$7 = {
950
+ name: "Name",
951
+ priority: "Priority"
952
+ };
953
+ const errors$4 = {
954
+ unknownRuleType: "Unknown rule type \"{ruleType}\". Valid rule types: \"{validTypes}\"."
955
+ };
956
+ const testData$1 = {
957
+ ruleDescription: "Rule description"
958
+ };
959
+ const administrationRule = {
960
+ buttons: buttons$c,
961
+ fields: fields$7,
962
+ errors: errors$4,
963
+ testData: testData$1
964
+ };
965
+
966
+ const header$1 = {
967
+ settings: "Settings"
968
+ };
969
+ const administrationSettings = {
970
+ header: header$1
971
+ };
972
+
973
+ const common$9 = {
974
+ name: "Name",
975
+ availabilityRule: "Availability rule"
976
+ };
977
+ const listing$e = {
978
+ addShippingMethod: "Add shipping method"
979
+ };
980
+ const detail$g = {
981
+ };
982
+ const methods$4 = {
983
+ standard: "Standard",
984
+ express: "Express",
985
+ customShippingMethod: "Custom shipping method"
986
+ };
987
+ const dialogs$3 = {
988
+ warning: "Warning",
989
+ cancel: "Cancel",
990
+ "delete": "Delete"
991
+ };
992
+ const administrationShipping = {
993
+ common: common$9,
994
+ listing: listing$e,
995
+ detail: detail$g,
996
+ methods: methods$4,
997
+ dialogs: dialogs$3
998
+ };
999
+
1000
+ const tabs$6 = {
1001
+ searchPreferences: "Search preferences"
1002
+ };
1003
+ const fields$6 = {
1004
+ firstName: "First name",
1005
+ lastName: "Last name",
1006
+ username: "Username",
1007
+ email: "Email"
1008
+ };
1009
+ const buttons$b = {
1010
+ deselectAll: "Deselect all"
1011
+ };
1012
+ const administrationYourProfile = {
1013
+ tabs: tabs$6,
1014
+ fields: fields$6,
1015
+ buttons: buttons$b
1016
+ };
1017
+
1018
+ const listing$d = {
1019
+ customerGroups: "Customer groups"
1020
+ };
1021
+ const detail$f = {
1022
+ technicalUrl: "Technical URL"
1023
+ };
1024
+ const create$8 = {
1025
+ title: "New customer group",
1026
+ cardTitle: "Customer group",
1027
+ save: "Save",
1028
+ cancel: "Cancel",
1029
+ customSignupForm: "Custom signup form",
1030
+ companySignupForm: "Company signup form",
1031
+ seoMetaDescription: "SEO meta description"
1032
+ };
1033
+ const administrationCustomerGroup = {
1034
+ listing: listing$d,
1035
+ detail: detail$f,
1036
+ create: create$8
1037
+ };
1038
+
1039
+ const welcome$1 = {
1040
+ text: "Welcome to the Shopware 6 Administration"
1041
+ };
1042
+ const buttons$a = {
1043
+ install: "Install",
1044
+ installMigrationAssistant: "Install Migration Assistant",
1045
+ installDemoData: "Install demo data"
1046
+ };
1047
+ const headers$1 = {
1048
+ dataImport: "Getting started with Shopware 6",
1049
+ defaultValues: "Setup default values",
1050
+ mailerConfiguration: "Mailer configuration",
1051
+ payPalSetup: "Setup PayPal",
1052
+ extensions: "Extensions",
1053
+ shopwareAccount: "Shopware Account",
1054
+ shopwareStore: "Shopware Store",
1055
+ done: "Done"
1056
+ };
1057
+ const fields$5 = {
1058
+ host: "Host",
1059
+ port: "Port",
1060
+ username: "Username",
1061
+ senderAddress: "Sender address",
1062
+ deliveryAddress: "Delivery address",
1063
+ disableEmailDelivery: "Disable email delivery"
1064
+ };
1065
+ const placeholders$1 = {
1066
+ selectSalesChannels: "Select Sales Channels..."
1067
+ };
1068
+ const regions$1 = {
1069
+ germanRegion: "Germany / Austria / Switzerland",
1070
+ tools: "Tools"
1071
+ };
1072
+ const administrationFirstRunWizard = {
1073
+ welcome: welcome$1,
1074
+ buttons: buttons$a,
1075
+ headers: headers$1,
1076
+ fields: fields$5,
1077
+ placeholders: placeholders$1,
1078
+ regions: regions$1
1079
+ };
1080
+
1081
+ const headings$3 = {
1082
+ futureProofStore: "Future proof your store with Shopware Services"
1083
+ };
1084
+ const buttons$9 = {
1085
+ activateServices: "Activate Services",
1086
+ grantPermissions: "Grant permissions",
1087
+ deactivate: "Deactivate",
1088
+ exploreNow: "Explore now"
1089
+ };
1090
+ const modals$3 = {
1091
+ deactivateServices: "Deactivate Shopware Services"
1092
+ };
1093
+ const messages$5 = {
1094
+ accessDenied: "Access denied"
1095
+ };
1096
+ const links$1 = {
1097
+ shopwareServices: "Shopware Services"
1098
+ };
1099
+ const dashboard$1 = {
1100
+ shopwareServicesIntroduction: "Introducing Shopware Services"
1101
+ };
1102
+ const administrationShopwareServices = {
1103
+ headings: headings$3,
1104
+ buttons: buttons$9,
1105
+ modals: modals$3,
1106
+ messages: messages$5,
1107
+ links: links$1,
1108
+ dashboard: dashboard$1
1109
+ };
1110
+
1111
+ const detail$e = {
1112
+ customFields: "Custom fields",
1113
+ colorProperty: "Color",
1114
+ sizeProperty: "Size",
1115
+ stockPlaceholder: "Enter quantity in stock...",
1116
+ restockTimePlaceholder: "Enter restock time in days..."
1117
+ };
1118
+ const variants$1 = {
1119
+ properties: "Properties"
1120
+ };
1121
+ const flows$1 = {
1122
+ tag: "Tag:"
1123
+ };
1124
+ const errors$3 = {
1125
+ followingErrorOccurred: "The following error occurred:"
1126
+ };
1127
+ const bulkEdit$2 = {
1128
+ applyChanges: "Apply changes",
1129
+ success: "Bulk edit - Success",
1130
+ close: "Close"
1131
+ };
1132
+ const listing$c = {
1133
+ bulkEdit: "Bulk edit",
1134
+ startBulkEdit: "Start bulk edit"
1135
+ };
1136
+ const tabs$5 = {
1137
+ specifications: "Specifications",
1138
+ advancedPricing: "Advanced pricing",
1139
+ variants: "Variants",
1140
+ layout: "Layout",
1141
+ crossSelling: "Cross Selling",
1142
+ seo: "SEO",
1143
+ reviews: "Reviews"
1144
+ };
1145
+ const buttons$8 = {
1146
+ save: "Save",
1147
+ uploadFile: "Upload file",
1148
+ generateVariants: "Generate variants",
1149
+ next: "Next",
1150
+ saveVariants: "Save variants"
1151
+ };
1152
+ const modals$2 = {
1153
+ generateVariants: "Generate variants"
1154
+ };
1155
+ const administrationProduct = {
1156
+ detail: detail$e,
1157
+ variants: variants$1,
1158
+ flows: flows$1,
1159
+ errors: errors$3,
1160
+ bulkEdit: bulkEdit$2,
1161
+ listing: listing$c,
1162
+ tabs: tabs$5,
1163
+ buttons: buttons$8,
1164
+ modals: modals$2
1165
+ };
1166
+
1167
+ const common$8 = {
1168
+ salutation: "Salutation",
1169
+ firstName: "First name",
1170
+ lastName: "Last name",
1171
+ company: "Company",
1172
+ department: "Department",
1173
+ back: "Back",
1174
+ changePassword: "Change password",
1175
+ passwordUpdated: "Your password has been updated.",
1176
+ cashOnDelivery: "Cash on delivery",
1177
+ paidInAdvance: "Paid in advance",
1178
+ invoice: "Invoice"
1179
+ };
1180
+ const login$1 = {
1181
+ email: "Your email address",
1182
+ password: "Your password",
1183
+ logIn: "Log in",
1184
+ logOut: "Log out",
1185
+ forgotPassword: "I have forgotten my password.",
1186
+ invalidCredentials: "Could not find an account that matches the given credentials.",
1187
+ successfulLogout: "Successfully logged out."
1188
+ };
1189
+ const profile$1 = {
1190
+ saveChanges: "Save changes",
1191
+ changeEmail: "Change email address",
1192
+ emailConfirmation: "Email address confirmation",
1193
+ emailUpdated: "Your email address has been updated.",
1194
+ invalidEmail: "Invalid email address.",
1195
+ emailUpdateFailure: "Email address could not be changed.",
1196
+ passwordTooShort: "Input is too short.",
1197
+ passwordUpdateFailure: "Password could not be changed."
1198
+ };
1199
+ const orders$1 = {
1200
+ download: "Download",
1201
+ cancelOrder: "Cancel order",
1202
+ repeatOrder: "Repeat order",
1203
+ changePaymentMethod: "Change payment method",
1204
+ actions: "Actions",
1205
+ expand: "Expand",
1206
+ showDetails: "Show details",
1207
+ creditItem: "CreditItem",
1208
+ orderNumber: "Order number",
1209
+ plusVat: "plus",
1210
+ vatSuffix: "% VAT",
1211
+ shippingCosts: "Shipping costs:",
1212
+ totalGross: "Total (gross):"
1213
+ };
1214
+ const addresses$1 = {
1215
+ street: "Street",
1216
+ streetAddress: "Street address",
1217
+ city: "City",
1218
+ country: "Country",
1219
+ postalCode: "Postal code",
1220
+ state: "State",
1221
+ editAddress: "Edit address",
1222
+ useAsDefaultBilling: "Use as default billing address",
1223
+ useAsDefaultShipping: "Use as default shipping address",
1224
+ deliveryNotPossible: "A delivery to this country is not possible."
1225
+ };
1226
+ const registration$1 = {
1227
+ "continue": "Continue",
1228
+ differentShippingAddress: "Shipping and billing address do not match."
1229
+ };
1230
+ const general$7 = {
1231
+ overview: "Overview",
1232
+ personalData: "Personal data",
1233
+ defaultPaymentMethod: "Default payment method",
1234
+ defaultBillingAddress: "Default billing address",
1235
+ defaultShippingAddress: "Default shipping address",
1236
+ yourAccount: "Your account",
1237
+ newsletter: "Yes, I would like to",
1238
+ newsletterRegistrationSuccess: "You have successfully subscribed to the newsletter.",
1239
+ cannotDeliverToCountry: "We can not deliver to the country that is stored in your delivery address.",
1240
+ shippingNotPossible: "Shipping to the selected shipping address is currently not possible."
1241
+ };
1242
+ const recovery$1 = {
1243
+ title: "Password recovery",
1244
+ subtitle: "We will send you a confirmation email. Click the link in that email in order to change your password.",
1245
+ requestEmail: "Request email",
1246
+ emailSent: "If the provided email address is registered, a confirmation email including a password reset link has been sent.",
1247
+ invalidLink: "The password reset link seems to be invalid.",
1248
+ newPassword: "New password",
1249
+ passwordConfirmation: "Password confirmation"
1250
+ };
1251
+ const payment$1 = {
1252
+ change: "Change"
1253
+ };
1254
+ const storefrontAccount = {
1255
+ common: common$8,
1256
+ login: login$1,
1257
+ profile: profile$1,
1258
+ orders: orders$1,
1259
+ addresses: addresses$1,
1260
+ registration: registration$1,
1261
+ general: general$7,
1262
+ recovery: recovery$1,
1263
+ payment: payment$1
1264
+ };
1265
+
1266
+ const common$7 = {
1267
+ salutation: "Salutation",
1268
+ firstName: "First name",
1269
+ lastName: "Last name",
1270
+ company: "Company",
1271
+ department: "Department",
1272
+ street: "Street",
1273
+ postalCode: "Postal code"
1274
+ };
1275
+ const actions$9 = {
1276
+ editAddress: "Edit address",
1277
+ useAsDefaultBilling: "Use as default billing address",
1278
+ useAsDefaultShipping: "Use as default shipping address",
1279
+ addressOptions: "Address options"
1280
+ };
1281
+ const messages$4 = {
1282
+ deliveryNotPossible: "A delivery to this country is not possible."
1283
+ };
1284
+ const storefrontAddress = {
1285
+ common: common$7,
1286
+ actions: actions$9,
1287
+ messages: messages$4
1288
+ };
1289
+
1290
+ const common$6 = {
1291
+ back: "Back",
1292
+ cashOnDelivery: "Cash on delivery",
1293
+ paidInAdvance: "Paid in advance",
1294
+ invoice: "Invoice",
1295
+ standard: "Standard",
1296
+ express: "Express"
1297
+ };
1298
+ const cart$1 = {
1299
+ shoppingCart: "Shopping cart",
1300
+ goToCheckout: "Go to checkout",
1301
+ displayShoppingCart: "Display shopping cart",
1302
+ continueShopping: "Continue shopping",
1303
+ promoCode: "Promo code",
1304
+ emptyCart: "Your shopping cart is empty.",
1305
+ quantity: "Quantity",
1306
+ stockReached: "only available 1 times"
1307
+ };
1308
+ const confirm$1 = {
1309
+ completeOrder: "Complete order",
1310
+ submitOrder: "Submit order",
1311
+ termsAndConditions: "I have read and accepted the general terms and conditions.",
1312
+ immediateAccessToDigitalProduct: "I want immediate access to the digital content and I acknowledge that thereby I waive my right to cancel."
1313
+ };
1314
+ const finish$1 = {
1315
+ thankYouForOrder: "Thank you for your order",
1316
+ grandTotal: "Grand total",
1317
+ plusVat: "plus",
1318
+ vatSuffix: "% VAT"
1319
+ };
1320
+ const orderEdit$1 = {
1321
+ cancelOrder: "Cancel order"
1322
+ };
1323
+ const storefrontCheckout = {
1324
+ common: common$6,
1325
+ cart: cart$1,
1326
+ confirm: confirm$1,
1327
+ finish: finish$1,
1328
+ orderEdit: orderEdit$1
1329
+ };
1330
+
1331
+ const addToCart$1 = "Add to shopping cart";
1332
+ const quantity$2 = "Quantity";
1333
+ const addToWishlist$1 = "Add to wishlist";
1334
+ const removeFromWishlist$1 = "Remove from wishlist";
1335
+ const deliveryTime$1 = "Ready to ship today,\\nDelivery time appr. 1-3 workdays";
1336
+ const review$1 = {
1337
+ tabTitle: "Reviews",
1338
+ title: "Title",
1339
+ text: "Your review",
1340
+ emptyText: "No reviews found. Share your insights with others.",
1341
+ submitMessage: "Thank you for submitting your review. We will examine the review and eventually unlock it, please be patient."
1342
+ };
1343
+ const listing$b = {
1344
+ sorting: "Sorting",
1345
+ noProductsFound: "No products found."
1346
+ };
1347
+ const storefrontProduct = {
1348
+ addToCart: addToCart$1,
1349
+ quantity: quantity$2,
1350
+ addToWishlist: addToWishlist$1,
1351
+ removeFromWishlist: removeFromWishlist$1,
1352
+ deliveryTime: deliveryTime$1,
1353
+ review: review$1,
1354
+ listing: listing$b
1355
+ };
1356
+
1357
+ const pageNotFound$1 = {
1358
+ title: "Page not found",
1359
+ backToShop: "Back to shop"
1360
+ };
1361
+ const home$1 = {
1362
+ yourAccount: "Your account",
1363
+ manufacturerFilter: "Manufacturer",
1364
+ priceFilter: "Price",
1365
+ resetAll: "Reset all",
1366
+ freeShipping: "Free shipping"
1367
+ };
1368
+ const footer$1 = {
1369
+ contactForm: "contact form"
1370
+ };
1371
+ const category$1 = {
1372
+ sorting: "Sorting",
1373
+ addToCart: "Add to shopping cart",
1374
+ noProductsFound: "No products found."
1375
+ };
1376
+ const storefrontNavigation = {
1377
+ pageNotFound: pageNotFound$1,
1378
+ home: home$1,
1379
+ footer: footer$1,
1380
+ category: category$1
1381
+ };
1382
+
1383
+ const title$4 = "Contact";
1384
+ const form$1 = {
1385
+ contact: "Contact",
1386
+ salutation: "Salutation",
1387
+ firstName: "First name",
1388
+ lastName: "Last name",
1389
+ emailAddress: "Your email address",
1390
+ phone: "Phone",
1391
+ subject: "Subject",
1392
+ comment: "Comment",
1393
+ submit: "Submit",
1394
+ privacyPolicy: "By selecting continue you confirm that you have read and agree to our"
1395
+ };
1396
+ const email$1 = {
1397
+ from: "doNotReply@localhost.com",
1398
+ subject: "Your sign-up"
1399
+ };
1400
+ const storefrontContact = {
1401
+ title: title$4,
1402
+ form: form$1,
1403
+ email: email$1
1404
+ };
1405
+
1406
+ const cookie$1 = {
1407
+ onlyTechnicallyRequired: "Only technically required",
1408
+ configure: "Configure",
1409
+ acceptAllCookies: "Accept all cookies",
1410
+ preferences: "Cookie preferences",
1411
+ marketing: "Marketing"
1412
+ };
1413
+ const storefrontConsent = {
1414
+ cookie: cookie$1
1415
+ };
1416
+
1417
+ const account$1 = {
1418
+ yourAccount: "Your account"
1419
+ };
1420
+ const consent$1 = {
1421
+ onlyTechnicallyRequired: "Only technically required",
1422
+ configure: "Configure",
1423
+ acceptAllCookies: "Accept all cookies",
1424
+ cookiePreferences: "Cookie preferences",
1425
+ marketing: "Marketing"
1426
+ };
1427
+ const filters$1 = {
1428
+ manufacturer: "Manufacturer",
1429
+ price: "Price",
1430
+ resetAll: "Reset all",
1431
+ freeShipping: "Free shipping"
1432
+ };
1433
+ const storefrontHome = {
1434
+ account: account$1,
1435
+ consent: consent$1,
1436
+ filters: filters$1
1437
+ };
1438
+
1439
+ const emailAddress$2 = "Your email address";
1440
+ const password$2 = "Your password";
1441
+ const loginButton$2 = "Log in";
1442
+ const forgotPassword$1 = "I have forgotten my password.";
1443
+ const logout$1 = "Log out";
1444
+ const invalidCredentials$1 = "Could not find an account that matches the given credentials.";
1445
+ const successfulLogout$1 = "Successfully logged out.";
1446
+ const passwordUpdated$1 = "Your password has been updated.";
1447
+ const register$2 = {
1448
+ salutation: "Salutation",
1449
+ firstName: "First name",
1450
+ lastName: "Last name",
1451
+ company: "Company",
1452
+ department: "Department",
1453
+ emailAddress: "Email address",
1454
+ password: "Password",
1455
+ streetAddress: "Street address",
1456
+ city: "City",
1457
+ country: "Country",
1458
+ postalCode: "Postal code",
1459
+ state: "State",
1460
+ differentShippingAddress: "Shipping and billing address do not match.",
1461
+ "continue": "Continue"
1462
+ };
1463
+ const storefrontLogin = {
1464
+ emailAddress: emailAddress$2,
1465
+ password: password$2,
1466
+ loginButton: loginButton$2,
1467
+ forgotPassword: forgotPassword$1,
1468
+ logout: logout$1,
1469
+ invalidCredentials: invalidCredentials$1,
1470
+ successfulLogout: successfulLogout$1,
1471
+ passwordUpdated: passwordUpdated$1,
1472
+ register: register$2
1473
+ };
1474
+
1475
+ const actions$8 = {
1476
+ cancelOrder: "Cancel order",
1477
+ back: "Back"
1478
+ };
1479
+ const shipping$1 = {
1480
+ standard: "Standard",
1481
+ express: "Express"
1482
+ };
1483
+ const storefrontOrder = {
1484
+ actions: actions$8,
1485
+ shipping: shipping$1
1486
+ };
1487
+
1488
+ const title$3 = "Page not found";
1489
+ const message$1 = "We are sorry, the page you're looking for could not be found. It may no longer exist or may have been moved.";
1490
+ const backToShop$1 = "Back to shop";
1491
+ const storefrontPageNotFound = {
1492
+ title: title$3,
1493
+ message: message$1,
1494
+ backToShop: backToShop$1
1495
+ };
1496
+
1497
+ const methods$3 = {
1498
+ cashOnDelivery: "Cash on delivery",
1499
+ paidInAdvance: "Paid in advance",
1500
+ invoice: "Invoice"
1501
+ };
1502
+ const actions$7 = {
1503
+ change: "Change",
1504
+ completePayment: "Complete payment"
1505
+ };
1506
+ const storefrontPayment = {
1507
+ methods: methods$3,
1508
+ actions: actions$7
1509
+ };
1510
+
1511
+ const passwordRecovery$1 = "Password recovery";
1512
+ const subtitle$1 = "We will send you a confirmation email. Click the link in that email in order to change your password.";
1513
+ const requestEmail$1 = "Request email";
1514
+ const back$1 = "Back";
1515
+ const emailSent$1 = "If the provided email address is registered, a confirmation email including a password reset link has been sent.";
1516
+ const newPassword$1 = "New password";
1517
+ const passwordConfirmation$1 = "Password confirmation";
1518
+ const changePassword$1 = "Change password";
1519
+ const invalidLink$1 = "The password reset link seems to be invalid.";
1520
+ const storefrontRecover = {
1521
+ passwordRecovery: passwordRecovery$1,
1522
+ subtitle: subtitle$1,
1523
+ requestEmail: requestEmail$1,
1524
+ back: back$1,
1525
+ emailSent: emailSent$1,
1526
+ newPassword: newPassword$1,
1527
+ passwordConfirmation: passwordConfirmation$1,
1528
+ changePassword: changePassword$1,
1529
+ invalidLink: invalidLink$1
1530
+ };
1531
+
1532
+ const general$6 = {
1533
+ title: "Shopping cart"
1534
+ };
1535
+ const buttons$7 = {
1536
+ goToCheckout: "Go to checkout",
1537
+ goToCart: "Display shopping cart",
1538
+ continueShopping: "Continue shopping"
1539
+ };
1540
+ const storefrontOffCanvasCart = {
1541
+ general: general$6,
1542
+ buttons: buttons$7
1543
+ };
1544
+
1545
+ const general$5 = {
1546
+ name: "Name",
1547
+ active: "Aktiv",
1548
+ save: "Speichern",
1549
+ cancel: "Abbrechen",
1550
+ "delete": "Löschen",
1551
+ customFields: "Feld"
1552
+ };
1553
+ const actions$6 = {
1554
+ createCategory: "Kategorie erstellen",
1555
+ addLandingPage: "Landingpage hinzufügen",
1556
+ configureHomePage: "Startseite konfigurieren",
1557
+ newCategoryAfter: "Kategorie"
1558
+ };
1559
+ const tabs$4 = {
1560
+ general: "Allgemein",
1561
+ products: "Produkte",
1562
+ layout: "Layout",
1563
+ seo: "SEO"
1564
+ };
1565
+ const fields$4 = {
1566
+ categoryType: "Kategorietyp",
1567
+ linkType: "Link-Typ",
1568
+ entity: "Entität",
1569
+ openInNewTab: "In neuem Tab öffnen"
1570
+ };
1571
+ const headings$2 = {
1572
+ landingPages: "Landingpages"
1573
+ };
1574
+ const errors$2 = {
1575
+ entityTypeNotFound: "Typ"
1576
+ };
1577
+ const entities = {
1578
+ category: "Kategorie",
1579
+ product: "Produkt",
1580
+ landingPage: "Landing page"
1581
+ };
1582
+ const deAdministrationCategory = {
1583
+ general: general$5,
1584
+ actions: actions$6,
1585
+ tabs: tabs$4,
1586
+ fields: fields$4,
1587
+ headings: headings$2,
1588
+ errors: errors$2,
1589
+ entities: entities
1590
+ };
1591
+
1592
+ const listing$a = {
1593
+ customers: "Kunden",
1594
+ bulkEdit: "Massenbearbeitung",
1595
+ startBulkEdit: "Massenbearbeitung starten",
1596
+ cancel: "Abbrechen",
1597
+ "delete": "Löschen",
1598
+ bulkEditItemsSelected: "Bearbeiten"
1599
+ };
1600
+ const detail$d = {
1601
+ edit: "Bearbeiten",
1602
+ general: "Allgemein",
1603
+ addresses: "Adressen",
1604
+ orders: "Bestellungen",
1605
+ accept: "Akzeptieren",
1606
+ decline: "Ablehnen",
1607
+ accountStatus: "Kontostatus",
1608
+ customerGroup: "Kundengruppe",
1609
+ language: "Sprache",
1610
+ customerGroupRequestMessage: "Kundengruppe-Anfrage-Nachricht"
1611
+ };
1612
+ const bulkEdit$1 = {
1613
+ title: "Massenbearbeitung - {{count}} Kunden",
1614
+ applyChanges: "Änderungen anwenden",
1615
+ success: "Massenbearbeitung - Erfolgreich",
1616
+ close: "Schließen",
1617
+ changes: {
1618
+ customerGroup: "Ändern: Kundengruppe",
1619
+ accountStatus: "Ändern: Kontostatus",
1620
+ language: "Ändern: Sprache",
1621
+ replyToRequest: "Antworten auf: Kundengruppen-Anfrage",
1622
+ tags: "Ändern: Tags"
1623
+ },
1624
+ placeholders: {
1625
+ selectCustomerGroup: "Kundengruppe auswählen...",
1626
+ selectLanguage: "Sprache auswählen...",
1627
+ selectCustomerGroupRequestReply: "Antwort auf Kundengruppen-Anfrage auswählen..."
1628
+ }
1629
+ };
1630
+ const deAdministrationCustomer = {
1631
+ listing: listing$a,
1632
+ detail: detail$d,
1633
+ bulkEdit: bulkEdit$1
1634
+ };
1635
+
1636
+ const listing$9 = {
1637
+ addCustomerGroup: "Kundengruppe hinzufügen",
1638
+ customerGroups: "Kundengruppen"
1639
+ };
1640
+ const create$7 = {
1641
+ title: "Neue Kundengruppe",
1642
+ saveSuccess: "Die Kundengruppe wurde erfolgreich erstellt.",
1643
+ save: "Speichern",
1644
+ cancel: "Abbrechen",
1645
+ cardTitle: "Kundengruppe",
1646
+ customSignupForm: "Individuelles Anmeldeformular",
1647
+ seoMetaDescription: "SEO-Meta-Beschreibung",
1648
+ companySignupForm: "Firmenanmeldeformular"
1649
+ };
1650
+ const detail$c = {
1651
+ registration: {
1652
+ accepted: "Akzeptiert",
1653
+ denied: "Abgelehnt"
1654
+ },
1655
+ technicalUrl: "Technische URL"
1656
+ };
1657
+ const deAdministrationCustomerGroup = {
1658
+ listing: listing$9,
1659
+ create: create$7,
1660
+ detail: detail$c
1661
+ };
1662
+
1663
+ const common$5 = {
1664
+ technicalName: "Technischer Name",
1665
+ type: "Typ",
1666
+ required: "Erforderlich",
1667
+ position: "Position",
1668
+ customFieldSet: "Eigene Felder Set",
1669
+ labelEnglishGB: "Label (English (GB))"
1670
+ };
1671
+ const listing$8 = {
1672
+ addCustomField: "Eigenes Feld hinzufügen",
1673
+ addNewSet: "Hinzufügen"
1674
+ };
1675
+ const create$6 = {
1676
+ title: "Neues eigenes Feld",
1677
+ saveSuccess: "Das eigene Feld wurde erfolgreich erstellt.",
1678
+ assignTo: "Assign To",
1679
+ save: "Speichern",
1680
+ cancel: "Abbrechen"
1681
+ };
1682
+ const detail$b = {
1683
+ label: "Beschriftung",
1684
+ helpText: "Hilfetext",
1685
+ placeholder: "Platzhalter",
1686
+ type: "Typ",
1687
+ modifiableViaStoreApi: "Modifiable via Store API",
1688
+ placeholderEnglishGB: "Placeholder (English (GB))",
1689
+ helpTextEnglishGB: "Hilfe",
1690
+ availableInShoppingCart: "Verfügbar",
1691
+ select: "Auswählen",
1692
+ newCustomField: "Feld",
1693
+ editCustomField: "Bearbeiten",
1694
+ add: "Hinzufügen"
1695
+ };
1696
+ const general$4 = {
1697
+ customFields: "Feld"
1698
+ };
1699
+ const actions$5 = {
1700
+ edit: "Bearbeiten",
1701
+ "delete": "Löschen",
1702
+ cancel: "Abbrechen",
1703
+ applyChanges: "Anwenden"
1704
+ };
1705
+ const dialogs$2 = {
1706
+ warning: "Warnung",
1707
+ deleteCustomField: "Löschen"
1708
+ };
1709
+ const deAdministrationCustomField = {
1710
+ common: common$5,
1711
+ listing: listing$8,
1712
+ create: create$6,
1713
+ detail: detail$b,
1714
+ general: general$4,
1715
+ actions: actions$5,
1716
+ dialogs: dialogs$2
1717
+ };
1718
+
1719
+ const dataSharing = {
1720
+ agree: "Zustimmen",
1721
+ notAtTheMoment: "Momentan nicht",
1722
+ acceptMessage: "Vielen Dank für Ihre Teilnahme!",
1723
+ notAtTheMomentMessage: "Sie können jederzeit der Vereinbarung beitreten und so zur ständigen Weiterentwicklung unserer Dienste beitragen und davon profitieren",
1724
+ agreementText: "Durch Klicken auf \"Zustimmen\" bestätigen Sie, dass Sie berechtigt sind, diese Vereinbarung im Namen Ihres Unternehmens einzugehen."
1725
+ };
1726
+ const shopwareServices = {
1727
+ close: "Schließen",
1728
+ exploreNow: "Jetzt erkunden"
1729
+ };
1730
+ const userMenu = {
1731
+ logout: "Abmelden"
1732
+ };
1733
+ const deAdministrationDashboard = {
1734
+ dataSharing: dataSharing,
1735
+ shopwareServices: shopwareServices,
1736
+ userMenu: userMenu
1737
+ };
1738
+
1739
+ const buttons$6 = {
1740
+ agree: "Zustimmen",
1741
+ disableDataSharing: "Datenfreigabe deaktivieren"
1742
+ };
1743
+ const messages$3 = {
1744
+ sharingData: "Sie teilen Daten mit uns",
1745
+ termsAgreement: "Durch Klicken auf \"Zustimmen\" bestätigen Sie, dass Sie berechtigt sind, diese Vereinbarung im Namen Ihres Unternehmens abzuschließen."
1746
+ };
1747
+ const headlines = {
1748
+ dataConsent: "Dateneinverständnis"
1749
+ };
1750
+ const deAdministrationDataSharing = {
1751
+ buttons: buttons$6,
1752
+ messages: messages$3,
1753
+ headlines: headlines
1754
+ };
1755
+
1756
+ const listing$7 = {
1757
+ addDocument: "Dokument hinzufügen"
1758
+ };
1759
+ const types = {
1760
+ invoice: "Rechnung"
1761
+ };
1762
+ const detail$a = {
1763
+ displayDocumentInMyAccount: "Display document in \"My\"",
1764
+ save: "Speichern"
1765
+ };
1766
+ const deAdministrationDocument = {
1767
+ listing: listing$7,
1768
+ types: types,
1769
+ detail: detail$a
1770
+ };
1771
+
1772
+ const welcome = {
1773
+ text: "Willkommen bei der Shopware 6 Administration"
1774
+ };
1775
+ const buttons$5 = {
1776
+ install: "Installieren",
1777
+ installMigrationAssistant: "Migration Assistant installieren",
1778
+ installDemoData: "Demodaten installieren"
1779
+ };
1780
+ const headers = {
1781
+ dataImport: "Erste Schritte mit Shopware 6",
1782
+ defaultValues: "Standardwerte einrichten",
1783
+ mailerConfiguration: "E-Mail-Konfiguration",
1784
+ payPalSetup: "PayPal einrichten",
1785
+ extensions: "Erweiterungen",
1786
+ shopwareAccount: "Shopware Account",
1787
+ shopwareStore: "Shopware Store",
1788
+ done: "Fertig"
1789
+ };
1790
+ const fields$3 = {
1791
+ host: "Host",
1792
+ port: "Port",
1793
+ username: "Benutzername",
1794
+ senderAddress: "Absenderadresse",
1795
+ deliveryAddress: "Zustelladresse",
1796
+ disableEmailDelivery: "E-Mail-Versand deaktivieren"
1797
+ };
1798
+ const placeholders = {
1799
+ selectSalesChannels: "Vertriebskanäle auswählen..."
1800
+ };
1801
+ const regions = {
1802
+ germanRegion: "Deutschland / Österreich / Schweiz",
1803
+ tools: "Tools"
1804
+ };
1805
+ const deAdministrationFirstRunWizard = {
1806
+ welcome: welcome,
1807
+ buttons: buttons$5,
1808
+ headers: headers,
1809
+ fields: fields$3,
1810
+ placeholders: placeholders,
1811
+ regions: regions
1812
+ };
1813
+
1814
+ const listing$6 = {
1815
+ addFlow: "Flow hinzufügen",
1816
+ "delete": "Löschen",
1817
+ downloadFlow: "Herunterladen",
1818
+ testFlow: "Test",
1819
+ flowTemplates: "Vorlage"
1820
+ };
1821
+ const create$5 = {
1822
+ title: "Neuer Flow",
1823
+ saveSuccess: "Der Flow wurde erfolgreich erstellt.",
1824
+ addAction: "Hinzufügen",
1825
+ addConditionIf: "Hinzufügen",
1826
+ addActionThen: "Hinzufügen",
1827
+ newFlow: "New flow",
1828
+ name: "Name",
1829
+ description: "Beschreibung",
1830
+ priority: "Priority",
1831
+ active: "Aktiv",
1832
+ tags: "Tags"
1833
+ };
1834
+ const detail$9 = {
1835
+ priority: "Priorität",
1836
+ trigger: "Trigger",
1837
+ actions: "Aktionen",
1838
+ name: "Name"
1839
+ };
1840
+ const templates = {
1841
+ title: "Flow-Vorlagen",
1842
+ useTemplate: "Vorlage verwenden",
1843
+ createFromTemplate: "Erstellen",
1844
+ createNewFlowFromTemplate: "Erstellen"
1845
+ };
1846
+ const messages$2 = {
1847
+ deleteConfirmation: "Löschen"
1848
+ };
1849
+ const deAdministrationFlowBuilder = {
1850
+ listing: listing$6,
1851
+ create: create$5,
1852
+ detail: detail$9,
1853
+ templates: templates,
1854
+ messages: messages$2
1855
+ };
1856
+
1857
+ const create$4 = {
1858
+ title: "Neue Landingpage",
1859
+ saveSuccess: "Die Landingpage wurde erfolgreich erstellt.",
1860
+ searchLayoutsPlaceholder: "Suchen",
1861
+ assignLayout: "Layout",
1862
+ createNewLayout: "Erstellen",
1863
+ selectLayout: "Auswählen"
1864
+ };
1865
+ const detail$8 = {
1866
+ name: "Name",
1867
+ active: "Aktiv",
1868
+ salesChannel: "Verkaufskanal",
1869
+ url: "URL"
1870
+ };
1871
+ const general$3 = {
1872
+ name: "Name",
1873
+ save: "Speichern",
1874
+ active: "Aktiv",
1875
+ salesChannels: "Sales Channels",
1876
+ seoUrl: "URL"
1877
+ };
1878
+ const layout = {
1879
+ layout: "Layout",
1880
+ changeLayout: "Layout",
1881
+ editInDesigner: "Bearbeiten"
1882
+ };
1883
+ const deAdministrationLandingPage = {
1884
+ create: create$4,
1885
+ detail: detail$8,
1886
+ general: general$3,
1887
+ layout: layout
1888
+ };
1889
+
1890
+ const listing$5 = {
1891
+ createNewLayout: "Neues Layout erstellen"
1892
+ };
1893
+ const create$3 = {
1894
+ shopPage: "Shop-Seite",
1895
+ landingPage: "Landing Page",
1896
+ listingPage: "Listing-Seite",
1897
+ productPage: "Produktseite",
1898
+ cancel: "Abbrechen",
1899
+ save: "Speichern",
1900
+ fullWidth: "Vollbreite",
1901
+ sidebar: "Seitenleiste",
1902
+ back: "Zurück",
1903
+ layoutName: "Layout-Name",
1904
+ createLayout: "Layout erstellen"
1905
+ };
1906
+ const detail$7 = {
1907
+ save: "Speichern",
1908
+ settings: "Einstellungen",
1909
+ blocks: "Blöcke",
1910
+ navigator: "Navigator",
1911
+ layoutAssignment: "Layout-Zuordnung"
1912
+ };
1913
+ const deAdministrationLayout = {
1914
+ listing: listing$5,
1915
+ create: create$3,
1916
+ detail: detail$7
1917
+ };
1918
+
1919
+ const username = "Benutzername";
1920
+ const emailAddress$1 = "E-Mail-Adresse";
1921
+ const password$1 = "Passwort";
1922
+ const loginButton$1 = "Anmelden";
1923
+ const deAdministrationLogin = {
1924
+ username: username,
1925
+ emailAddress: emailAddress$1,
1926
+ password: password$1,
1927
+ loginButton: loginButton$1
1928
+ };
1929
+
1930
+ const listing$4 = {
1931
+ addManufacturer: "Hersteller hinzufügen"
1932
+ };
1933
+ const create$2 = {
1934
+ name: "Name",
1935
+ website: "Website",
1936
+ save: "Speichern",
1937
+ cancel: "Abbrechen"
1938
+ };
1939
+ const detail$6 = {
1940
+ customFields: "Zusatzfelder"
1941
+ };
1942
+ const actions$4 = {
1943
+ edit: "Bearbeiten",
1944
+ "delete": "Löschen",
1945
+ cancel: "Abbrechen"
1946
+ };
1947
+ const dialogs$1 = {
1948
+ warning: "Warnung"
1949
+ };
1950
+ const deAdministrationManufacturer = {
1951
+ listing: listing$4,
1952
+ create: create$2,
1953
+ detail: detail$6,
1954
+ actions: actions$4,
1955
+ dialogs: dialogs$1
1956
+ };
1957
+
1958
+ const detail$5 = {
1959
+ items: "Artikel",
1960
+ sendDocument: "Dokument senden",
1961
+ openActionsMenu: "Aktionsmenü öffnen"
1962
+ };
1963
+ const contextMenu = {
1964
+ sendDocument: "Dokument senden"
1965
+ };
1966
+ const tabs$3 = {
1967
+ general: "Allgemein",
1968
+ details: "Details",
1969
+ documents: "Dokumente"
1970
+ };
1971
+ const deAdministrationOrder = {
1972
+ detail: detail$5,
1973
+ contextMenu: contextMenu,
1974
+ tabs: tabs$3
1975
+ };
1976
+
1977
+ const common$4 = {
1978
+ name: "Name",
1979
+ availabilityRule: "Verfügbarkeitsregel",
1980
+ cashOnDelivery: "Nachnahme",
1981
+ paidInAdvance: "Vorauskasse",
1982
+ invoice: "Rechnung"
1983
+ };
1984
+ const detail$4 = {
1985
+ };
1986
+ const methods$2 = {
1987
+ customPaymentMethod: "Benutzerdefinierte Zahlungsmethode"
1988
+ };
1989
+ const deAdministrationPayment = {
1990
+ common: common$4,
1991
+ detail: detail$4,
1992
+ methods: methods$2
1993
+ };
1994
+
1995
+ const listing$3 = {
1996
+ addProduct: "Produkt hinzufügen",
1997
+ bulkEdit: "Massenbearbeitung",
1998
+ startBulkEdit: "Bearbeiten"
1999
+ };
2000
+ const create$1 = {
2001
+ title: "Neues Produkt",
2002
+ saveSuccess: "Das Produkt wurde erfolgreich erstellt."
2003
+ };
2004
+ const detail$3 = {
2005
+ name: "Name",
2006
+ description: "Beschreibung",
2007
+ price: "Preis",
2008
+ stock: "Lagerbestand",
2009
+ productNumber: "Produktnummer",
2010
+ manufacturer: "Hersteller",
2011
+ tax: "Steuer",
2012
+ properties: "Eigenschaften",
2013
+ customFields: "Feld",
2014
+ colorProperty: "Color",
2015
+ sizeProperty: "Size",
2016
+ stockPlaceholder: "Anzahl",
2017
+ restockTimePlaceholder: "Lagerbestand"
2018
+ };
2019
+ const errors$1 = {
2020
+ flows: {
2021
+ productWritten: "Produkt {{productName}} konnte nicht gespeichert werden"
2022
+ },
2023
+ followingErrorOccurred: "Fehler"
2024
+ };
2025
+ const variants = {
2026
+ properties: "Eigenschaften"
2027
+ };
2028
+ const flows = {
2029
+ tag: "Tag:"
2030
+ };
2031
+ const bulkEdit = {
2032
+ applyChanges: "Anwenden",
2033
+ success: "Erfolg",
2034
+ close: "Schließen"
2035
+ };
2036
+ const tabs$2 = {
2037
+ specifications: "Specifications",
2038
+ advancedPricing: "Erweitert",
2039
+ variants: "Variants",
2040
+ layout: "Layout",
2041
+ crossSelling: "Cross Selling",
2042
+ seo: "SEO",
2043
+ reviews: "Bewertung"
2044
+ };
2045
+ const buttons$4 = {
2046
+ save: "Speichern",
2047
+ uploadFile: "Hochladen",
2048
+ generateVariants: "Generate variants",
2049
+ next: "Weiter",
2050
+ saveVariants: "Speichern"
2051
+ };
2052
+ const modals$1 = {
2053
+ generateVariants: "Generate variants"
2054
+ };
2055
+ const deAdministrationProduct = {
2056
+ listing: listing$3,
2057
+ create: create$1,
2058
+ detail: detail$3,
2059
+ errors: errors$1,
2060
+ variants: variants,
2061
+ flows: flows,
2062
+ bulkEdit: bulkEdit,
2063
+ tabs: tabs$2,
2064
+ buttons: buttons$4,
2065
+ modals: modals$1
2066
+ };
2067
+
2068
+ const listing$2 = {
2069
+ addPromotion: "Promotion hinzufügen"
2070
+ };
2071
+ const create = {
2072
+ title: "Neue Promotion",
2073
+ saveSuccess: "Die Promotion wurde erfolgreich erstellt."
2074
+ };
2075
+ const detail$2 = {
2076
+ name: "Name",
2077
+ active: "Aktiv",
2078
+ code: "Code",
2079
+ discountType: "Rabatttyp",
2080
+ value: "Wert",
2081
+ validFrom: "Gültig ab",
2082
+ validUntil: "Gültig bis"
2083
+ };
2084
+ const actions$3 = {
2085
+ save: "Speichern",
2086
+ cancel: "Abbrechen",
2087
+ addPromotion: "Promotion hinzufügen",
2088
+ edit: "Bearbeiten",
2089
+ "delete": "Löschen",
2090
+ duplicate: "Duplizieren",
2091
+ addDiscount: "Rabatt hinzufügen"
2092
+ };
2093
+ const fields$2 = {
2094
+ priority: "Priorität"
2095
+ };
2096
+ const tabs$1 = {
2097
+ general: "Allgemein",
2098
+ conditions: "Bedingungen",
2099
+ discounts: "Rabatte"
2100
+ };
2101
+ const headings$1 = {
2102
+ promotionCodes: "Promotion-Codes"
2103
+ };
2104
+ const cards = {
2105
+ preConditions: "Vorbedingungen"
2106
+ };
2107
+ const deAdministrationPromotion = {
2108
+ listing: listing$2,
2109
+ create: create,
2110
+ detail: detail$2,
2111
+ actions: actions$3,
2112
+ fields: fields$2,
2113
+ tabs: tabs$1,
2114
+ headings: headings$1,
2115
+ cards: cards
2116
+ };
2117
+
2118
+ const fields$1 = {
2119
+ priority: "Priorität",
2120
+ name: "Name"
2121
+ };
2122
+ const buttons$3 = {
2123
+ save: "Speichern",
2124
+ cancel: "Abbrechen",
2125
+ add: "Hinzufügen",
2126
+ addAssignment: "Zuweisung hinzufügen",
2127
+ createRule: "Regel erstellen"
2128
+ };
2129
+ const errors = {
2130
+ unknownRuleType: "Typ"
2131
+ };
2132
+ const testData = {
2133
+ ruleDescription: "Beschreibung"
2134
+ };
2135
+ const deAdministrationRule = {
2136
+ fields: fields$1,
2137
+ buttons: buttons$3,
2138
+ errors: errors,
2139
+ testData: testData
2140
+ };
2141
+
2142
+ const header = {
2143
+ settings: "Einstellungen"
2144
+ };
2145
+ const deAdministrationSettings = {
2146
+ header: header
2147
+ };
2148
+
2149
+ const common$3 = {
2150
+ name: "Name",
2151
+ availabilityRule: "Verfügbarkeitsregel"
2152
+ };
2153
+ const listing$1 = {
2154
+ addShippingMethod: "Versandart hinzufügen"
2155
+ };
2156
+ const detail$1 = {
2157
+ };
2158
+ const methods$1 = {
2159
+ standard: "Standard",
2160
+ express: "Express",
2161
+ customShippingMethod: "Benutzerdefinierte Versandart"
2162
+ };
2163
+ const dialogs = {
2164
+ warning: "Warnung",
2165
+ cancel: "Abbrechen",
2166
+ "delete": "Löschen"
2167
+ };
2168
+ const deAdministrationShipping = {
2169
+ common: common$3,
2170
+ listing: listing$1,
2171
+ detail: detail$1,
2172
+ methods: methods$1,
2173
+ dialogs: dialogs
2174
+ };
2175
+
2176
+ const headings = {
2177
+ futureProofStore: "Zukunftssicher mit Shopware Services"
2178
+ };
2179
+ const buttons$2 = {
2180
+ activateServices: "Services aktivieren",
2181
+ grantPermissions: "Berechtigungen erteilen",
2182
+ deactivate: "Deaktivieren",
2183
+ exploreNow: "Jetzt erkunden"
2184
+ };
2185
+ const modals = {
2186
+ deactivateServices: "Shopware Services deaktivieren"
2187
+ };
2188
+ const messages$1 = {
2189
+ accessDenied: "Zugriff verweigert"
2190
+ };
2191
+ const links = {
2192
+ shopwareServices: "Shopware Services"
2193
+ };
2194
+ const dashboard = {
2195
+ shopwareServicesIntroduction: "Introducing Shopware Services"
2196
+ };
2197
+ const deAdministrationShopwareServices = {
2198
+ headings: headings,
2199
+ buttons: buttons$2,
2200
+ modals: modals,
2201
+ messages: messages$1,
2202
+ links: links,
2203
+ dashboard: dashboard
2204
+ };
2205
+
2206
+ const general$2 = {
2207
+ title: "Ihr Profil",
2208
+ firstName: "Vorname",
2209
+ lastName: "Nachname",
2210
+ email: "E-Mail",
2211
+ username: "Benutzername",
2212
+ currentPassword: "Aktuelles Passwort",
2213
+ newPassword: "Neues Passwort",
2214
+ newPasswordConfirm: "Neues Passwort bestätigen",
2215
+ language: "Sprache",
2216
+ timeZone: "Zeitzone",
2217
+ save: "Speichern",
2218
+ saveSuccess: "Profil wurde erfolgreich aktualisiert."
2219
+ };
2220
+ const tabs = {
2221
+ searchPreferences: "Suchen"
2222
+ };
2223
+ const fields = {
2224
+ firstName: "Vorname",
2225
+ lastName: "Nachname",
2226
+ username: "Benutzername",
2227
+ email: "E-Mail"
2228
+ };
2229
+ const buttons$1 = {
2230
+ deselectAll: "Alle abwählen"
2231
+ };
2232
+ const deAdministrationYourProfile = {
2233
+ general: general$2,
2234
+ tabs: tabs,
2235
+ fields: fields,
2236
+ buttons: buttons$1
2237
+ };
2238
+
2239
+ const common$2 = {
2240
+ salutation: "Anrede",
2241
+ firstName: "Vorname",
2242
+ lastName: "Nachname",
2243
+ company: "Firma",
2244
+ department: "Abteilung",
2245
+ back: "Zurück",
2246
+ changePassword: "Passwort ändern",
2247
+ passwordUpdated: "Ihr Passwort wurde aktualisiert.",
2248
+ cashOnDelivery: "Nachnahme",
2249
+ paidInAdvance: "Vorauskasse",
2250
+ invoice: "Rechnung"
2251
+ };
2252
+ const login = {
2253
+ email: "Ihre E-Mail-Adresse",
2254
+ password: "Ihr Passwort",
2255
+ logIn: "Anmelden",
2256
+ logOut: "Abmelden",
2257
+ forgotPassword: "Ich habe mein Passwort vergessen.",
2258
+ invalidCredentials: "Es konnte kein Konto gefunden werden, das den angegebenen Anmeldedaten entspricht.",
2259
+ successfulLogout: "Erfolgreich abgemeldet."
2260
+ };
2261
+ const profile = {
2262
+ saveChanges: "Änderungen speichern",
2263
+ changeEmail: "E-Mail-Adresse ändern",
2264
+ emailConfirmation: "E-Mail-Adresse bestätigen",
2265
+ emailUpdated: "Ihre E-Mail-Adresse wurde aktualisiert.",
2266
+ invalidEmail: "Ungültige E-Mail-Adresse.",
2267
+ emailUpdateFailure: "E-Mail-Adresse konnte nicht geändert werden.",
2268
+ passwordTooShort: "Eingabe ist zu kurz.",
2269
+ passwordUpdateFailure: "Passwort konnte nicht geändert werden."
2270
+ };
2271
+ const orders = {
2272
+ download: "Herunterladen",
2273
+ cancelOrder: "Bestellung stornieren",
2274
+ repeatOrder: "Bestellung wiederholen",
2275
+ changePaymentMethod: "Zahlungsmethode ändern",
2276
+ actions: "Aktionen",
2277
+ expand: "Erweitern",
2278
+ showDetails: "Details anzeigen",
2279
+ creditItem: "Gutschrift",
2280
+ orderNumber: "Bestellnummer",
2281
+ plusVat: "zzgl.",
2282
+ vatSuffix: "% MwSt.",
2283
+ shippingCosts: "Versandkosten:",
2284
+ totalGross: "Gesamtsumme (brutto):"
2285
+ };
2286
+ const addresses = {
2287
+ street: "Straße",
2288
+ streetAddress: "Straßenadresse",
2289
+ city: "Stadt",
2290
+ country: "Land",
2291
+ postalCode: "Postleitzahl",
2292
+ state: "Bundesland",
2293
+ editAddress: "Adresse bearbeiten",
2294
+ useAsDefaultBilling: "Als Standard-Rechnungsadresse verwenden",
2295
+ useAsDefaultShipping: "Als Standard-Versandadresse verwenden",
2296
+ deliveryNotPossible: "Eine Lieferung in dieses Land ist nicht möglich."
2297
+ };
2298
+ const registration = {
2299
+ "continue": "Weiter",
2300
+ differentShippingAddress: "Versand- und Rechnungsadresse stimmen nicht überein."
2301
+ };
2302
+ const general$1 = {
2303
+ yourAccount: "Ihr Konto",
2304
+ newsletter: "Ja, ich möchte",
2305
+ newsletterRegistrationSuccess: "Sie haben sich erfolgreich für den Newsletter angemeldet.",
2306
+ cannotDeliverToCountry: "Wir können nicht in das Land liefern, das in Ihrer Lieferadresse gespeichert ist.",
2307
+ shippingNotPossible: "Der Versand an die ausgewählte Versandadresse ist derzeit nicht möglich.",
2308
+ overview: "Übersicht",
2309
+ personalData: "Persönliche Daten",
2310
+ defaultPaymentMethod: "Zahlung",
2311
+ defaultBillingAddress: "Hinzufügen",
2312
+ defaultShippingAddress: "Hinzufügen"
2313
+ };
2314
+ const recovery = {
2315
+ title: "Passwort-Wiederherstellung",
2316
+ subtitle: "Wir senden Ihnen eine Bestätigungs-E-Mail. Klicken Sie auf den Link in dieser E-Mail, um Ihr Passwort zu ändern.",
2317
+ requestEmail: "E-Mail anfordern",
2318
+ emailSent: "Falls die angegebene E-Mail-Adresse registriert ist, wurde eine Bestätigungs-E-Mail mit einem Link zum Zurücksetzen des Passworts gesendet.",
2319
+ invalidLink: "Der Link zum Zurücksetzen des Passworts scheint ungültig zu sein.",
2320
+ newPassword: "Neues Passwort",
2321
+ passwordConfirmation: "Passwort bestätigen"
2322
+ };
2323
+ const payment = {
2324
+ change: "Ändern"
2325
+ };
2326
+ const tasks = {
2327
+ registration: {
2328
+ defaultStreet: "Ebbinghof 10",
2329
+ defaultCity: "Schöppingen",
2330
+ defaultCountry: "Deutschland",
2331
+ defaultDepartment: "Betrieb",
2332
+ defaultVatRegNo: "DE1234567890"
2333
+ },
2334
+ deprecation: {
2335
+ registerGuestDeprecated: "Verwenden Sie stattdessen `Register.ts`.",
2336
+ isCommercialDeprecated: "Das 'isCommercial'-Argument ist veraltet und wird in einer zukünftigen Version entfernt. Bitte vermeiden Sie dessen Verwendung und verlassen Sie sich stattdessen auf das `isCommercial`-Feld in `RegistrationData`."
2337
+ }
2338
+ };
2339
+ const deStorefrontAccount = {
2340
+ common: common$2,
2341
+ login: login,
2342
+ profile: profile,
2343
+ orders: orders,
2344
+ addresses: addresses,
2345
+ registration: registration,
2346
+ general: general$1,
2347
+ recovery: recovery,
2348
+ payment: payment,
2349
+ tasks: tasks
2350
+ };
2351
+
2352
+ const common$1 = {
2353
+ salutation: "Anrede",
2354
+ firstName: "Vorname",
2355
+ lastName: "Nachname",
2356
+ company: "Unternehmen",
2357
+ department: "Abteilung",
2358
+ street: "Straße",
2359
+ postalCode: "Postleitzahl"
2360
+ };
2361
+ const actions$2 = {
2362
+ editAddress: "Adresse bearbeiten",
2363
+ useAsDefaultBilling: "Als Standard-Rechnungsadresse verwenden",
2364
+ useAsDefaultShipping: "Als Standard-Lieferadresse verwenden",
2365
+ addressOptions: "Adress-Optionen"
2366
+ };
2367
+ const messages = {
2368
+ deliveryNotPossible: "Eine Lieferung in dieses Land ist nicht möglich."
2369
+ };
2370
+ const deStorefrontAddress = {
2371
+ common: common$1,
2372
+ actions: actions$2,
2373
+ messages: messages
2374
+ };
2375
+
2376
+ const common = {
2377
+ back: "Zurück",
2378
+ cashOnDelivery: "Nachnahme",
2379
+ paidInAdvance: "Vorkasse",
2380
+ invoice: "Rechnung",
2381
+ standard: "Standard",
2382
+ express: "Express"
2383
+ };
2384
+ const cart = {
2385
+ addToCart: "In den Warenkorb",
2386
+ removeFromCart: "Aus dem Warenkorb entfernen",
2387
+ quantity: "Anzahl",
2388
+ price: "Preis",
2389
+ subtotal: "Zwischensumme",
2390
+ total: "Gesamt",
2391
+ emptyCart: "Ihr Warenkorb ist leer",
2392
+ continueShopping: "Weiter einkaufen",
2393
+ proceedToCheckout: "Zur Kasse",
2394
+ shoppingCart: "Warenkorb",
2395
+ goToCheckout: "Zur Kasse gehen",
2396
+ displayShoppingCart: "Warenkorb anzeigen",
2397
+ promoCode: "Aktionscode",
2398
+ stockReached: "nur noch 1x verfügbar"
2399
+ };
2400
+ const confirm = {
2401
+ confirmOrder: "Bestellung bestätigen",
2402
+ orderSummary: "Bestellübersicht",
2403
+ shippingAddress: "Lieferadresse",
2404
+ billingAddress: "Rechnungsadresse",
2405
+ shippingMethod: "Versandart",
2406
+ paymentMethod: "Zahlungsart",
2407
+ agreeToTerms: "Ich stimme den AGBs zu",
2408
+ revocationNotice: "Widerrufsbelehrung",
2409
+ completeOrder: "Bestellung abschließen",
2410
+ submitOrder: "Bestellung absenden",
2411
+ termsAndConditions: "Ich habe die allgemeinen Geschäftsbedingungen gelesen und akzeptiert.",
2412
+ immediateAccessToDigitalProduct: "Ich möchte sofortigen Zugang zu den digitalen Inhalten und erkenne an, dass ich damit mein Widerrufsrecht aufgebe."
2413
+ };
2414
+ const finish = {
2415
+ thankYou: "Vielen Dank für Ihre Bestellung!",
2416
+ thankYouForOrder: "Vielen Dank für Ihre Bestellung!",
2417
+ orderNumber: "Bestellnummer",
2418
+ orderConfirmation: "Bestellbestätigung",
2419
+ continueShopping: "Weiter einkaufen",
2420
+ grandTotal: "Gesamtsumme",
2421
+ plusVat: "zzgl.",
2422
+ vatSuffix: "% MwSt."
2423
+ };
2424
+ const orderEdit = {
2425
+ cancelOrder: "Bestellung stornieren"
2426
+ };
2427
+ const register$1 = {
2428
+ createAccount: "Konto erstellen",
2429
+ guestCheckout: "Als Gast bestellen"
2430
+ };
2431
+ const deStorefrontCheckout = {
2432
+ common: common,
2433
+ cart: cart,
2434
+ confirm: confirm,
2435
+ finish: finish,
2436
+ orderEdit: orderEdit,
2437
+ register: register$1
2438
+ };
2439
+
2440
+ const cookie = {
2441
+ title: "Cookie-Einstellungen",
2442
+ description: "Wir verwenden Cookies, um Ihnen die bestmögliche Nutzung unserer Website zu ermöglichen.",
2443
+ acceptAll: "Alle akzeptieren",
2444
+ acceptSelected: "Auswahl akzeptieren",
2445
+ decline: "Ablehnen",
2446
+ necessary: "Notwendig",
2447
+ functional: "Funktional",
2448
+ statistics: "Statistiken",
2449
+ acceptAllCookies: "Alle Cookies akzeptieren",
2450
+ configure: "Konfigurieren",
2451
+ onlyTechnicallyRequired: "Nur technisch erforderliche",
2452
+ preferences: "Cookie-Einstellungen",
2453
+ marketing: "Marketing"
2454
+ };
2455
+ const privacy = {
2456
+ policy: "Datenschutzrichtlinie",
2457
+ readMore: "Mehr lesen"
2458
+ };
2459
+ const deStorefrontConsent = {
2460
+ cookie: cookie,
2461
+ privacy: privacy
2462
+ };
2463
+
2464
+ const form = {
2465
+ contact: "Kontakt",
2466
+ salutation: "Anrede",
2467
+ firstName: "Vorname",
2468
+ lastName: "Nachname",
2469
+ email: "Ihre E-Mail-Adresse",
2470
+ phone: "Telefon",
2471
+ subject: "Betreff",
2472
+ comment: "Kommentar",
2473
+ submit: "Senden",
2474
+ privacyPolicy: "Durch die Auswahl von 'Weiter' bestätigen Sie, dass Sie unsere gelesen und akzeptiert haben",
2475
+ emailAddress: "E-Mail-Adresse"
2476
+ };
2477
+ const email = {
2478
+ from: "doNotReply@localhost.com",
2479
+ subject: "Ihre Anmeldung"
2480
+ };
2481
+ const title$2 = "Titel";
2482
+ const deStorefrontContact = {
2483
+ form: form,
2484
+ email: email,
2485
+ title: title$2
2486
+ };
2487
+
2488
+ const account = {
2489
+ yourAccount: "Ihr Konto"
2490
+ };
2491
+ const consent = {
2492
+ onlyTechnicallyRequired: "Nur technisch erforderlich",
2493
+ configure: "Konfigurieren",
2494
+ acceptAllCookies: "Alle Cookies akzeptieren",
2495
+ cookiePreferences: "Cookie-Einstellungen",
2496
+ marketing: "Marketing"
2497
+ };
2498
+ const filters = {
2499
+ manufacturer: "Hersteller",
2500
+ price: "Preis",
2501
+ resetAll: "Alle zurücksetzen",
2502
+ freeShipping: "Kostenloser Versand"
2503
+ };
2504
+ const deStorefrontHome = {
2505
+ account: account,
2506
+ consent: consent,
2507
+ filters: filters
2508
+ };
2509
+
2510
+ const emailAddress = "Ihre E-Mail-Adresse";
2511
+ const password = "Ihr Passwort";
2512
+ const loginButton = "Anmelden";
2513
+ const forgotPassword = "Ich habe mein Passwort vergessen.";
2514
+ const logout = "Abmelden";
2515
+ const invalidCredentials = "Es konnte kein Konto gefunden werden, das den angegebenen Anmeldedaten entspricht.";
2516
+ const successfulLogout = "Erfolgreich abgemeldet.";
2517
+ const passwordUpdated = "Ihr Passwort wurde aktualisiert.";
2518
+ const register = {
2519
+ salutation: "Anrede",
2520
+ firstName: "Vorname",
2521
+ lastName: "Nachname",
2522
+ company: "Unternehmen",
2523
+ department: "Abteilung",
2524
+ emailAddress: "E-Mail-Adresse",
2525
+ password: "Passwort",
2526
+ streetAddress: "Straße und Hausnummer",
2527
+ city: "Stadt",
2528
+ country: "Land",
2529
+ postalCode: "Postleitzahl",
2530
+ state: "Bundesland",
2531
+ differentShippingAddress: "Liefer- und Rechnungsadresse sind nicht identisch.",
2532
+ "continue": "Weiter"
2533
+ };
2534
+ const deStorefrontLogin = {
2535
+ emailAddress: emailAddress,
2536
+ password: password,
2537
+ loginButton: loginButton,
2538
+ forgotPassword: forgotPassword,
2539
+ logout: logout,
2540
+ invalidCredentials: invalidCredentials,
2541
+ successfulLogout: successfulLogout,
2542
+ passwordUpdated: passwordUpdated,
2543
+ register: register
2544
+ };
2545
+
2546
+ const pageNotFound = {
2547
+ title: "Seite nicht gefunden",
2548
+ backToShop: "Zurück zum Shop"
2549
+ };
2550
+ const home = {
2551
+ yourAccount: "Ihr Konto",
2552
+ manufacturerFilter: "Hersteller",
2553
+ priceFilter: "Preis",
2554
+ resetAll: "Alle zurücksetzen",
2555
+ freeShipping: "Kostenloser Versand"
2556
+ };
2557
+ const footer = {
2558
+ contactForm: "Kontaktformular"
2559
+ };
2560
+ const category = {
2561
+ sorting: "Sortierung",
2562
+ addToCart: "In den Warenkorb legen",
2563
+ noProductsFound: "Keine Produkte gefunden."
2564
+ };
2565
+ const deStorefrontNavigation = {
2566
+ pageNotFound: pageNotFound,
2567
+ home: home,
2568
+ footer: footer,
2569
+ category: category
2570
+ };
2571
+
2572
+ const title$1 = "Warenkorb";
2573
+ const emptyCart = "Ihr Warenkorb ist leer";
2574
+ const quantity$1 = "Anzahl";
2575
+ const remove = "Entfernen";
2576
+ const subtotal = "Zwischensumme";
2577
+ const goToCart = "Zum Warenkorb";
2578
+ const continueShopping = "Weiter einkaufen";
2579
+ const addedToCart = "Zum Warenkorb hinzugefügt";
2580
+ const general = {
2581
+ title: "Titel"
2582
+ };
2583
+ const buttons = {
2584
+ goToCheckout: "Zur Kasse gehen",
2585
+ goToCart: "Display shopping cart",
2586
+ continueShopping: "Fortfahren"
2587
+ };
2588
+ const deStorefrontOffCanvasCart = {
2589
+ title: title$1,
2590
+ emptyCart: emptyCart,
2591
+ quantity: quantity$1,
2592
+ remove: remove,
2593
+ subtotal: subtotal,
2594
+ goToCart: goToCart,
2595
+ continueShopping: continueShopping,
2596
+ addedToCart: addedToCart,
2597
+ general: general,
2598
+ buttons: buttons
2599
+ };
2600
+
2601
+ const actions$1 = {
2602
+ cancelOrder: "Bestellung stornieren",
2603
+ back: "Zurück"
2604
+ };
2605
+ const shipping = {
2606
+ standard: "Standard",
2607
+ express: "Express"
2608
+ };
2609
+ const deStorefrontOrder = {
2610
+ actions: actions$1,
2611
+ shipping: shipping
2612
+ };
2613
+
2614
+ const title = "Seite nicht gefunden";
2615
+ const message = "Die angeforderte Seite konnte nicht gefunden werden.";
2616
+ const backToHome = "Zurück zur Startseite";
2617
+ const searchPlaceholder = "Produkte suchen...";
2618
+ const suggestions = "Vorschläge";
2619
+ const backToShop = "Zurück";
2620
+ const deStorefrontPageNotFound = {
2621
+ title: title,
2622
+ message: message,
2623
+ backToHome: backToHome,
2624
+ searchPlaceholder: searchPlaceholder,
2625
+ suggestions: suggestions,
2626
+ backToShop: backToShop
2627
+ };
2628
+
2629
+ const methods = {
2630
+ cashOnDelivery: "Nachnahme",
2631
+ paidInAdvance: "Vorkasse",
2632
+ invoice: "Rechnung"
2633
+ };
2634
+ const actions = {
2635
+ change: "Ändern",
2636
+ completePayment: "Zahlung abschließen"
2637
+ };
2638
+ const deStorefrontPayment = {
2639
+ methods: methods,
2640
+ actions: actions
2641
+ };
2642
+
2643
+ const detail = {
2644
+ addToCart: "In den Warenkorb",
2645
+ addToWishlist: "Auf die Wunschliste",
2646
+ availableFrom: "Verfügbar ab",
2647
+ deliveryTime: "Lieferzeit",
2648
+ description: "Beschreibung",
2649
+ price: "Preis",
2650
+ quantity: "Anzahl",
2651
+ relatedProducts: "Verwandte Produkte",
2652
+ reviews: "Bewertungen",
2653
+ specifications: "Spezifikationen",
2654
+ stock: "Lagerbestand"
2655
+ };
2656
+ const listing = {
2657
+ filter: "Filter",
2658
+ noResults: "Keine Ergebnisse gefunden",
2659
+ showMore: "Mehr anzeigen",
2660
+ sortBy: "Sortieren nach",
2661
+ sorting: "Sortierung",
2662
+ noProductsFound: "Keine Produkte gefunden."
2663
+ };
2664
+ const search = {
2665
+ noResults: "Keine Suchergebnisse",
2666
+ placeholder: "Suchbegriff eingeben",
2667
+ results: "Suchergebnisse"
2668
+ };
2669
+ const addToCart = "In den Warenkorb";
2670
+ const addToWishlist = "Auf die Wunschliste";
2671
+ const removeFromWishlist = "Von der Wunschliste entfernen";
2672
+ const deliveryTime = "Lieferzeit";
2673
+ const quantity = "Anzahl";
2674
+ const review = {
2675
+ tabTitle: "Bewertungen",
2676
+ title: "Titel",
2677
+ text: "Bewertungstext",
2678
+ emptyText: "Noch keine Bewertungen vorhanden",
2679
+ submitMessage: "Bewertung abgesendet"
2680
+ };
2681
+ const deStorefrontProduct = {
2682
+ detail: detail,
2683
+ listing: listing,
2684
+ search: search,
2685
+ addToCart: addToCart,
2686
+ addToWishlist: addToWishlist,
2687
+ removeFromWishlist: removeFromWishlist,
2688
+ deliveryTime: deliveryTime,
2689
+ quantity: quantity,
2690
+ review: review
2691
+ };
2692
+
2693
+ const passwordRecovery = "Passwort-Wiederherstellung";
2694
+ const subtitle = "Wir senden Ihnen eine Bestätigungs-E-Mail. Klicken Sie auf den Link in dieser E-Mail, um Ihr Passwort zu ändern.";
2695
+ const requestEmail = "E-Mail anfordern";
2696
+ const back = "Zurück";
2697
+ const emailSent = "Falls die angegebene E-Mail-Adresse registriert ist, wurde eine Bestätigungs-E-Mail mit einem Link zur Passwort-Zurücksetzung gesendet.";
2698
+ const newPassword = "Neues Passwort";
2699
+ const passwordConfirmation = "Passwort-Bestätigung";
2700
+ const changePassword = "Passwort ändern";
2701
+ const invalidLink = "Der Link zur Passwort-Zurücksetzung scheint ungültig zu sein.";
2702
+ const deStorefrontRecover = {
2703
+ passwordRecovery: passwordRecovery,
2704
+ subtitle: subtitle,
2705
+ requestEmail: requestEmail,
2706
+ back: back,
2707
+ emailSent: emailSent,
2708
+ newPassword: newPassword,
2709
+ passwordConfirmation: passwordConfirmation,
2710
+ changePassword: changePassword,
2711
+ invalidLink: invalidLink
2712
+ };
2713
+
2714
+ const BUNDLED_RESOURCES = {
2715
+ en: {
2716
+ // Administration
2717
+ "administration/category": administrationCategory,
2718
+ "administration/customer": administrationCustomer,
2719
+ "administration/customField": administrationCustomField,
2720
+ "administration/dataSharing": administrationDataSharing,
2721
+ "administration/document": administrationDocument,
2722
+ "administration/landingPage": administrationLandingPage,
2723
+ "administration/layout": administrationLayout,
2724
+ "administration/login": administrationLogin,
2725
+ "administration/flowBuilder": administrationFlowBuilder,
2726
+ "administration/dashboard": administrationDashboard,
2727
+ "administration/manufacturer": administrationManufacturer,
2728
+ "administration/order": administrationOrder,
2729
+ "administration/payment": administrationPayment,
2730
+ "administration/promotion": administrationPromotion,
2731
+ "administration/rule": administrationRule,
2732
+ "administration/settings": administrationSettings,
2733
+ "administration/shipping": administrationShipping,
2734
+ "administration/yourProfile": administrationYourProfile,
2735
+ "administration/customerGroup": administrationCustomerGroup,
2736
+ "administration/firstRunWizard": administrationFirstRunWizard,
2737
+ "administration/shopwareServices": administrationShopwareServices,
2738
+ "administration/product": administrationProduct,
2739
+ // Storefront
2740
+ "storefront/account": storefrontAccount,
2741
+ "storefront/address": storefrontAddress,
2742
+ "storefront/checkout": storefrontCheckout,
2743
+ "storefront/product": storefrontProduct,
2744
+ "storefront/navigation": storefrontNavigation,
2745
+ "storefront/contact": storefrontContact,
2746
+ "storefront/consent": storefrontConsent,
2747
+ "storefront/home": storefrontHome,
2748
+ "storefront/login": storefrontLogin,
2749
+ "storefront/order": storefrontOrder,
2750
+ "storefront/pageNotFound": storefrontPageNotFound,
2751
+ "storefront/payment": storefrontPayment,
2752
+ "storefront/recover": storefrontRecover,
2753
+ "storefront/offCanvasCart": storefrontOffCanvasCart
2754
+ },
2755
+ de: {
2756
+ // Administration
2757
+ "administration/category": deAdministrationCategory,
2758
+ "administration/customer": deAdministrationCustomer,
2759
+ "administration/customerGroup": deAdministrationCustomerGroup,
2760
+ "administration/customField": deAdministrationCustomField,
2761
+ "administration/dashboard": deAdministrationDashboard,
2762
+ "administration/dataSharing": deAdministrationDataSharing,
2763
+ "administration/document": deAdministrationDocument,
2764
+ "administration/firstRunWizard": deAdministrationFirstRunWizard,
2765
+ "administration/flowBuilder": deAdministrationFlowBuilder,
2766
+ "administration/landingPage": deAdministrationLandingPage,
2767
+ "administration/layout": deAdministrationLayout,
2768
+ "administration/login": deAdministrationLogin,
2769
+ "administration/manufacturer": deAdministrationManufacturer,
2770
+ "administration/order": deAdministrationOrder,
2771
+ "administration/payment": deAdministrationPayment,
2772
+ "administration/product": deAdministrationProduct,
2773
+ "administration/promotion": deAdministrationPromotion,
2774
+ "administration/rule": deAdministrationRule,
2775
+ "administration/settings": deAdministrationSettings,
2776
+ "administration/shipping": deAdministrationShipping,
2777
+ "administration/shopwareServices": deAdministrationShopwareServices,
2778
+ "administration/yourProfile": deAdministrationYourProfile,
2779
+ // Storefront
2780
+ "storefront/account": deStorefrontAccount,
2781
+ "storefront/address": deStorefrontAddress,
2782
+ "storefront/checkout": deStorefrontCheckout,
2783
+ "storefront/consent": deStorefrontConsent,
2784
+ "storefront/contact": deStorefrontContact,
2785
+ "storefront/home": deStorefrontHome,
2786
+ "storefront/login": deStorefrontLogin,
2787
+ "storefront/navigation": deStorefrontNavigation,
2788
+ "storefront/offCanvasCart": deStorefrontOffCanvasCart,
2789
+ "storefront/order": deStorefrontOrder,
2790
+ "storefront/pageNotFound": deStorefrontPageNotFound,
2791
+ "storefront/payment": deStorefrontPayment,
2792
+ "storefront/product": deStorefrontProduct,
2793
+ "storefront/recover": deStorefrontRecover
2794
+ }
2795
+ };
2796
+ const baseNamespaces = {
2797
+ administration: {
2798
+ category: administrationCategory,
2799
+ customer: administrationCustomer,
2800
+ customField: administrationCustomField,
2801
+ dataSharing: administrationDataSharing,
2802
+ document: administrationDocument,
2803
+ landingPage: administrationLandingPage,
2804
+ layout: administrationLayout,
2805
+ login: administrationLogin,
2806
+ flowBuilder: administrationFlowBuilder,
2807
+ dashboard: administrationDashboard,
2808
+ manufacturer: administrationManufacturer,
2809
+ order: administrationOrder,
2810
+ payment: administrationPayment,
2811
+ promotion: administrationPromotion,
2812
+ rule: administrationRule,
2813
+ settings: administrationSettings,
2814
+ shipping: administrationShipping,
2815
+ yourProfile: administrationYourProfile,
2816
+ customerGroup: administrationCustomerGroup,
2817
+ firstRunWizard: administrationFirstRunWizard,
2818
+ shopwareServices: administrationShopwareServices,
2819
+ product: administrationProduct
2820
+ },
2821
+ storefront: {
2822
+ account: storefrontAccount,
2823
+ address: storefrontAddress,
2824
+ checkout: storefrontCheckout,
2825
+ product: storefrontProduct,
2826
+ navigation: storefrontNavigation,
2827
+ contact: storefrontContact,
2828
+ consent: storefrontConsent,
2829
+ home: storefrontHome,
2830
+ login: storefrontLogin,
2831
+ order: storefrontOrder,
2832
+ pageNotFound: storefrontPageNotFound,
2833
+ payment: storefrontPayment,
2834
+ recover: storefrontRecover,
2835
+ offCanvasCart: storefrontOffCanvasCart
2836
+ }
2837
+ };
2838
+
2839
+ function normalizeLanguage(input) {
2840
+ if (!input) return "en";
2841
+ const first = input.split(",")[0].split(";")[0].trim().replace(/\.(?:UTF-8|utf-8|utf8)$/i, "").replace(/_/g, "-");
2842
+ const [lang] = first.split("-");
2843
+ return (lang || "en").toLowerCase();
2844
+ }
2845
+ function listNamespaces(locale, customResources) {
2846
+ const resources = customResources?.[locale] || BUNDLED_RESOURCES[locale];
2847
+ if (!resources) return [];
2848
+ return Object.keys(resources);
2849
+ }
2850
+ const TRANSLATOR_SYMBOL = Symbol("__sw_translator__");
2851
+ class LanguageHelper {
2852
+ i18nInstance;
2853
+ currentLng;
2854
+ fallbackLng = "en";
2855
+ resources;
2856
+ constructor(i18nInstance, language, resources) {
2857
+ this.i18nInstance = i18nInstance;
2858
+ this.currentLng = language;
2859
+ this.resources = resources;
2860
+ }
2861
+ getLanguage() {
2862
+ return this.currentLng;
2863
+ }
2864
+ async setLanguage(rawLanguage) {
2865
+ const lng = normalizeLanguage(rawLanguage);
2866
+ const activeNs = listNamespaces(lng, this.resources);
2867
+ const fallbackNs = lng === this.fallbackLng ? [] : listNamespaces(this.fallbackLng, this.resources);
2868
+ const ns = Array.from(/* @__PURE__ */ new Set([...activeNs, ...fallbackNs]));
2869
+ this.currentLng = lng;
2870
+ if (this.i18nInstance && typeof this.i18nInstance.changeLanguage === "function") {
2871
+ await this.i18nInstance.changeLanguage(lng);
2872
+ if (ns.length && typeof this.i18nInstance.reloadResources === "function") {
2873
+ await this.i18nInstance.reloadResources([lng, this.fallbackLng], ns);
2874
+ }
2875
+ }
2876
+ }
2877
+ translate(key, options) {
2878
+ if (this.i18nInstance && typeof this.i18nInstance.t === "function") {
2879
+ const [area, namespace, ...keyParts] = key.split(":");
2880
+ const i18nextKey = `${area}/${namespace}:${keyParts.join(":")}`;
2881
+ return this.i18nInstance.t(i18nextKey, options);
2882
+ }
2883
+ return fallbackTranslate(key, this.resources);
2884
+ }
2885
+ static async createInstance(rawLanguage, customResources) {
2886
+ const lng = normalizeLanguage(rawLanguage);
2887
+ const resources = customResources || BUNDLED_RESOURCES;
2888
+ let i18nInstance = null;
2889
+ try {
2890
+ const activeNs = listNamespaces(lng, resources);
2891
+ const fallbackNs = lng === "en" ? [] : listNamespaces("en", resources);
2892
+ const ns = Array.from(/* @__PURE__ */ new Set([...activeNs, ...fallbackNs]));
2893
+ const instance = createInstance();
2894
+ await instance.init({
2895
+ lng,
2896
+ fallbackLng: "en",
2897
+ ns,
2898
+ defaultNS: ns[0] || "common",
2899
+ resources,
2900
+ // Use provided resources (bundled or custom)
2901
+ interpolation: { escapeValue: false },
2902
+ returnNull: false,
2903
+ returnEmptyString: false,
2904
+ keySeparator: ".",
2905
+ nsSeparator: ":"
2906
+ });
2907
+ i18nInstance = instance;
2908
+ } catch (error) {
2909
+ console.warn("i18next initialization failed, using fallback:", error);
2910
+ i18nInstance = null;
2911
+ }
2912
+ return new LanguageHelper(i18nInstance, lng, resources);
2913
+ }
2914
+ static setForContext(context, instance) {
2915
+ context[TRANSLATOR_SYMBOL] = instance;
2916
+ }
2917
+ static getFromContext(context) {
2918
+ return context[TRANSLATOR_SYMBOL];
2919
+ }
2920
+ }
2921
+ const contextStore = new AsyncLocalStorage();
2922
+ function setCurrentContext(context) {
2923
+ contextStore.enterWith(context);
2924
+ }
2925
+ function getCurrentContext() {
2926
+ return contextStore.getStore();
2927
+ }
2928
+ let globalTranslator = null;
2929
+ async function getGlobalTranslator(customResources) {
2930
+ if (!globalTranslator) {
2931
+ try {
2932
+ const language = process.env.LANG || process.env.LANGUAGE || process.env.lang || "en";
2933
+ globalTranslator = await LanguageHelper.createInstance(language, customResources);
2934
+ } catch (error) {
2935
+ console.warn("Could not initialize global translator, using fallback:", error);
2936
+ return null;
2937
+ }
2938
+ }
2939
+ return globalTranslator;
2940
+ }
2941
+ function fallbackTranslate(key, customResources) {
2942
+ const [area, namespace, ...keyPath] = key.split(":");
2943
+ const language = process.env.LANG || process.env.LANGUAGE || process.env.lang || "en";
2944
+ const normalizedLang = language.toLowerCase().startsWith("de") ? "de" : "en";
2945
+ const resources = customResources?.[normalizedLang] || BUNDLED_RESOURCES[normalizedLang];
2946
+ const resourceKey = `${area}/${namespace}`;
2947
+ const namespaceData = resources[resourceKey];
2948
+ if (namespaceData) {
2949
+ let value = namespaceData;
2950
+ const fullKeyPath = keyPath.join(":");
2951
+ for (const part of fullKeyPath.split(".")) {
2952
+ if (value && typeof value === "object" && value !== null) {
2953
+ value = value[part];
2954
+ } else {
2955
+ return key;
2956
+ }
2957
+ }
2958
+ return typeof value === "string" ? value : key;
2959
+ }
2960
+ return key;
2961
+ }
2962
+ function translate(key, options) {
2963
+ const context = getCurrentContext();
2964
+ if (context) {
2965
+ const translator = LanguageHelper.getFromContext(context);
2966
+ if (translator) {
2967
+ return translator.translate(key, options);
2968
+ }
2969
+ }
2970
+ if (globalTranslator) {
2971
+ return globalTranslator.translate(key, options);
2972
+ }
2973
+ if (!globalTranslator) {
2974
+ getGlobalTranslator().catch(() => {
2975
+ });
2976
+ }
2977
+ return fallbackTranslate(key);
2978
+ }
2979
+ if (typeof window === "undefined") {
2980
+ getGlobalTranslator().catch(() => {
2981
+ });
2982
+ }
2983
+
2984
+ const LanguageHelper$1 = {
2985
+ __proto__: null,
2986
+ LanguageHelper: LanguageHelper,
2987
+ getCurrentContext: getCurrentContext,
2988
+ setCurrentContext: setCurrentContext,
2989
+ translate: translate
2990
+ };
2991
+
554
2992
  async function createNewAdminPageContext(merchant, browser, SalesChannelBaseConfig, AdminApiContext) {
555
2993
  const context = await browser.newContext({
556
2994
  baseURL: SalesChannelBaseConfig.adminUrl,
@@ -559,8 +2997,10 @@ async function createNewAdminPageContext(merchant, browser, SalesChannelBaseConf
559
2997
  const adminPage = await context.newPage();
560
2998
  await adminPage.goto("#/login");
561
2999
  await mockApiCalls(adminPage);
562
- await adminPage.getByLabel(/Username|Email address/).fill(merchant.username);
563
- await adminPage.getByLabel("Password", { exact: true }).fill(merchant.password);
3000
+ const usernamePattern = new RegExp(`${translate("administration:login:username")}|${translate("administration:login:emailAddress")}`);
3001
+ const passwordLabel = translate("administration:login:password");
3002
+ await adminPage.getByLabel(usernamePattern).fill(merchant.username);
3003
+ await adminPage.getByLabel(passwordLabel, { exact: true }).fill(merchant.password);
564
3004
  const config = await (await AdminApiContext.get("./_info/config")).json();
565
3005
  const jsLoadingPromises = [];
566
3006
  for (const i in config.bundles) {
@@ -569,7 +3009,8 @@ async function createNewAdminPageContext(merchant, browser, SalesChannelBaseConf
569
3009
  jsLoadingPromises.push(...js.map((url) => adminPage.waitForResponse(url)));
570
3010
  }
571
3011
  }
572
- await adminPage.getByRole("button", { name: "Log in" }).click();
3012
+ const loginButtonLabel = translate("administration:login:loginButton");
3013
+ await adminPage.getByRole("button", { name: loginButtonLabel }).click();
573
3014
  await Promise.all(jsLoadingPromises);
574
3015
  const originalReload = adminPage.reload.bind(adminPage);
575
3016
  adminPage.reload = async () => {
@@ -596,7 +3037,9 @@ async function createNewAdminPageContext(merchant, browser, SalesChannelBaseConf
596
3037
  }
597
3038
 
598
3039
  const test$b = test$e.extend({
599
- AdminPage: async ({ IdProvider, AdminApiContext, SalesChannelBaseConfig, browser }, use) => {
3040
+ AdminPage: async ({ IdProvider, AdminApiContext, SalesChannelBaseConfig, browser, CustomTranslationResources }, use) => {
3041
+ const locale = process.env.LANG || process.env.LANGUAGE || process.env.lang || "en-GB";
3042
+ const languageHelper = await LanguageHelper.createInstance(locale, CustomTranslationResources);
600
3043
  const { id, uuid } = IdProvider.getIdPair();
601
3044
  const adminUser = {
602
3045
  id: uuid,
@@ -614,21 +3057,28 @@ const test$b = test$e.extend({
614
3057
  });
615
3058
  expect(response.ok()).toBeTruthy();
616
3059
  const page = await createNewAdminPageContext(adminUser, browser, SalesChannelBaseConfig, AdminApiContext);
3060
+ LanguageHelper.setForContext(page.context(), languageHelper);
3061
+ setCurrentContext(page.context());
617
3062
  await use(page);
618
3063
  await page.close();
3064
+ setCurrentContext(null);
619
3065
  await AdminApiContext.delete(`user/${uuid}`);
620
3066
  },
621
- StorefrontPage: async ({ DefaultSalesChannel, SalesChannelBaseConfig, browser, AdminApiContext, InstanceMeta }, use) => {
3067
+ StorefrontPage: async ({ DefaultSalesChannel, SalesChannelBaseConfig, browser, AdminApiContext, InstanceMeta, CustomTranslationResources }, use) => {
622
3068
  const { url, salesChannel } = DefaultSalesChannel;
3069
+ const locale = process.env.LANG || process.env.LANGUAGE || process.env.lang || "en-GB";
3070
+ const languageHelper = await LanguageHelper.createInstance(locale, CustomTranslationResources);
623
3071
  const context = await browser.newContext({
624
- baseURL: url
3072
+ baseURL: url,
3073
+ locale,
3074
+ extraHTTPHeaders: { "Accept-Language": locale }
625
3075
  });
3076
+ LanguageHelper.setForContext(context, languageHelper);
3077
+ setCurrentContext(context);
626
3078
  let page;
627
3079
  if (!await isThemeCompiled(AdminApiContext, DefaultSalesChannel.url)) {
628
3080
  test$e.slow();
629
- await AdminApiContext.post(
630
- `./_action/theme/${SalesChannelBaseConfig.defaultThemeId}/assign/${salesChannel.id}`
631
- );
3081
+ await AdminApiContext.post(`./_action/theme/${SalesChannelBaseConfig.defaultThemeId}/assign/${salesChannel.id}`);
632
3082
  await clearDelayedCache(AdminApiContext);
633
3083
  page = await context.newPage();
634
3084
  if (InstanceMeta.isSaaS) {
@@ -643,15 +3093,23 @@ const test$b = test$e.extend({
643
3093
  await page.goto("./", { waitUntil: "load" });
644
3094
  await use(page);
645
3095
  await page.close();
3096
+ setCurrentContext(null);
646
3097
  await context.close();
647
3098
  },
648
- InstallPage: async ({ browser }, use) => {
3099
+ InstallPage: async ({ browser, CustomTranslationResources }, use) => {
3100
+ const locale = process.env.LANG || process.env.LANGUAGE || process.env.lang || "en-GB";
3101
+ const languageHelper = await LanguageHelper.createInstance(locale, CustomTranslationResources);
649
3102
  const context = await browser.newContext({
650
- baseURL: process.env["APP_URL"]
3103
+ baseURL: process.env["APP_URL"],
3104
+ locale,
3105
+ extraHTTPHeaders: { "Accept-Language": locale }
651
3106
  });
3107
+ LanguageHelper.setForContext(context, languageHelper);
3108
+ setCurrentContext(context);
652
3109
  const page = await context.newPage();
653
3110
  await use(page);
654
3111
  await page.close();
3112
+ setCurrentContext(null);
655
3113
  await context.close();
656
3114
  },
657
3115
  page: async ({ AdminPage }, use) => {
@@ -3456,10 +5914,7 @@ const test$8 = test$e.extend({
3456
5914
  expect(instanceStatus.tags, 'expect instance to have "ci" tag').toContain("ci");
3457
5915
  const currency = await getCurrency("USD", context);
3458
5916
  const language = await getLanguageData("en-US", context);
3459
- await context.post(
3460
- "./_actions/set-default-entities",
3461
- { data: { currencyId: currency.id, languageId: language.id } }
3462
- );
5917
+ await context.post("./_actions/set-default-entities", { data: { currencyId: currency.id, languageId: language.id } });
3463
5918
  const token = await AdminApiContext.authenticateWithUserPassword(context.context, context.options);
3464
5919
  await context.post("./sbp/request-live-status", { headers: { Authorization: `Bearer ${token}` } });
3465
5920
  };
@@ -3488,6 +5943,26 @@ const test$8 = test$e.extend({
3488
5943
  });
3489
5944
  },
3490
5945
  { scope: "worker" }
5946
+ ],
5947
+ CustomTranslationResources: [
5948
+ // eslint-disable-next-line no-empty-pattern
5949
+ async ({}, use) => {
5950
+ await use(void 0);
5951
+ },
5952
+ { scope: "worker" }
5953
+ ],
5954
+ Translate: [
5955
+ async ({ CustomTranslationResources }, use) => {
5956
+ const { LanguageHelper, setCurrentContext } = await Promise.resolve().then(function () { return LanguageHelper$1; });
5957
+ const languageHelper = await LanguageHelper.createInstance("en", CustomTranslationResources);
5958
+ setCurrentContext({ languageHelper });
5959
+ const contextualTranslate = (key, options) => {
5960
+ return languageHelper.translate(key, options);
5961
+ };
5962
+ await use(contextualTranslate);
5963
+ setCurrentContext(null);
5964
+ },
5965
+ { scope: "worker" }
3491
5966
  ]
3492
5967
  });
3493
5968
 
@@ -3564,7 +6039,7 @@ class Home {
3564
6039
  constructor(page) {
3565
6040
  this.page = page;
3566
6041
  this.categoryTitle = page.locator(".cms-element-text h1");
3567
- this.accountMenuButton = page.getByLabel("Your account");
6042
+ this.accountMenuButton = page.getByLabel(translate("storefront:home:account.yourAccount"));
3568
6043
  this.closeGuestSessionButton = page.locator(".account-aside-btn");
3569
6044
  this.productImages = page.locator(".product-image-wrapper");
3570
6045
  this.productListItems = page.locator(".product-box");
@@ -3573,12 +6048,12 @@ class Home {
3573
6048
  this.currenciesDropdown = page.locator(".top-bar-currency").filter({ has: page.getByRole("button") });
3574
6049
  this.currenciesMenuOptions = page.locator(".top-bar-currency").filter({ has: page.getByRole("list") });
3575
6050
  this.consentCookieBannerContainer = page.locator(".cookie-permission-container");
3576
- this.consentOnlyTechnicallyRequiredButton = page.getByRole("button", { name: "Only technically required", exact: true });
3577
- this.consentConfigureButton = page.getByRole("button", { name: "Configure", exact: true });
3578
- this.consentAcceptAllCookiesButton = page.getByRole("button", { name: "Accept all cookies", exact: true });
3579
- this.consentCookiePreferences = page.getByLabel("Cookie preferences");
6051
+ this.consentOnlyTechnicallyRequiredButton = page.getByRole("button", { name: translate("storefront:home:consent.onlyTechnicallyRequired"), exact: true });
6052
+ this.consentConfigureButton = page.getByRole("button", { name: translate("storefront:home:consent.configure"), exact: true });
6053
+ this.consentAcceptAllCookiesButton = page.getByRole("button", { name: translate("storefront:home:consent.acceptAllCookies"), exact: true });
6054
+ this.consentCookiePreferences = page.getByLabel(translate("storefront:home:consent.cookiePreferences"));
3580
6055
  this.consentCookiePermissionContent = page.locator(".cookie-permission-content");
3581
- this.consentDialog = page.getByRole("dialog").filter({ hasText: "Cookie preferences" });
6056
+ this.consentDialog = page.getByRole("dialog").filter({ hasText: translate("storefront:home:consent.cookiePreferences") });
3582
6057
  this.consentDialogTechnicallyRequiredCheckbox = this.consentDialog.getByRole("checkbox", {
3583
6058
  name: "Technically required",
3584
6059
  exact: true
@@ -3587,8 +6062,8 @@ class Home {
3587
6062
  name: "Statistics",
3588
6063
  exact: true
3589
6064
  });
3590
- this.consentDialogMarketingdCheckbox = this.consentDialog.getByRole("checkbox", { name: "Marketing", exact: true });
3591
- this.consentDialogMarketingCheckbox = this.consentDialog.getByRole("checkbox", { name: "Marketing", exact: true });
6065
+ this.consentDialogMarketingdCheckbox = this.consentDialog.getByRole("checkbox", { name: translate("storefront:home:consent.marketing"), exact: true });
6066
+ this.consentDialogMarketingCheckbox = this.consentDialog.getByRole("checkbox", { name: translate("storefront:home:consent.marketing"), exact: true });
3592
6067
  this.consentDialogSaveButton = this.consentDialog.getByRole("button", {
3593
6068
  name: "Save",
3594
6069
  exact: true
@@ -3603,11 +6078,11 @@ class Home {
3603
6078
  this.wishlistIcon = page.locator(".header-wishlist-icon");
3604
6079
  this.wishlistBasket = page.locator(".header-wishlist-badge");
3605
6080
  this.filterMultiSelect = page.locator(".filter-multi-select");
3606
- this.manufacturerFilter = this.filterMultiSelect.getByRole("button", { name: "Manufacturer" });
6081
+ this.manufacturerFilter = this.filterMultiSelect.getByRole("button", { name: translate("storefront:home:filters.manufacturer") });
3607
6082
  this.propertyFilters = page.locator(".filter-multi-select-properties");
3608
- this.priceFilterButton = page.getByRole("button", { name: "Price" }).first();
3609
- this.resetAllButton = page.getByRole("button", { name: "Reset all" });
3610
- this.freeShippingFilter = page.getByRole("checkbox", { name: "Free shipping" });
6083
+ this.priceFilterButton = page.getByRole("button", { name: translate("storefront:home:filters.price") }).first();
6084
+ this.resetAllButton = page.getByRole("button", { name: translate("storefront:home:filters.resetAll") });
6085
+ this.freeShippingFilter = page.getByRole("checkbox", { name: translate("storefront:home:filters.freeShipping") });
3611
6086
  this.productList = page.locator(".cms-listing-row");
3612
6087
  this.productItemNames = this.productList.locator(".product-name");
3613
6088
  this.productRatingButton = this.filterMultiSelect.locator('.btn:has-text("Rating min.")');
@@ -3765,8 +6240,8 @@ let ProductDetail$1 = class ProductDetail {
3765
6240
  page;
3766
6241
  constructor(page) {
3767
6242
  this.page = page;
3768
- this.addToCartButton = page.getByRole("button", { name: "Add to shopping cart" });
3769
- this.quantitySelect = page.getByLabel("Quantity", { exact: true });
6243
+ this.addToCartButton = page.getByRole("button", { name: translate("storefront:product:addToCart") });
6244
+ this.quantitySelect = page.getByLabel(translate("storefront:product:quantity"), { exact: true });
3770
6245
  this.productSingleImage = page.locator(".gallery-slider-single-image");
3771
6246
  this.productSinglePrice = page.locator(".product-detail-price");
3772
6247
  this.productPriceRangesRow = page.locator(".product-block-prices-row");
@@ -3774,9 +6249,9 @@ let ProductDetail$1 = class ProductDetail {
3774
6249
  this.productListingPrice = page.locator(".list-price-price");
3775
6250
  this.productListingPricePercentage = page.locator(".list-price-percentage");
3776
6251
  this.offCanvas = page.locator("offcanvas-body");
3777
- this.offCanvasCartTitle = page.getByText("Shopping cart", { exact: true });
6252
+ this.offCanvasCartTitle = page.getByText(translate("storefront:checkout:cart.shoppingCart"), { exact: true });
3778
6253
  this.offCanvasCart = page.getByRole("dialog");
3779
- this.offCanvasCartGoToCheckoutButton = page.getByRole("link", { name: "Go to checkout" });
6254
+ this.offCanvasCartGoToCheckoutButton = page.getByRole("link", { name: translate("storefront:checkout:cart.goToCheckout") });
3780
6255
  this.offCanvasLineItemImages = page.locator(".line-item-img-link");
3781
6256
  this.offCanvasSummaryTotalPrice = page.locator(".offcanvas-summary").locator('dt:has-text("Subtotal") + dd');
3782
6257
  this.wishlistAddedButton = page.locator(".product-wishlist-added");
@@ -3787,19 +6262,19 @@ let ProductDetail$1 = class ProductDetail {
3787
6262
  this.productName = page.locator(".product-detail-name");
3788
6263
  this.productReviewRating = page.locator(".product-detail-reviews .product-review-rating");
3789
6264
  this.productReviewsLink = page.locator(".product-detail-reviews .product-detail-reviews-link");
3790
- this.reviewsTab = this.page.getByRole("tab", { name: "Reviews" });
6265
+ this.reviewsTab = this.page.getByRole("tab", { name: translate("storefront:product:review.tabTitle") });
3791
6266
  this.reviewTeaserButton = this.page.locator(".product-detail-review-teaser-btn");
3792
6267
  this.reviewTeaserText = this.page.locator(".product-detail-review-teaser .h4");
3793
6268
  this.reviewListingItems = this.page.locator(".product-detail-review-item");
3794
- this.reviewEmptyListingText = this.page.getByText("No reviews found. Share your insights with others.");
6269
+ this.reviewEmptyListingText = this.page.getByText(translate("storefront:product:review.emptyText"));
3795
6270
  this.reviewLoginForm = this.page.locator(".product-detail-review-login");
3796
- this.forgottenPasswordLink = this.page.getByRole("link", { name: "I have forgotten my password." });
3797
- this.reviewLoginButton = this.page.getByRole("button", { name: "Log in" });
3798
- this.reviewEmailInput = this.page.getByLabel("Your email address");
3799
- this.reviewPasswordInput = this.page.getByLabel("Your password");
6271
+ this.forgottenPasswordLink = this.page.getByRole("link", { name: translate("storefront:account:login.forgotPassword") });
6272
+ this.reviewLoginButton = this.page.getByRole("button", { name: translate("storefront:account:login.logIn") });
6273
+ this.reviewEmailInput = this.page.getByLabel(translate("storefront:account:login.email"));
6274
+ this.reviewPasswordInput = this.page.getByLabel(translate("storefront:account:login.password"));
3800
6275
  this.reviewForm = this.page.locator(".product-detail-review-form");
3801
- this.reviewTitleInput = this.page.getByLabel("Title");
3802
- this.reviewReviewTextInput = this.page.getByLabel("Your review");
6276
+ this.reviewTitleInput = this.page.getByLabel(translate("storefront:product:review.title"));
6277
+ this.reviewReviewTextInput = this.page.getByLabel(translate("storefront:product:review.text"));
3803
6278
  this.reviewSubmitButton = this.page.locator(".btn-review-submit");
3804
6279
  this.reviewRatingPoints = this.page.locator(".product-detail-review-form-star");
3805
6280
  this.reviewRatingText = this.page.locator(".product-detail-review-form-rating-text");
@@ -3807,7 +6282,7 @@ let ProductDetail$1 = class ProductDetail {
3807
6282
  this.reviewItemRatingPoints = this.page.locator(".product-detail-review-item-points .point-full");
3808
6283
  this.reviewItemTitle = this.page.locator(".product-detail-review-item-title");
3809
6284
  this.reviewItemContent = this.page.locator(".product-detail-review-item-content");
3810
- this.reviewSubmitMessage = this.page.getByText("Thank you for submitting your review. We will examine the review and eventually unlock it, please be patient.");
6285
+ this.reviewSubmitMessage = this.page.getByText(translate("storefront:product:review.submitMessage"));
3811
6286
  }
3812
6287
  async getReviewFilterRowOptionsByName(filterOptionName) {
3813
6288
  const rowLocators = this.page.locator(".product-detail-review-filter").filter({ hasText: filterOptionName });
@@ -3836,9 +6311,9 @@ class Category {
3836
6311
  page;
3837
6312
  constructor(page) {
3838
6313
  this.page = page;
3839
- this.sortingSelect = page.getByLabel("Sorting");
3840
- this.firstProductBuyButton = page.getByRole("button", { name: "Add to shopping cart" }).first();
3841
- this.noProductsFoundAlert = page.getByText("No products found.");
6314
+ this.sortingSelect = page.getByLabel(translate("storefront:product:listing.sorting"));
6315
+ this.firstProductBuyButton = page.getByRole("button", { name: translate("storefront:product:addToCart") }).first();
6316
+ this.noProductsFoundAlert = page.getByText(translate("storefront:product:listing.noProductsFound"));
3842
6317
  }
3843
6318
  url(categoryName) {
3844
6319
  return `${categoryName}/`;
@@ -3858,12 +6333,12 @@ class CheckoutCart {
3858
6333
  page;
3859
6334
  constructor(page) {
3860
6335
  this.page = page;
3861
- this.headline = page.getByRole("heading", { name: "Shopping cart" });
3862
- this.goToCheckoutButton = page.getByRole("link", { name: "Go to checkout" });
3863
- this.enterPromoInput = page.getByLabel("Promo code");
6336
+ this.headline = page.getByRole("heading", { name: translate("storefront:checkout:cart.shoppingCart") });
6337
+ this.goToCheckoutButton = page.getByRole("link", { name: translate("storefront:checkout:cart.goToCheckout") });
6338
+ this.enterPromoInput = page.getByLabel(translate("storefront:checkout:cart.promoCode"));
3864
6339
  this.grandTotalPrice = page.locator('dt:has-text("Grand total") + dd:visible');
3865
- this.emptyCartAlert = page.getByText("Your shopping cart is empty.");
3866
- this.stockReachedAlert = page.getByText("only available 1 times");
6340
+ this.emptyCartAlert = page.getByText(translate("storefront:checkout:cart.emptyCart"));
6341
+ this.stockReachedAlert = page.getByText(translate("storefront:checkout:cart.stockReached"));
3867
6342
  this.cartLineItemImages = page.locator(".line-item-img-link");
3868
6343
  this.unitPriceInfo = page.locator(".line-item-unit-price-value");
3869
6344
  this.cartQuantityNumber = page.locator('input[name="quantity"]');
@@ -3912,16 +6387,16 @@ class OffCanvasCart {
3912
6387
  page;
3913
6388
  constructor(page) {
3914
6389
  this.page = page;
3915
- this.headline = page.getByRole("heading", { name: "Shopping cart" });
6390
+ this.headline = page.getByRole("heading", { name: translate("storefront:checkout:cart.shoppingCart") });
3916
6391
  this.itemCount = page.locator(".offcanvas-cart-header-count");
3917
- this.goToCheckoutButton = page.getByRole("link", { name: "Go to checkout" });
3918
- this.goToCartButton = page.getByRole("link", { name: "Display shopping cart" });
3919
- this.continueShoppingButton = page.getByRole("button", { name: "Continue shopping" });
6392
+ this.goToCheckoutButton = page.getByRole("link", { name: translate("storefront:checkout:cart.goToCheckout") });
6393
+ this.goToCartButton = page.getByRole("link", { name: translate("storefront:checkout:cart.displayShoppingCart") });
6394
+ this.continueShoppingButton = page.getByRole("button", { name: translate("storefront:checkout:cart.continueShopping") });
3920
6395
  this.enterPromoInput = page.locator('input[id="addPromotionOffcanvasCartInput"]');
3921
6396
  this.submitDiscountButton = page.locator("#addPromotionOffcanvasCart");
3922
6397
  this.subTotalPrice = page.locator('dt:has-text("Subtotal") + dd:visible');
3923
6398
  this.shippingCosts = page.locator('dt:has-text("Shipping costs") + dd:visible');
3924
- this.cartQuantityNumber = page.getByLabel("Quantity", { exact: true });
6399
+ this.cartQuantityNumber = page.getByLabel(translate("storefront:product:quantity"), { exact: true });
3925
6400
  }
3926
6401
  url() {
3927
6402
  throw new Error("Off Canvas Cart does not have an own url.");
@@ -3982,17 +6457,17 @@ class CheckoutConfirm {
3982
6457
  page;
3983
6458
  constructor(page) {
3984
6459
  this.page = page;
3985
- this.headline = page.getByRole("heading", { name: "Complete order" });
3986
- this.termsAndConditionsCheckbox = page.getByLabel("I have read and accepted the general terms and conditions.");
3987
- this.immediateAccessToDigitalProductCheckbox = page.getByLabel("I want immediate access to the digital content and I acknowledge that thereby I waive my right to cancel.");
6460
+ this.headline = page.getByRole("heading", { name: translate("storefront:checkout:confirm.completeOrder") });
6461
+ this.termsAndConditionsCheckbox = page.getByLabel(translate("storefront:checkout:confirm.termsAndConditions"));
6462
+ this.immediateAccessToDigitalProductCheckbox = page.getByLabel(translate("storefront:checkout:confirm.immediateAccessToDigitalProduct"));
3988
6463
  this.grandTotalPrice = page.locator(`dt:has-text('Grand total') + dd`);
3989
6464
  this.taxPrice = page.locator(`dt:text-matches('plus [0-9]\\+\\?% VAT') + dd`);
3990
- this.submitOrderButton = page.getByRole("button", { name: "Submit order" });
3991
- this.paymentCashOnDelivery = page.getByLabel("Cash on delivery");
3992
- this.paymentPaidInAdvance = page.getByLabel("Paid in advance");
3993
- this.paymentInvoice = page.getByLabel("Invoice");
3994
- this.shippingStandard = page.getByLabel("Standard");
3995
- this.shippingExpress = page.getByLabel("Express");
6465
+ this.submitOrderButton = page.getByRole("button", { name: translate("storefront:checkout:confirm.submitOrder") });
6466
+ this.paymentCashOnDelivery = page.getByLabel(translate("storefront:checkout:common.cashOnDelivery"));
6467
+ this.paymentPaidInAdvance = page.getByLabel(translate("storefront:checkout:common.paidInAdvance"));
6468
+ this.paymentInvoice = page.getByLabel(translate("storefront:checkout:common.invoice"));
6469
+ this.shippingStandard = page.getByLabel(translate("storefront:checkout:common.standard"));
6470
+ this.shippingExpress = page.getByLabel(translate("storefront:checkout:common.express"));
3996
6471
  this.cartLineItemImages = page.locator(".line-item-img-link");
3997
6472
  }
3998
6473
  url() {
@@ -4010,10 +6485,10 @@ class CheckoutFinish {
4010
6485
  orderNumberRegex = /Your order number: #(\d+)/;
4011
6486
  constructor(page) {
4012
6487
  this.page = page;
4013
- this.headline = page.getByRole("heading", { name: "Thank you for your order" });
6488
+ this.headline = page.getByRole("heading", { name: translate("storefront:checkout:finish.thankYouForOrder") });
4014
6489
  this.orderNumberText = page.getByText(this.orderNumberRegex);
4015
- this.grandTotalPrice = page.locator('dt:has-text("Grand total") + dd');
4016
- this.taxPrice = page.locator(`dt:text-matches('plus [0-9]\\+\\?% VAT') + dd`);
6490
+ this.grandTotalPrice = page.locator(`dt:has-text("${translate("storefront:checkout:finish.grandTotal")}") + dd`);
6491
+ this.taxPrice = page.locator(`dt:text-matches('${translate("storefront:checkout:finish.plusVat")} [0-9]\\+\\?${translate("storefront:checkout:finish.vatSuffix")}') + dd`);
4017
6492
  this.cartLineItemImages = page.locator(".line-item-img-link");
4018
6493
  }
4019
6494
  url() {
@@ -4066,20 +6541,20 @@ class Account {
4066
6541
  constructor(page, instanceMeta) {
4067
6542
  this.page = page;
4068
6543
  this.instanceMeta = instanceMeta;
4069
- this.headline = page.getByRole("heading", { name: "Overview" });
4070
- this.personalDataCardTitle = page.getByRole("heading", { name: "Personal data" });
4071
- this.paymentMethodCardTitle = page.getByRole("heading", { name: "Default payment method" });
4072
- this.billingAddressCardTitle = page.getByRole("heading", { name: "Default billing address" });
4073
- this.shippingAddressCardTitle = page.getByRole("heading", { name: "Default shipping address" });
4074
- this.newsletterCheckbox = page.getByLabel("Yes, I would like to");
4075
- this.newsletterRegistrationSuccessMessage = page.getByText("You have successfully subscribed to the newsletter.");
6544
+ this.headline = page.getByRole("heading", { name: translate("storefront:account:general.overview") });
6545
+ this.personalDataCardTitle = page.getByRole("heading", { name: translate("storefront:account:general.personalData") });
6546
+ this.paymentMethodCardTitle = page.getByRole("heading", { name: translate("storefront:account:general.defaultPaymentMethod") });
6547
+ this.billingAddressCardTitle = page.getByRole("heading", { name: translate("storefront:account:general.defaultBillingAddress") });
6548
+ this.shippingAddressCardTitle = page.getByRole("heading", { name: translate("storefront:account:general.defaultShippingAddress") });
6549
+ this.newsletterCheckbox = page.getByLabel(translate("storefront:account:general.newsletter"));
6550
+ this.newsletterRegistrationSuccessMessage = page.getByText(translate("storefront:account:general.newsletterRegistrationSuccess"));
4076
6551
  if (satisfies(instanceMeta.version, "<6.7")) {
4077
6552
  this.customerGroupRequestMessage = page.locator(".alert-content");
4078
6553
  } else {
4079
6554
  this.customerGroupRequestMessage = page.locator(".alert-content-container");
4080
6555
  }
4081
- this.cannotDeliverToCountryAlert = page.getByText("We can not deliver to the country that is stored in your delivery address.");
4082
- this.shippingToAddressNotPossibleAlert = page.getByText("Shipping to the selected shipping address is currently not possible.");
6556
+ this.cannotDeliverToCountryAlert = page.getByText(translate("storefront:account:general.cannotDeliverToCountry"));
6557
+ this.shippingToAddressNotPossibleAlert = page.getByText(translate("storefront:account:general.shippingNotPossible"));
4083
6558
  }
4084
6559
  async getCustomerGroupAlert(customerGroup) {
4085
6560
  return this.customerGroupRequestMessage.getByText(`Access to customer group "${customerGroup}" requested.`);
@@ -4135,41 +6610,41 @@ class AccountLogin {
4135
6610
  page;
4136
6611
  constructor(page) {
4137
6612
  this.page = page;
4138
- this.emailInput = page.getByLabel("Your email address");
4139
- this.passwordInput = page.getByLabel("Your password");
4140
- this.loginButton = page.getByRole("button", { name: "Log in" });
4141
- this.forgotPasswordLink = page.getByRole("link", { name: "I have forgotten my password." });
4142
- this.logoutLink = page.getByRole("link", { name: "Log out" });
4143
- this.invalidCredentialsAlert = page.getByText("Could not find an account that matches the given credentials.");
6613
+ this.emailInput = page.getByLabel(translate("storefront:login:emailAddress"));
6614
+ this.passwordInput = page.getByLabel(translate("storefront:login:password"));
6615
+ this.loginButton = page.getByRole("button", { name: translate("storefront:login:loginButton") });
6616
+ this.forgotPasswordLink = page.getByRole("link", { name: translate("storefront:login:forgotPassword") });
6617
+ this.logoutLink = page.getByRole("link", { name: translate("storefront:login:logout") });
6618
+ this.invalidCredentialsAlert = page.getByText(translate("storefront:login:invalidCredentials"));
4144
6619
  this.personalFormArea = page.locator(".register-personal");
4145
6620
  this.billingAddressFormArea = page.locator(".register-billing");
4146
6621
  this.accountTypeSelect = this.personalFormArea.locator(".contact-select");
4147
- this.salutationSelect = this.personalFormArea.locator(".form-group").filter({ has: page.getByLabel("Salutation") }).locator(".form-select");
4148
- this.firstNameInput = this.personalFormArea.getByLabel("First name");
4149
- this.lastNameInput = this.personalFormArea.getByLabel("Last name");
4150
- this.companyInput = this.personalFormArea.getByLabel("Company");
4151
- this.departmentInput = this.personalFormArea.getByLabel("Department");
6622
+ this.salutationSelect = this.personalFormArea.locator(".form-group").filter({ has: page.getByLabel(translate("storefront:login:register.salutation")) }).locator(".form-select");
6623
+ this.firstNameInput = this.personalFormArea.getByLabel(translate("storefront:login:register.firstName"));
6624
+ this.lastNameInput = this.personalFormArea.getByLabel(translate("storefront:login:register.lastName"));
6625
+ this.companyInput = this.personalFormArea.getByLabel(translate("storefront:login:register.company"));
6626
+ this.departmentInput = this.personalFormArea.getByLabel(translate("storefront:login:register.department"));
4152
6627
  this.vatRegNoInput = this.personalFormArea.locator('input[id="vatIds"]');
4153
- this.registerEmailInput = this.personalFormArea.getByLabel("Email address");
4154
- this.registerPasswordInput = this.personalFormArea.getByLabel("Password");
4155
- this.streetAddressInput = this.billingAddressFormArea.getByLabel("Street address");
4156
- this.cityInput = this.billingAddressFormArea.getByLabel("City");
4157
- this.countryInput = this.billingAddressFormArea.getByLabel("Country");
4158
- this.postalCodeInput = this.billingAddressFormArea.getByLabel("Postal code");
4159
- this.differentShippingAddressCheckbox = page.getByRole("checkbox", { name: "Shipping and billing address do not match." });
6628
+ this.registerEmailInput = this.personalFormArea.getByLabel(translate("storefront:login:register.emailAddress"));
6629
+ this.registerPasswordInput = this.personalFormArea.getByLabel(translate("storefront:login:register.password"));
6630
+ this.streetAddressInput = this.billingAddressFormArea.getByLabel(translate("storefront:login:register.streetAddress"));
6631
+ this.cityInput = this.billingAddressFormArea.getByLabel(translate("storefront:login:register.city"));
6632
+ this.countryInput = this.billingAddressFormArea.getByLabel(translate("storefront:login:register.country"));
6633
+ this.postalCodeInput = this.billingAddressFormArea.getByLabel(translate("storefront:login:register.postalCode"));
6634
+ this.differentShippingAddressCheckbox = page.getByRole("checkbox", { name: translate("storefront:login:register.differentShippingAddress") });
4160
6635
  this.registerShippingAddressFormArea = page.locator(".register-shipping");
4161
- this.shippingAddressSalutationSelect = this.registerShippingAddressFormArea.locator(".form-group").filter({ has: page.getByLabel("Salutation") }).locator(".form-select");
4162
- this.shippingAddressFirstNameInput = this.registerShippingAddressFormArea.getByLabel("First name");
4163
- this.shippingAddressLastNameInput = this.registerShippingAddressFormArea.getByLabel("Last name");
4164
- this.shippingAddressStreetAddressInput = this.registerShippingAddressFormArea.getByLabel("Street address");
4165
- this.shippingAddressCityInput = this.registerShippingAddressFormArea.getByLabel("City");
4166
- this.shippingAddressCountryInput = this.registerShippingAddressFormArea.getByLabel("Country");
4167
- this.shippingAddressPostalCodeInput = this.registerShippingAddressFormArea.getByLabel("Postal code");
4168
- this.shippingAddressStateInput = this.registerShippingAddressFormArea.getByLabel("State");
4169
- this.registerButton = page.getByRole("button", { name: "Continue" });
4170
- this.logoutLink = page.getByRole("link", { name: "Log out" });
4171
- this.successAlert = page.getByText("Successfully logged out.");
4172
- this.passwordUpdatedAlert = page.getByText("Your password has been updated.");
6636
+ this.shippingAddressSalutationSelect = this.registerShippingAddressFormArea.locator(".form-group").filter({ has: page.getByLabel(translate("storefront:login:register.salutation")) }).locator(".form-select");
6637
+ this.shippingAddressFirstNameInput = this.registerShippingAddressFormArea.getByLabel(translate("storefront:login:register.firstName"));
6638
+ this.shippingAddressLastNameInput = this.registerShippingAddressFormArea.getByLabel(translate("storefront:login:register.lastName"));
6639
+ this.shippingAddressStreetAddressInput = this.registerShippingAddressFormArea.getByLabel(translate("storefront:login:register.streetAddress"));
6640
+ this.shippingAddressCityInput = this.registerShippingAddressFormArea.getByLabel(translate("storefront:login:register.city"));
6641
+ this.shippingAddressCountryInput = this.registerShippingAddressFormArea.getByLabel(translate("storefront:login:register.country"));
6642
+ this.shippingAddressPostalCodeInput = this.registerShippingAddressFormArea.getByLabel(translate("storefront:login:register.postalCode"));
6643
+ this.shippingAddressStateInput = this.registerShippingAddressFormArea.getByLabel(translate("storefront:login:register.state"));
6644
+ this.registerButton = page.getByRole("button", { name: translate("storefront:login:register.continue") });
6645
+ this.logoutLink = page.getByRole("link", { name: translate("storefront:login:logout") });
6646
+ this.successAlert = page.getByText(translate("storefront:login:successfulLogout"));
6647
+ this.passwordUpdatedAlert = page.getByText(translate("storefront:login:passwordUpdated"));
4173
6648
  this.greCaptchaV2Container = this.page.locator(".grecaptcha-v2-container");
4174
6649
  this.greCaptchaV2Input = this.page.locator(".grecaptcha-v2-input");
4175
6650
  this.greCaptchaV3Input = this.page.locator(".grecaptcha_v3-input");
@@ -4201,16 +6676,16 @@ class AccountRecover {
4201
6676
  this.page = page;
4202
6677
  this.passwordRecoveryForm = page.locator(".account-recover-password-form");
4203
6678
  const cardTitle = this.passwordRecoveryForm.locator(".card-title");
4204
- this.title = cardTitle.getByText("Password recovery");
4205
- this.subtitle = cardTitle.getByText("We will send you a confirmation email. Click the link in that email in order to change your password.");
4206
- this.emailInput = this.passwordRecoveryForm.getByLabel("Your email address");
4207
- this.requestEmailButton = this.passwordRecoveryForm.getByRole("button", { name: "Request email" });
4208
- this.backButton = this.passwordRecoveryForm.getByRole("link", { name: "Back" });
4209
- this.passwordResetEmailSentMessage = page.getByText("If the provided email address is registered, a confirmation email including a password reset link has been sent.");
4210
- this.newPasswordInput = page.getByLabel("New password");
4211
- this.newPasswordConfirmInput = page.getByLabel("Password confirmation");
4212
- this.changePasswordButton = page.getByRole("button", { name: "Change password" });
4213
- this.invalidLinkMessage = page.getByText("The password reset link seems to be invalid.");
6679
+ this.title = cardTitle.getByText(translate("storefront:recover:passwordRecovery"));
6680
+ this.subtitle = cardTitle.getByText(translate("storefront:recover:subtitle"));
6681
+ this.emailInput = this.passwordRecoveryForm.getByLabel(translate("storefront:login:emailAddress"));
6682
+ this.requestEmailButton = this.passwordRecoveryForm.getByRole("button", { name: translate("storefront:recover:requestEmail") });
6683
+ this.backButton = this.passwordRecoveryForm.getByRole("link", { name: translate("storefront:recover:back") });
6684
+ this.passwordResetEmailSentMessage = page.getByText(translate("storefront:recover:emailSent"));
6685
+ this.newPasswordInput = page.getByLabel(translate("storefront:recover:newPassword"));
6686
+ this.newPasswordConfirmInput = page.getByLabel(translate("storefront:recover:passwordConfirmation"));
6687
+ this.changePasswordButton = page.getByRole("button", { name: translate("storefront:recover:changePassword") });
6688
+ this.invalidLinkMessage = page.getByText(translate("storefront:recover:invalidLink"));
4214
6689
  }
4215
6690
  url(recoverLink) {
4216
6691
  if (recoverLink) {
@@ -4246,16 +6721,16 @@ class AccountProfile {
4246
6721
  constructor(page, instanceMeta) {
4247
6722
  this.page = page;
4248
6723
  this.instanceMeta = instanceMeta;
4249
- this.salutationSelect = page.getByLabel("Salutation");
4250
- this.firstNameInput = page.getByLabel("First name");
4251
- this.lastNameInput = page.getByLabel("Last name");
4252
- this.saveProfileButton = page.locator("#profilePersonalForm").getByRole("button", { name: "Save changes" });
4253
- this.changeEmailButton = page.getByRole("button", { name: "Change email address" });
6724
+ this.salutationSelect = page.getByLabel(translate("storefront:account:common.salutation"));
6725
+ this.firstNameInput = page.getByLabel(translate("storefront:account:common.firstName"));
6726
+ this.lastNameInput = page.getByLabel(translate("storefront:account:common.lastName"));
6727
+ this.saveProfileButton = page.locator("#profilePersonalForm").getByRole("button", { name: translate("storefront:account:profile.saveChanges") });
6728
+ this.changeEmailButton = page.getByRole("button", { name: translate("storefront:account:profile.changeEmail") });
4254
6729
  this.emailAddressInput = page.locator('input[id="personalMail"]');
4255
- this.emailAddressConfirmInput = page.getByLabel("Email address confirmation");
6730
+ this.emailAddressConfirmInput = page.getByLabel(translate("storefront:account:profile.emailConfirmation"));
4256
6731
  this.emailConfirmPasswordInput = page.locator('input[id="personalMailPasswordCurrent"]');
4257
- this.saveEmailAddressButton = page.locator("#profileMailForm").getByRole("button", { name: "Save changes" });
4258
- this.changePasswordButton = page.getByRole("button", { name: "Change password" });
6732
+ this.saveEmailAddressButton = page.locator("#profileMailForm").getByRole("button", { name: translate("storefront:account:profile.saveChanges") });
6733
+ this.changePasswordButton = page.getByRole("button", { name: translate("storefront:account:common.changePassword") });
4259
6734
  this.newPasswordInput = page.locator('input[id="newPassword"]');
4260
6735
  if (instanceMeta.features["ACCESSIBILITY_TWEAKS"]) {
4261
6736
  this.newPasswordConfirmInput = page.locator('input[name="password[newPasswordConfirm]"]');
@@ -4264,20 +6739,20 @@ class AccountProfile {
4264
6739
  this.newPasswordConfirmInput = page.locator('input[id="passwordConfirmation"]');
4265
6740
  this.currentPasswordInput = page.locator('input[id="password"]');
4266
6741
  }
4267
- this.saveNewPasswordButton = page.locator("#profilePasswordForm").getByRole("button", { name: "Save changes" });
6742
+ this.saveNewPasswordButton = page.locator("#profilePasswordForm").getByRole("button", { name: translate("storefront:account:profile.saveChanges") });
4268
6743
  this.loginDataEmailAddress = page.locator(".account-profile-mail");
4269
- this.emailUpdateMessage = page.getByText("Your email address has been updated.");
4270
- this.passwordUpdateMessage = page.getByText("Your password has been updated.");
6744
+ this.emailUpdateMessage = page.getByText(translate("storefront:account:profile.emailUpdated"));
6745
+ this.passwordUpdateMessage = page.getByText(translate("storefront:account:common.passwordUpdated"));
4271
6746
  if (instanceMeta.features["ACCESSIBILITY_TWEAKS"]) {
4272
- this.emailValidationAlert = page.getByText("Invalid email address.");
6747
+ this.emailValidationAlert = page.getByText(translate("storefront:account:profile.invalidEmail"));
4273
6748
  } else {
4274
6749
  this.emailValidationAlert = page.locator(".was-validated");
4275
6750
  }
4276
- this.emailUpdateFailureAlert = page.getByText("Email address could not be changed.");
6751
+ this.emailUpdateFailureAlert = page.getByText(translate("storefront:account:profile.emailUpdateFailure"));
4277
6752
  if (instanceMeta.features["ACCESSIBILITY_TWEAKS"]) {
4278
- this.passwordUpdateFailureAlert = page.getByText("Input is too short.");
6753
+ this.passwordUpdateFailureAlert = page.getByText(translate("storefront:account:profile.passwordTooShort"));
4279
6754
  } else {
4280
- this.passwordUpdateFailureAlert = page.getByText("Password could not be changed.");
6755
+ this.passwordUpdateFailureAlert = page.getByText(translate("storefront:account:profile.passwordUpdateFailure"));
4281
6756
  }
4282
6757
  }
4283
6758
  url() {
@@ -4298,33 +6773,37 @@ class AccountOrder {
4298
6773
  page;
4299
6774
  constructor(page) {
4300
6775
  this.page = page;
4301
- this.orderExpandButton = page.getByRole("button", { name: /Expand|Show details/ }).first();
6776
+ this.orderExpandButton = page.getByRole("button", { name: new RegExp(`${translate("storefront:account:orders.expand")}|${translate("storefront:account:orders.showDetails")}`) }).first();
4302
6777
  this.cartLineItemImages = page.locator(".line-item-img-link");
4303
- this.digitalProductDownloadButton = page.getByRole("link", { name: "Download" }).first();
4304
- this.dialogOrderCancel = page.getByRole("dialog", { name: "Cancel order" });
4305
- this.dialogOrderCancelButton = this.dialogOrderCancel.getByRole("button", { name: "Cancel order" });
4306
- this.dialogBackButton = this.dialogOrderCancel.getByRole("button", { name: "Back" });
6778
+ this.digitalProductDownloadButton = page.getByRole("link", { name: translate("storefront:account:orders.download") }).first();
6779
+ this.dialogOrderCancel = page.getByRole("dialog", { name: translate("storefront:account:orders.cancelOrder") });
6780
+ this.dialogOrderCancelButton = this.dialogOrderCancel.getByRole("button", { name: translate("storefront:account:orders.cancelOrder") });
6781
+ this.dialogBackButton = this.dialogOrderCancel.getByRole("button", { name: translate("storefront:account:common.back") });
4307
6782
  this.orderDetails = page.locator(".order-item-detail");
4308
6783
  this.invoiceHTML = page.getByRole("link", { name: ".html" });
4309
- this.creditItem = page.locator('.line-item:has-text("CreditItem")');
6784
+ this.creditItem = page.locator(`.line-item:has-text("${translate("storefront:account:orders.creditItem")}")`);
4310
6785
  }
4311
6786
  async getOrderByOrderNumber(orderNumber) {
4312
- const orderItem = this.page.getByRole("listitem").getByLabel(`Order number ${orderNumber}`);
6787
+ const orderItem = this.page.getByRole("listitem").getByLabel(`${translate("storefront:account:orders.orderNumber")} ${orderNumber}`);
4313
6788
  const orderStatus = orderItem.locator(".order-table-header-order-status");
4314
6789
  const orderHeading = orderItem.locator(".order-table-header-heading");
4315
- const orderActionsButton = orderItem.getByLabel("Actions");
4316
- const orderCancelButton = orderItem.getByRole("button", { name: "Cancel order" });
4317
- const orderRepeatButton = orderItem.getByRole("button", { name: "Repeat order" });
4318
- const orderChangePaymentMethodButton = orderItem.getByRole("link", { name: "Change payment method" });
6790
+ const orderActionsButton = orderItem.getByLabel(translate("storefront:account:orders.actions"));
6791
+ const orderCancelButton = orderItem.getByRole("button", { name: translate("storefront:account:orders.cancelOrder") });
6792
+ const orderRepeatButton = orderItem.getByRole("button", { name: translate("storefront:account:orders.repeatOrder") });
6793
+ const orderChangePaymentMethodButton = orderItem.getByRole("link", { name: translate("storefront:account:orders.changePaymentMethod") });
4319
6794
  const orderShippingStatus = orderItem.locator(".order-table-body-value").nth(1);
4320
6795
  const orderPaymentStatus = orderItem.locator(".order-table-body-value").nth(2);
4321
6796
  const orderPaymentMethod = orderItem.locator(".order-table-body-value").nth(3);
4322
6797
  const orderShippingMethod = orderItem.locator(".order-table-body-value").nth(4);
4323
- const orderDetailButton = orderItem.getByRole("button", { name: /Expand|Show details/ });
6798
+ const orderDetailButton = orderItem.getByRole("button", {
6799
+ name: new RegExp(`${translate("storefront:account:orders.expand")}|${translate("storefront:account:orders.showDetails")}`)
6800
+ });
4324
6801
  const orderImage = orderItem.locator(".line-item-img-link");
4325
- const taxPrice = orderItem.locator(`dt:text-matches('plus [0-9]\\+\\?% VAT') + dd`);
4326
- const shippingCosts = orderItem.locator(`dt:text-matches('Shipping costs:') + dd`);
4327
- const totalGross = orderItem.locator(`dt:text-matches('Total (gross):') + dd`);
6802
+ const taxPrice = orderItem.locator(
6803
+ `dt:text-matches('${translate("storefront:account:orders.plusVat")} [0-9]\\+\\?${translate("storefront:account:orders.vatSuffix")}') + dd`
6804
+ );
6805
+ const shippingCosts = orderItem.locator(`dt:text-matches('${translate("storefront:account:orders.shippingCosts")}') + dd`);
6806
+ const totalGross = orderItem.locator(`dt:text-matches('${translate("storefront:account:orders.totalGross")}') + dd`);
4328
6807
  return {
4329
6808
  orderStatus,
4330
6809
  orderHeading,
@@ -4366,19 +6845,19 @@ class AccountAddresses {
4366
6845
  this.page = page;
4367
6846
  this.instanceMeta = instanceMeta;
4368
6847
  this.addNewAddressButton = page.getByRole("link", { name: /Add (new )?address/ });
4369
- this.editBillingAddressButton = page.getByRole("link", { name: "Edit address" }).first();
4370
- this.editShippingAddressButton = page.getByRole("link", { name: "Edit address" }).nth(1);
4371
- this.useDefaultBillingAddressButton = page.getByRole("button", { name: "Use as default billing address" });
4372
- this.useDefaultShippingAddressButton = page.getByRole("button", { name: "Use as default shipping address" });
6848
+ this.editBillingAddressButton = page.getByRole("link", { name: translate("storefront:address:actions.editAddress") }).first();
6849
+ this.editShippingAddressButton = page.getByRole("link", { name: translate("storefront:address:actions.editAddress") }).nth(1);
6850
+ this.useDefaultBillingAddressButton = page.getByRole("button", { name: translate("storefront:address:actions.useAsDefaultBilling") });
6851
+ this.useDefaultShippingAddressButton = page.getByRole("button", { name: translate("storefront:address:actions.useAsDefaultShipping") });
4373
6852
  if (satisfies(instanceMeta.version, "<6.7")) {
4374
6853
  this.availableAddresses = page.locator(".other-address").locator(".address").nth(1);
4375
- this.deliveryNotPossibleAlert = this.availableAddresses.getByText("A delivery to this country is not possible.");
6854
+ this.deliveryNotPossibleAlert = this.availableAddresses.getByText(translate("storefront:address:messages.deliveryNotPossible"));
4376
6855
  } else {
4377
6856
  this.availableAddresses = page.locator(".address-manager-list-wrapper");
4378
- this.addressDropdownButton = this.availableAddresses.getByRole("button", { name: "Address options" }).first();
4379
- this.addressDropdownButtons = this.availableAddresses.getByRole("button", { name: "Address options" });
4380
- this.availableAddressesUseAsBillingAddress = this.availableAddresses.getByRole("button", { name: "Use as default billing address" });
4381
- this.availableAddressesUseAsShippingAddress = this.availableAddresses.getByRole("button", { name: "Use as default shipping address" });
6857
+ this.addressDropdownButton = this.availableAddresses.getByRole("button", { name: translate("storefront:address:actions.addressOptions") }).first();
6858
+ this.addressDropdownButtons = this.availableAddresses.getByRole("button", { name: translate("storefront:address:actions.addressOptions") });
6859
+ this.availableAddressesUseAsBillingAddress = this.availableAddresses.getByRole("button", { name: translate("storefront:address:actions.useAsDefaultBilling") });
6860
+ this.availableAddressesUseAsShippingAddress = this.availableAddresses.getByRole("button", { name: translate("storefront:address:actions.useAsDefaultShipping") });
4382
6861
  }
4383
6862
  }
4384
6863
  url() {
@@ -4394,10 +6873,10 @@ class AccountPayment {
4394
6873
  page;
4395
6874
  constructor(page) {
4396
6875
  this.page = page;
4397
- this.cashOnDeliveryOption = page.getByLabel("Cash on delivery");
4398
- this.paidInAdvanceOption = page.getByLabel("Paid in advance");
4399
- this.invoiceOption = page.getByLabel("Invoice");
4400
- this.changeDefaultPaymentButton = page.getByRole("button", { name: "Change", exact: true });
6876
+ this.cashOnDeliveryOption = page.getByLabel(translate("storefront:payment:methods.cashOnDelivery"));
6877
+ this.paidInAdvanceOption = page.getByLabel(translate("storefront:payment:methods.paidInAdvance"));
6878
+ this.invoiceOption = page.getByLabel(translate("storefront:payment:methods.invoice"));
6879
+ this.changeDefaultPaymentButton = page.getByRole("button", { name: translate("storefront:payment:actions.change"), exact: true });
4401
6880
  }
4402
6881
  url() {
4403
6882
  return "account/payment";
@@ -4482,16 +6961,16 @@ class CheckoutOrderEdit {
4482
6961
  page;
4483
6962
  constructor(page) {
4484
6963
  this.page = page;
4485
- this.completePaymentButton = page.getByRole("button", { name: "Complete payment" });
4486
- this.orderCancelButton = page.getByRole("button", { name: "Cancel order" });
4487
- this.dialogOrderCancel = page.getByRole("dialog", { name: "Cancel order" });
4488
- this.dialogOrderCancelButton = this.dialogOrderCancel.getByRole("button", { name: "Cancel order" });
4489
- this.dialogBackButton = this.dialogOrderCancel.getByRole("button", { name: "Back" });
4490
- this.paymentCashOnDelivery = page.getByLabel("Cash on delivery");
4491
- this.paymentPaidInAdvance = page.getByLabel("Paid in advance");
4492
- this.paymentInvoice = page.getByLabel("Invoice");
4493
- this.shippingStandard = page.getByLabel("Standard");
4494
- this.shippingExpress = page.getByLabel("Express");
6964
+ this.completePaymentButton = page.getByRole("button", { name: translate("storefront:payment:actions.completePayment") });
6965
+ this.orderCancelButton = page.getByRole("button", { name: translate("storefront:order:actions.cancelOrder") });
6966
+ this.dialogOrderCancel = page.getByRole("dialog", { name: translate("storefront:order:actions.cancelOrder") });
6967
+ this.dialogOrderCancelButton = this.dialogOrderCancel.getByRole("button", { name: translate("storefront:order:actions.cancelOrder") });
6968
+ this.dialogBackButton = this.dialogOrderCancel.getByRole("button", { name: translate("storefront:order:actions.back") });
6969
+ this.paymentCashOnDelivery = page.getByLabel(translate("storefront:payment:methods.cashOnDelivery"));
6970
+ this.paymentPaidInAdvance = page.getByLabel(translate("storefront:payment:methods.paidInAdvance"));
6971
+ this.paymentInvoice = page.getByLabel(translate("storefront:payment:methods.invoice"));
6972
+ this.shippingStandard = page.getByLabel(translate("storefront:order:shipping.standard"));
6973
+ this.shippingExpress = page.getByLabel(translate("storefront:order:shipping.express"));
4495
6974
  }
4496
6975
  url(orderUuid) {
4497
6976
  return `account/order/edit/${orderUuid}`;
@@ -4521,13 +7000,13 @@ class AccountAddressCreate {
4521
7000
  page;
4522
7001
  constructor(page) {
4523
7002
  this.page = page;
4524
- this.salutationDropdown = page.getByRole("combobox", { name: "Salutation" });
4525
- this.firstNameInput = page.getByRole("textbox", { name: "First name" });
4526
- this.lastNameInput = page.getByRole("textbox", { name: "Last name" });
4527
- this.companyInput = page.getByRole("textbox", { name: "Company" });
4528
- this.departmentInput = page.getByRole("textbox", { name: "Department" });
4529
- this.streetInput = page.getByRole("textbox", { name: "Street" });
4530
- this.zipcodeInput = page.getByRole("textbox", { name: "Postal code" });
7003
+ this.salutationDropdown = page.getByRole("combobox", { name: translate("storefront:address:common.salutation") });
7004
+ this.firstNameInput = page.getByRole("textbox", { name: translate("storefront:address:common.firstName") });
7005
+ this.lastNameInput = page.getByRole("textbox", { name: translate("storefront:address:common.lastName") });
7006
+ this.companyInput = page.getByRole("textbox", { name: translate("storefront:address:common.company") });
7007
+ this.departmentInput = page.getByRole("textbox", { name: translate("storefront:address:common.department") });
7008
+ this.streetInput = page.getByRole("textbox", { name: translate("storefront:address:common.street") });
7009
+ this.zipcodeInput = page.getByRole("textbox", { name: translate("storefront:address:common.postalCode") });
4531
7010
  this.cityInput = page.locator("#addressAddressCity");
4532
7011
  this.countryDropdown = page.locator("#addressAddressCountry");
4533
7012
  this.stateDropdown = page.locator("#addressAddressCountryState");
@@ -4546,10 +7025,10 @@ class PageNotFound {
4546
7025
  page;
4547
7026
  constructor(page) {
4548
7027
  this.page = page;
4549
- this.pageNotFoundImage = page.getByAltText("Page not found");
4550
- this.headline = page.getByRole("heading", { name: "Page not found" });
4551
- this.pageNotFoundMessage = page.getByText(`We are sorry, the page you're looking for could not be found. It may no longer exist or may have been moved.`);
4552
- this.backToShopButton = page.getByRole("link", { name: "Back to shop" });
7028
+ this.pageNotFoundImage = page.getByAltText(translate("storefront:pageNotFound:title"));
7029
+ this.headline = page.getByRole("heading", { name: translate("storefront:pageNotFound:title") });
7030
+ this.pageNotFoundMessage = page.getByText(translate("storefront:pageNotFound:message"));
7031
+ this.backToShopButton = page.getByRole("link", { name: translate("storefront:pageNotFound:backToShop") });
4553
7032
  }
4554
7033
  url() {
4555
7034
  return "non-existing-page";
@@ -4593,26 +7072,26 @@ class ContactForm extends Home {
4593
7072
  constructor(page, instanceMeta) {
4594
7073
  super(page);
4595
7074
  this.instanceMeta = instanceMeta;
4596
- this.contactWrapper = this.page.locator(".card").filter({ has: this.page.getByText("Contact") });
7075
+ this.contactWrapper = this.page.locator(".card").filter({ has: this.page.getByText(translate("storefront:contact:title")) });
4597
7076
  this.formFieldFeedback = this.contactWrapper.locator(".form-field-feedback");
4598
7077
  this.formAlert = this.page.getByRole("alert");
4599
7078
  this.contactSuccessMessage = this.page.locator(".confirm-message");
4600
7079
  if (satisfies(instanceMeta.version, "<6.7") && !instanceMeta.features["ACCESSIBILITY_TWEAKS"]) {
4601
- this.contactModal = this.page.getByRole("dialog").filter({ has: this.page.getByText("Contact") });
7080
+ this.contactModal = this.page.getByRole("dialog").filter({ has: this.page.getByText(translate("storefront:contact:title")) });
4602
7081
  this.contactWrapper = this.contactModal;
4603
7082
  this.contactSuccessModal = this.page.getByRole("dialog").filter({ has: this.page.locator(".confirm-message") });
4604
7083
  this.contactSuccessMessage = this.contactSuccessModal.locator(".confirm-message");
4605
7084
  }
4606
7085
  this.basicCaptcha = this.contactWrapper.locator(".basic-captcha");
4607
- this.salutationSelect = this.contactWrapper.getByLabel("Salutation");
4608
- this.firstNameInput = this.contactWrapper.getByLabel("First name");
4609
- this.lastNameInput = this.contactWrapper.getByLabel("Last name");
4610
- this.emailInput = this.contactWrapper.getByLabel("Your email address");
4611
- this.phoneInput = this.contactWrapper.getByLabel("Phone");
4612
- this.subjectInput = this.contactWrapper.getByLabel("Subject");
4613
- this.commentInput = this.contactWrapper.getByLabel("Comment");
4614
- this.privacyPolicyCheckbox = this.contactWrapper.getByRole("checkbox", { name: "By selecting continue you confirm that you have read and agree to our" });
4615
- this.submitButton = this.contactWrapper.getByRole("button", { name: "Submit" });
7086
+ this.salutationSelect = this.contactWrapper.getByLabel(translate("storefront:contact:form.salutation"));
7087
+ this.firstNameInput = this.contactWrapper.getByLabel(translate("storefront:contact:form.firstName"));
7088
+ this.lastNameInput = this.contactWrapper.getByLabel(translate("storefront:contact:form.lastName"));
7089
+ this.emailInput = this.contactWrapper.getByLabel(translate("storefront:contact:form.emailAddress"));
7090
+ this.phoneInput = this.contactWrapper.getByLabel(translate("storefront:contact:form.phone"));
7091
+ this.subjectInput = this.contactWrapper.getByLabel(translate("storefront:contact:form.subject"));
7092
+ this.commentInput = this.contactWrapper.getByLabel(translate("storefront:contact:form.comment"));
7093
+ this.privacyPolicyCheckbox = this.contactWrapper.getByRole("checkbox", { name: translate("storefront:contact:form.privacyPolicy") });
7094
+ this.submitButton = this.contactWrapper.getByRole("button", { name: translate("storefront:contact:form.submit") });
4616
7095
  this.cardTitle = this.contactWrapper.locator(".card-title");
4617
7096
  this.basicCaptcha = this.contactWrapper.locator(".basic-captcha");
4618
7097
  this.greCaptchaV2Container = this.contactWrapper.locator(".grecaptcha-v2-container");
@@ -4666,7 +7145,7 @@ class Footer {
4666
7145
  this.footerContent = page.locator(".footer-column-content-inner");
4667
7146
  this.footerHotline = page.locator(".footer-contact-hotline");
4668
7147
  this.footerContactForm = page.locator(".footer-contact-form");
4669
- this.footerContactFormLink = page.getByRole("link", { name: "contact form" });
7148
+ this.footerContactFormLink = page.getByRole("link", { name: translate("storefront:navigation:footer.contactForm") });
4670
7149
  }
4671
7150
  url() {
4672
7151
  throw new Error("Footer does not have an own url.");
@@ -4806,9 +7285,9 @@ const test$7 = test$e.extend({
4806
7285
  async function getCustomFieldCardLocators(page, customFieldSetName, customFieldName, instanceMeta) {
4807
7286
  let customFieldCard;
4808
7287
  if (satisfies(instanceMeta.version, "<6.7")) {
4809
- customFieldCard = page.locator(".sw-card").filter({ hasText: "Custom fields" });
7288
+ customFieldCard = page.locator(".sw-card").filter({ hasText: translate("administration:customField:general.customFields") });
4810
7289
  } else {
4811
- customFieldCard = page.locator(".mt-card").filter({ hasText: "Custom fields" });
7290
+ customFieldCard = page.locator(".mt-card").filter({ hasText: translate("administration:customField:general.customFields") });
4812
7291
  }
4813
7292
  const customFieldSetTab = customFieldCard.getByText(customFieldSetName);
4814
7293
  const customFieldLabel = customFieldCard.locator(".sw-custom-field-set-renderer").locator(".sw-field__label").getByText(customFieldName);
@@ -4923,8 +7402,8 @@ class ProductDetail {
4923
7402
  this.reviewsTabLink = page.getByRole("tab", { name: "Reviews" });
4924
7403
  this.manufacturerDropdownText = page.locator(".sw-select-product__select_manufacturer");
4925
7404
  this.priceGrossInput = page.locator("#sw-price-field-gross").first();
4926
- this.stockInput = page.getByPlaceholder("Enter quantity in stock...");
4927
- this.restockTimeInput = page.getByPlaceholder("Enter restock time in days...");
7405
+ this.stockInput = page.getByPlaceholder(translate("administration:product:detail.stockPlaceholder"));
7406
+ this.restockTimeInput = page.getByPlaceholder(translate("administration:product:detail.restockTimePlaceholder"));
4928
7407
  this.activeForAllSalesChannelsToggle = page.locator(".sw-field--product-active").getByRole("checkbox");
4929
7408
  this.tagsInput = page.locator(".sw-product-category-form__tag-field");
4930
7409
  this.saleChannelsInput = page.locator(".sw-product-detail__select-visibility");
@@ -4943,8 +7422,8 @@ class ProductDetail {
4943
7422
  this.variantsSaveButton = this.variantsModal.getByRole("button", { name: "Save variants" });
4944
7423
  this.propertyName = (propertyName) => this.variantsModal.getByText(propertyName);
4945
7424
  this.propertyValueCheckbox = (propertyValueName) => this.variantsModal.getByRole("row", { name: propertyValueName }).getByRole("checkbox");
4946
- this.propertyGroupColor = this.variantsModal.getByText("Color").first();
4947
- this.propertyGroupSize = this.variantsModal.getByText("Size").first();
7425
+ this.propertyGroupColor = this.variantsModal.getByText(translate("administration:product:detail.colorProperty")).first();
7426
+ this.propertyGroupSize = this.variantsModal.getByText(translate("administration:product:detail.sizeProperty")).first();
4948
7427
  this.propertyOptionGrid = this.variantsModal.locator(".sw-property-search__tree-selection__option_grid");
4949
7428
  this.propertyOptionColorBlue = this.propertyOptionGrid.getByRole("row", { name: "Blue" }).getByRole("checkbox");
4950
7429
  this.propertyOptionColorRed = this.propertyOptionGrid.getByRole("row", { name: "Red" }).getByRole("checkbox");
@@ -4953,9 +7432,9 @@ class ProductDetail {
4953
7432
  this.propertyOptionSizeMedium = this.propertyOptionGrid.getByRole("row", { name: "Medium" }).getByRole("checkbox");
4954
7433
  this.propertyOptionSizeLarge = this.propertyOptionGrid.getByRole("row", { name: "Large" }).getByRole("checkbox");
4955
7434
  if (satisfies(instanceMeta.version, "<6.7")) {
4956
- this.customFieldCard = page.locator(".sw-card").getByText("Custom fields");
7435
+ this.customFieldCard = page.locator(".sw-card").getByText(translate("administration:customField:general.customFields"));
4957
7436
  } else {
4958
- this.customFieldCard = page.locator(".mt-card").getByText("Custom fields");
7437
+ this.customFieldCard = page.locator(".mt-card").getByText(translate("administration:customField:general.customFields"));
4959
7438
  }
4960
7439
  }
4961
7440
  async getCustomFieldSetCardContentByName(customFieldSetName) {
@@ -5012,19 +7491,19 @@ class OrderDetail {
5012
7491
  this.lineItemsTable = page.locator(".sw-data-grid__table");
5013
7492
  this.documentType = page.locator(".sw-data-grid__cell--documentType-name");
5014
7493
  this.contextMenu = page.locator(".sw-context-menu");
5015
- this.contextMenuSendDocument = this.contextMenu.getByText("Send document");
5016
- this.contextMenuButton = page.getByLabel("Open actions menu");
7494
+ this.contextMenuSendDocument = this.contextMenu.getByText(translate("administration:order:contextMenu.sendDocument"));
7495
+ this.contextMenuButton = page.getByLabel(translate("administration:order:detail.openActionsMenu"));
5017
7496
  this.sendDocumentModal = page.locator(".sw-order-send-document-modal");
5018
- this.sendDocumentButton = page.getByRole("button").getByText("Send document");
7497
+ this.sendDocumentButton = page.getByRole("button").getByText(translate("administration:order:detail.sendDocument"));
5019
7498
  this.sentCheckmark = page.locator(".icon--regular-checkmark-xs");
5020
7499
  if (satisfies(instanceMeta.version, "<6.7")) {
5021
- this.itemsCardHeader = page.locator(".sw-card__header").getByText("Items");
7500
+ this.itemsCardHeader = page.locator(".sw-card__header").getByText(translate("administration:order:detail.items"));
5022
7501
  } else {
5023
- this.itemsCardHeader = page.locator(".mt-card__header").getByText("Items");
7502
+ this.itemsCardHeader = page.locator(".mt-card__header").getByText(translate("administration:order:detail.items"));
5024
7503
  }
5025
- this.generalTabLink = page.getByRole("tab", { name: "General" });
5026
- this.detailsTabLink = page.getByRole("tab", { name: "Details" });
5027
- this.documentsTabLink = page.getByRole("tab", { name: "Documents" });
7504
+ this.generalTabLink = page.getByRole("tab", { name: translate("administration:order:tabs.general") });
7505
+ this.detailsTabLink = page.getByRole("tab", { name: translate("administration:order:tabs.details") });
7506
+ this.documentsTabLink = page.getByRole("tab", { name: translate("administration:order:tabs.documents") });
5028
7507
  }
5029
7508
  url(orderId, tabName = "general") {
5030
7509
  return `#/sw/order/detail/${orderId}/${tabName}`;
@@ -5047,13 +7526,13 @@ class CustomerListing {
5047
7526
  page;
5048
7527
  constructor(page) {
5049
7528
  this.page = page;
5050
- this.headline = page.getByRole("heading", { name: "Customers" });
7529
+ this.headline = page.getByRole("heading", { name: translate("administration:customer:listing.customers") });
5051
7530
  this.addCustomerButton = page.locator(".sw-customer-list__button-create");
5052
- this.bulkEditButton = page.getByRole("button", { name: "Bulk edit" });
5053
- this.deleteButton = page.getByRole("button", { name: "Delete" });
7531
+ this.bulkEditButton = page.getByRole("button", { name: translate("administration:customer:listing.bulkEdit") });
7532
+ this.deleteButton = page.getByRole("button", { name: translate("administration:customer:listing.delete") });
5054
7533
  this.bulkEditModal = page.locator(".sw-customer-bulk-edit-modal").getByRole("dialog");
5055
- this.startBulkEditButton = this.bulkEditModal.getByRole("button", { name: "Start bulk edit" });
5056
- this.cancelButton = this.bulkEditModal.getByRole("button", { name: "Cancel" });
7534
+ this.startBulkEditButton = this.bulkEditModal.getByRole("button", { name: translate("administration:customer:listing.startBulkEdit") });
7535
+ this.cancelButton = this.bulkEditModal.getByRole("button", { name: translate("administration:customer:listing.cancel") });
5057
7536
  const tableHeader = this.bulkEditModal.locator(".sw-data-grid__header");
5058
7537
  this.modalHeaderCheckbox = tableHeader.getByRole("checkbox");
5059
7538
  }
@@ -5083,7 +7562,7 @@ class CustomerListing {
5083
7562
  };
5084
7563
  }
5085
7564
  async getCustomerBulkEditModalTitle(customerCount) {
5086
- return this.bulkEditModal.getByRole("heading", { name: `Bulk edit - ${customerCount} items selected` });
7565
+ return this.bulkEditModal.getByRole("heading", { name: translate("administration:customer:listing.bulkEditItemsSelected", { count: customerCount }) });
5087
7566
  }
5088
7567
  async getBulkEditModalLineItemByCustomerEmail(customerEmail) {
5089
7568
  const lineItem = this.bulkEditModal.locator(".sw-data-grid__row").filter({ hasText: customerEmail });
@@ -5130,15 +7609,15 @@ class CustomerDetail {
5130
7609
  constructor(page, instanceMeta) {
5131
7610
  this.page = page;
5132
7611
  this.instanceMeta = instanceMeta;
5133
- this.editButton = page.getByRole("button", { name: "Edit" });
5134
- this.generalTab = page.getByRole("link", { name: "General" });
5135
- this.addressesTab = page.getByRole("tab", { name: "Addresses" });
5136
- this.ordersTab = page.getByRole("tab", { name: "Orders" });
7612
+ this.editButton = page.getByRole("button", { name: translate("administration:customer:detail.edit") });
7613
+ this.generalTab = page.getByRole("link", { name: translate("administration:customer:detail.general") });
7614
+ this.addressesTab = page.getByRole("tab", { name: translate("administration:customer:detail.addresses") });
7615
+ this.ordersTab = page.getByRole("tab", { name: translate("administration:customer:detail.orders") });
5137
7616
  this.accountCard = page.locator(".sw-customer-card");
5138
7617
  if (satisfies(instanceMeta.version, "<6.7")) {
5139
- this.customFieldCard = page.locator(".sw-card").getByText("Custom fields");
7618
+ this.customFieldCard = page.locator(".sw-card").getByText(translate("administration:customField:general.customFields"));
5140
7619
  } else {
5141
- this.customFieldCard = page.locator(".mt-card").getByText("Custom fields");
7620
+ this.customFieldCard = page.locator(".mt-card").getByText(translate("administration:customField:general.customFields"));
5142
7621
  }
5143
7622
  this.customFieldSetTabs = this.customFieldCard.locator(".sw-tabs-item");
5144
7623
  this.customFieldSetTabCustomContent = this.customFieldCard.locator(".sw-tabs__custom-content");
@@ -5147,17 +7626,17 @@ class CustomerDetail {
5147
7626
  } else {
5148
7627
  this.customerGroupRequestMessage = page.locator(".mt-banner__message");
5149
7628
  }
5150
- this.customerGroupAcceptButton = page.getByRole("button", { name: "Accept" });
5151
- this.customerGroupDeclineButton = page.getByRole("button", { name: "Decline" });
7629
+ this.customerGroupAcceptButton = page.getByRole("button", { name: translate("administration:customer:detail.accept") });
7630
+ this.customerGroupDeclineButton = page.getByRole("button", { name: translate("administration:customer:detail.decline") });
5152
7631
  this.tagList = page.locator(".sw-customer-card__tag-select").locator(".sw-select-selection-list");
5153
7632
  this.tagItems = this.tagList.locator(".sw-select-selection-list__item");
5154
7633
  }
5155
7634
  async getCustomFieldSetCardContentByName(customFieldSetName) {
5156
7635
  let customFieldCard;
5157
7636
  if (satisfies(this.instanceMeta.version, "<6.7")) {
5158
- customFieldCard = this.page.locator(".sw-card").filter({ hasText: "Custom fields" });
7637
+ customFieldCard = this.page.locator(".sw-card").filter({ hasText: translate("administration:category:general.customFields") });
5159
7638
  } else {
5160
- customFieldCard = this.page.locator(".mt-card").filter({ hasText: "Custom fields" });
7639
+ customFieldCard = this.page.locator(".mt-card").filter({ hasText: translate("administration:category:general.customFields") });
5161
7640
  }
5162
7641
  const customFieldSetTab = customFieldCard.getByText(customFieldSetName);
5163
7642
  const customFieldSetTabCustomContent = customFieldCard.locator(`.sw-custom-field-set-renderer-tab-content__${customFieldSetName}`);
@@ -5167,23 +7646,23 @@ class CustomerDetail {
5167
7646
  };
5168
7647
  }
5169
7648
  async getCustomerGroupAlert(customerGroup) {
5170
- return this.customerGroupRequestMessage.getByText(`Access to customer group "${customerGroup}" requested.`);
7649
+ return this.customerGroupRequestMessage.getByText(translate("administration:customer:detail.customerGroupRequestMessage", { customerGroup }));
5171
7650
  }
5172
7651
  async getCustomerGroup() {
5173
7652
  const dlElement = this.page.locator("dl").filter({
5174
- has: this.page.locator("dt", { hasText: "Customer group" })
7653
+ has: this.page.locator("dt", { hasText: translate("administration:customer:detail.customerGroup") })
5175
7654
  });
5176
7655
  return dlElement.locator("dd");
5177
7656
  }
5178
7657
  async getAccountStatus() {
5179
7658
  const dlElement = this.page.locator("dl").filter({
5180
- has: this.page.locator("dt", { hasText: "Account status" })
7659
+ has: this.page.locator("dt", { hasText: translate("administration:customer:detail.accountStatus") })
5181
7660
  });
5182
7661
  return dlElement.locator("dd");
5183
7662
  }
5184
7663
  async getLanguage() {
5185
7664
  const dlElement = this.page.locator("dl").filter({
5186
- has: this.page.locator("dt", { hasText: "Language" })
7665
+ has: this.page.locator("dt", { hasText: translate("administration:customer:detail.language") })
5187
7666
  });
5188
7667
  return dlElement.locator("dd");
5189
7668
  }
@@ -5198,7 +7677,7 @@ class CustomerGroupListing {
5198
7677
  page;
5199
7678
  constructor(page) {
5200
7679
  this.page = page;
5201
- this.headline = page.getByRole("heading", { name: "Customer groups" });
7680
+ this.headline = page.getByRole("heading", { name: translate("administration:customerGroup:listing.customerGroups") });
5202
7681
  this.addCustomerGroupButton = page.locator(".sw-settings-customer-group-list__create");
5203
7682
  }
5204
7683
  async getCustomerGroupByName(customerGroup) {
@@ -5239,14 +7718,14 @@ class CustomerGroupCreate {
5239
7718
  constructor(page, instanceMeta) {
5240
7719
  this.page = page;
5241
7720
  this.instanceMeta = instanceMeta;
5242
- this.headline = page.getByRole("heading", { name: "New customer group" });
5243
- this.saveButton = page.getByRole("button", { name: "Save" });
5244
- this.cancelButton = page.getByRole("button", { name: "Cancel" });
5245
- this.cardTitle = page.getByRole("heading", { name: "Customer group" });
7721
+ this.headline = page.getByRole("heading", { name: translate("administration:customerGroup:create.title") });
7722
+ this.saveButton = page.getByRole("button", { name: translate("administration:customerGroup:create.save") });
7723
+ this.cancelButton = page.getByRole("button", { name: translate("administration:customerGroup:create.cancel") });
7724
+ this.cardTitle = page.getByRole("heading", { name: translate("administration:customerGroup:create.cardTitle") });
5246
7725
  this.customerGroupNameField = page.locator("#sw-field--customerGroup-name");
5247
7726
  this.customerGroupGrossTaxDisplay = page.locator("#sw-field--castedValue-0");
5248
7727
  this.customerGroupNetTaxDisplay = page.locator("#sw-field--castedValue-1");
5249
- this.customSignupFormToggle = page.getByLabel("Custom signup form");
7728
+ this.customSignupFormToggle = page.getByLabel(translate("administration:customerGroup:create.customSignupForm"));
5250
7729
  this.signupFormTitle = page.locator("#sw-field--customerGroup-registrationTitle");
5251
7730
  if (satisfies(instanceMeta.version, "<6.8")) {
5252
7731
  this.signupFormIntroduction = page.locator(".sw-text-editor__content-editor");
@@ -5256,9 +7735,9 @@ class CustomerGroupCreate {
5256
7735
  if (satisfies(instanceMeta.version, "<6.7")) {
5257
7736
  this.signupFormSeoDescription = page.locator("#sw-field--customerGroup-registrationSeoMetaDescription");
5258
7737
  } else {
5259
- this.signupFormSeoDescription = page.getByRole("textbox", { name: "SEO meta description" });
7738
+ this.signupFormSeoDescription = page.getByRole("textbox", { name: translate("administration:customerGroup:create.seoMetaDescription") });
5260
7739
  }
5261
- this.signupFormCompanySignupToggle = page.getByLabel("Company signup form");
7740
+ this.signupFormCompanySignupToggle = page.getByLabel(translate("administration:customerGroup:create.companySignupForm"));
5262
7741
  this.customerGroupSaleschannelSelection = page.locator("input[class=sw-select-selection-list__input]");
5263
7742
  this.customerGroupSaleschannelResultList = page.locator(".sw-select-result-list__content");
5264
7743
  }
@@ -5276,7 +7755,7 @@ class CustomerGroupDetail extends CustomerGroupCreate {
5276
7755
  super(page, instanceMeta);
5277
7756
  this.headline = page.locator(".smart-bar__header");
5278
7757
  this.selectedSalesChannel = page.locator(".sw-select-selection-list");
5279
- this.technicalUrl = page.getByLabel("Technical URL");
7758
+ this.technicalUrl = page.getByLabel(translate("administration:customerGroup:detail.technicalUrl"));
5280
7759
  this.saleschannelUrl = page.getByLabel(/.*URL/).last();
5281
7760
  }
5282
7761
  url(customerGroupId) {
@@ -5345,14 +7824,14 @@ class FirstRunWizard {
5345
7824
  this.skipButton = page.getByText("Skip", { exact: true });
5346
7825
  this.finishButton = page.getByText("Finish", { exact: true });
5347
7826
  this.backButton = page.getByText("Back", { exact: true });
5348
- this.installLanguagePackButton = page.getByRole("button", { name: "Install" });
5349
- this.welcomeText = page.locator(".headline-welcome", { hasText: "Welcome to the Shopware 6 Administration" });
7827
+ this.installLanguagePackButton = page.getByRole("button", { name: translate("administration:firstRunWizard:buttons.install") });
7828
+ this.welcomeText = page.locator(".headline-welcome", { hasText: translate("administration:firstRunWizard:welcome.text") });
5350
7829
  this.pluginCardInfo = page.locator(".sw-plugin-card__info");
5351
- this.installMigrationAssistantButton = page.getByRole("button", { name: "Install Migration Assistant" });
5352
- this.installDemoDataButton = page.getByRole("button", { name: "Install demo data" });
5353
- this.dataImportHeader = page.locator(".sw-modal__title", { hasText: "Getting started with Shopware 6" });
7830
+ this.installMigrationAssistantButton = page.getByRole("button", { name: translate("administration:firstRunWizard:buttons.installMigrationAssistant") });
7831
+ this.installDemoDataButton = page.getByRole("button", { name: translate("administration:firstRunWizard:buttons.installDemoData") });
7832
+ this.dataImportHeader = page.locator(".sw-modal__title", { hasText: translate("administration:firstRunWizard:headers.dataImport") });
5354
7833
  this.dataImportCard = page.locator(".sw-first-run-wizard-data-import__card");
5355
- this.defaultValuesHeader = page.locator(".sw-modal__title", { hasText: "Setup default values" });
7834
+ this.defaultValuesHeader = page.locator(".sw-modal__title", { hasText: translate("administration:firstRunWizard:headers.defaultValues") });
5356
7835
  this.salesChannelSelectionMultiSelect = page.getByPlaceholder("Select Sales Channels...");
5357
7836
  this.salesChannelSelectionList = page.locator(".sw-popover__wrapper").getByRole("listitem");
5358
7837
  this.mailerConfigurationHeader = page.locator(".sw-modal__title", { hasText: "Mailer configuration" });
@@ -5464,37 +7943,37 @@ class FlowBuilderCreate {
5464
7943
  this.triggerSelectField = page.locator(".sw-flow-detail-flow__trigger-card").getByRole("textbox");
5465
7944
  this.flowTab = page.locator(".sw-tabs__content").locator(".sw-flow-detail__tab-flow");
5466
7945
  if (satisfies(instanceMeta.version, "<6.7")) {
5467
- this.modalAddButton = page.locator(".sw-button--primary").getByText("Add action");
7946
+ this.modalAddButton = page.locator(".sw-button--primary").getByText(translate("administration:flowBuilder:create.addAction"));
5468
7947
  } else {
5469
- this.modalAddButton = page.locator(".mt-button--primary").getByText("Add action");
7948
+ this.modalAddButton = page.locator(".mt-button--primary").getByText(translate("administration:flowBuilder:create.addAction"));
5470
7949
  }
5471
- this.nameField = page.getByLabel("Name");
5472
- this.descriptionField = page.getByLabel("Description");
5473
- this.priorityField = page.getByLabel("Priority");
5474
- this.activeSwitch = page.getByLabel("Active");
5475
- this.sequenceSelectorConditionButton = page.getByText("Add condition (IF)");
7950
+ this.nameField = page.getByLabel(translate("administration:flowBuilder:create.name"));
7951
+ this.descriptionField = page.getByLabel(translate("administration:flowBuilder:create.description"));
7952
+ this.priorityField = page.getByLabel(translate("administration:flowBuilder:create.priority"));
7953
+ this.activeSwitch = page.getByLabel(translate("administration:flowBuilder:create.active"));
7954
+ this.sequenceSelectorConditionButton = page.getByText(translate("administration:flowBuilder:create.addConditionIf"));
5476
7955
  this.conditionSelectField = page.locator(".sw-flow-sequence-condition__select");
5477
7956
  this.conditionRule = page.locator(".sw-flow-sequence-condition__rule-header");
5478
- this.sequenceSelectorActionButton = page.getByText("Add action (THEN)");
7957
+ this.sequenceSelectorActionButton = page.getByText(translate("administration:flowBuilder:create.addActionThen"));
5479
7958
  this.actionSelectField = page.locator(".sw-flow-sequence-action__content").locator(".sw-single-select__selection");
5480
7959
  this.selectFieldResultList = page.locator(".sw-select-result-list__item-list");
5481
7960
  this.trueBlock = page.locator(".sw-flow-sequence__true-block");
5482
- this.trueBlockAddConditionButton = this.trueBlock.getByText("Add condition (IF)");
5483
- this.trueBlockAddActionButton = this.trueBlock.getByText("Add action (THEN)");
7961
+ this.trueBlockAddConditionButton = this.trueBlock.getByText(translate("administration:flowBuilder:create.addConditionIf"));
7962
+ this.trueBlockAddActionButton = this.trueBlock.getByText(translate("administration:flowBuilder:create.addActionThen"));
5484
7963
  this.trueBlockActionSelectField = this.trueBlock.locator(".sw-single-select");
5485
7964
  this.trueBlockActionDescription = this.trueBlock.locator(".sw-flow-sequence-action__action-description");
5486
7965
  this.mailSendModal = page.locator(".sw-flow-mail-send-modal");
5487
7966
  this.mailSendModalTemplateSelectField = page.locator(".sw-flow-mail-send-modal").locator(".sw-entity-single-select__selection");
5488
7967
  this.falseBlock = page.locator(".sw-flow-sequence__false-block");
5489
- this.falseBlockAddConditionButton = this.falseBlock.getByText("Add condition (IF)");
5490
- this.falseBlockAddActionButton = this.falseBlock.getByText("Add action (THEN)");
7968
+ this.falseBlockAddConditionButton = this.falseBlock.getByText(translate("administration:flowBuilder:create.addConditionIf"));
7969
+ this.falseBlockAddActionButton = this.falseBlock.getByText(translate("administration:flowBuilder:create.addActionThen"));
5491
7970
  this.falseBlockActionSelectField = this.falseBlock.locator(".sw-single-select");
5492
7971
  this.falseBlockActionDescription = this.falseBlock.locator(".sw-flow-sequence-action__actions");
5493
7972
  this.tagModal = page.locator(".sw-flow-tag-modal");
5494
- this.tagModalTagsSelectField = page.locator(".sw-flow-tag-modal").locator(".sw-select__selection").getByLabel("Tags");
7973
+ this.tagModalTagsSelectField = page.locator(".sw-flow-tag-modal").locator(".sw-select__selection").getByLabel(translate("administration:flowBuilder:create.tags"));
5495
7974
  this.delayCard = page.locator(".sw-flow-delay-action__delay_card");
5496
7975
  this.sequenceSeparator = page.locator(".sw-flow-detail-flow__position-connection");
5497
- this.newFlowHeader = page.getByRole("heading", { name: "New flow" });
7976
+ this.newFlowHeader = page.getByRole("heading", { name: translate("administration:flowBuilder:create.newFlow") });
5498
7977
  this.addActionField = page.locator(".sw-flow-sequence-action__content").locator(".sw-single-select__selection");
5499
7978
  this.resultListItem = page.locator(".sw-select-result-list__content");
5500
7979
  this.resultList = page.locator(".sw-select-result-list");
@@ -5542,14 +8021,14 @@ class FlowBuilderListing {
5542
8021
  this.contextMenuEdit = this.flowContextMenu.locator(".sw-flow-list__item-edit");
5543
8022
  this.contextMenuDelete = this.flowContextMenu.locator(".sw-flow-list__item-delete");
5544
8023
  this.flowDownloadModal = page.locator(".sw-flow-download-modal");
5545
- this.flowDeleteButton = page.getByRole("dialog").filter({ hasText: "If you delete this flow, no more actions will be performed for the trigger. Are you sure you want to delete this flow?" }).getByRole("button", { name: "Delete" });
5546
- this.downloadFlowButton = page.getByRole("button", { name: "Download flow" });
8024
+ this.flowDeleteButton = page.getByRole("dialog").filter({ hasText: translate("administration:flowBuilder:messages.deleteConfirmation") }).getByRole("button", { name: translate("administration:flowBuilder:listing.delete") });
8025
+ this.downloadFlowButton = page.getByRole("button", { name: translate("administration:flowBuilder:listing.downloadFlow") });
5547
8026
  this.successAlert = page.locator(".sw-alert__body");
5548
8027
  this.successAlertMessage = page.locator(".sw-alert__message");
5549
8028
  this.searchBar = page.locator(".sw-search-bar__input");
5550
8029
  this.pagination = page.locator(".sw-pagination");
5551
- this.testFlowNameCells = page.locator(".sw-data-grid__cell--name a").getByText("Test flow");
5552
- this.flowTemplatesTab = page.locator(".sw-tabs-item").getByText("Flow templates");
8030
+ this.testFlowNameCells = page.locator(".sw-data-grid__cell--name a").getByText(translate("administration:flowBuilder:listing.testFlow"));
8031
+ this.flowTemplatesTab = page.locator(".sw-tabs-item").getByText(translate("administration:flowBuilder:listing.flowTemplates"));
5553
8032
  }
5554
8033
  url(tabName = "flows") {
5555
8034
  return `#/sw/flow/index/${tabName}`;
@@ -5582,7 +8061,7 @@ class FlowBuilderTemplates extends FlowBuilderListing {
5582
8061
  }
5583
8062
  async getLineItemByFlowName(flowName) {
5584
8063
  const lineItem = this.page.locator(".sw-data-grid__row").filter({ has: this.page.getByText(flowName, { exact: true }) });
5585
- const createFlowLink = lineItem.getByRole("link").getByText("Create new flow from template");
8064
+ const createFlowLink = lineItem.getByRole("link").getByText(translate("administration:flowBuilder:templates.createNewFlowFromTemplate"));
5586
8065
  const templateDetailLink = lineItem.getByRole("link").getByText(flowName);
5587
8066
  return {
5588
8067
  createFlowLink,
@@ -5626,7 +8105,7 @@ class FlowBuilderDetail extends FlowBuilderCreate {
5626
8105
  }
5627
8106
  this.saveButton = page.locator(".sw-flow-detail__save");
5628
8107
  this.flowTab = page.locator(".sw-flow-detail__tab-flow");
5629
- this.templateName = page.getByLabel("Name");
8108
+ this.templateName = page.getByLabel(translate("administration:flowBuilder:detail.name"));
5630
8109
  this.actionContentTag = page.locator(".sw-flow-sequence-action__content").locator(".tag");
5631
8110
  this.skeletonLoader = page.locator(".sw-skeleton");
5632
8111
  this.messageClose = page.locator(".mt-banner__close");
@@ -5658,10 +8137,10 @@ class DataSharing {
5658
8137
  } else {
5659
8138
  this.dataConsentHeadline = page.locator("h3.sw-usage-data-consent-banner__content-headline");
5660
8139
  }
5661
- this.dataSharingAgreeButton = page.getByRole("button", { name: "Agree" });
5662
- this.dataSharingDisableButton = page.getByRole("button", { name: "Disable data sharing" });
8140
+ this.dataSharingAgreeButton = page.getByRole("button", { name: translate("administration:dataSharing:buttons.agree") });
8141
+ this.dataSharingDisableButton = page.getByRole("button", { name: translate("administration:dataSharing:buttons.disableDataSharing") });
5663
8142
  this.dataSharingSuccessMessageLabel = page.getByText("You are sharing data with us", { exact: true });
5664
- this.dataSharingTermsAgreementLabel = page.getByText('By clicking "Agree", you confirm that you are authorised to enter into this agreement on behalf of your company.');
8143
+ this.dataSharingTermsAgreementLabel = page.getByText(translate("administration:dataSharing:messages.termsAgreement"));
5665
8144
  }
5666
8145
  url() {
5667
8146
  if (satisfies(this.instanceMeta.version, "<6.6.1")) {
@@ -5716,19 +8195,21 @@ class Dashboard {
5716
8195
  this.welcomeHeadline = page.locator("h1.sw-dashboard-index__welcome-title");
5717
8196
  this.welcomeMessage = page.locator(".sw-dashboard-index__welcome-message");
5718
8197
  this.dataSharingConsentBanner = page.locator(".sw-usage-data-consent-banner");
5719
- this.dataSharingAgreeButton = page.getByRole("button", { name: "Agree" });
5720
- this.dataSharingNotAtTheMomentButton = page.getByRole("button", { name: "Not at the moment" });
8198
+ this.dataSharingAgreeButton = page.getByRole("button", { name: translate("administration:dashboard:dataSharing.agree") });
8199
+ this.dataSharingNotAtTheMomentButton = page.getByRole("button", { name: translate("administration:dashboard:dataSharing.notAtTheMoment") });
5721
8200
  this.dataSharingSettingsLink = page.locator(".sw-usage-data-consent-banner-reject-accept-message").getByRole("link");
5722
- this.dataSharingAcceptMessageText = page.getByText("Thank you for your participation!");
5723
- this.dataSharingNotAtTheMomentMessageText = page.getByText("You can at any time enter into the agreement and thus contribute to and profit from the constant evolution of our services");
5724
- this.dataSharingTermsAgreementLabel = page.getByText('By clicking "Agree", you confirm that you are authorised to enter into this agreement on behalf of your company.');
8201
+ this.dataSharingAcceptMessageText = page.getByText(translate("administration:dashboard:dataSharing.acceptMessage"));
8202
+ this.dataSharingNotAtTheMomentMessageText = page.getByText(translate("administration:dashboard:dataSharing.notAtTheMomentMessage"));
8203
+ this.dataSharingTermsAgreementLabel = page.getByText(translate("administration:dashboard:dataSharing.agreementText"));
5725
8204
  this.statisticsDateRange = page.locator(".mt-card__subtitle");
5726
8205
  this.statisticsChart = page.locator(".vue-apexcharts");
5727
8206
  this.shopwareServicesAdvertisementBanner = page.locator(".sw-settings-services-dashboard-banner__content").first();
5728
- this.shopwareServicesAdvertisementBannerCloseButton = this.shopwareServicesAdvertisementBanner.getByLabel("Close");
5729
- this.shopwareServicesExploreNowButton = this.shopwareServicesAdvertisementBanner.getByRole("button", { name: "Explore now" });
8207
+ this.shopwareServicesAdvertisementBannerCloseButton = this.shopwareServicesAdvertisementBanner.getByLabel(translate("administration:dashboard:shopwareServices.close"));
8208
+ this.shopwareServicesExploreNowButton = this.shopwareServicesAdvertisementBanner.getByRole("button", {
8209
+ name: translate("administration:dashboard:shopwareServices.exploreNow")
8210
+ });
5730
8211
  this.adminMenuUserActions = page.locator(".sw-admin-menu__user-actions-toggle");
5731
- this.adminMenuLogoutButton = page.locator(".sw-admin-menu__user-actions").getByRole("link", { name: "Logout" });
8212
+ this.adminMenuLogoutButton = page.locator(".sw-admin-menu__user-actions").getByRole("link", { name: translate("administration:dashboard:userMenu.logout") });
5732
8213
  }
5733
8214
  url() {
5734
8215
  return "#/sw/dashboard/index";
@@ -5754,10 +8235,10 @@ class ShippingListing {
5754
8235
  this.contextMenu = page.locator(".sw-data-grid-settings__trigger");
5755
8236
  this.editButton = page.locator(".sw-settings-shipping-list__edit-action");
5756
8237
  this.deleteButton = page.locator(".sw-context-menu-item--danger");
5757
- this.modal = page.getByRole("dialog", { name: "Warning" });
5758
- this.modalHeader = this.modal.getByRole("heading", { name: "Warning" });
5759
- this.modalCancelButton = this.modal.getByRole("button", { name: "Cancel" });
5760
- this.modalDeleteButton = this.modal.getByRole("button", { name: "Delete" });
8238
+ this.modal = page.getByRole("dialog", { name: translate("administration:shipping:dialogs.warning") });
8239
+ this.modalHeader = this.modal.getByRole("heading", { name: translate("administration:shipping:dialogs.warning") });
8240
+ this.modalCancelButton = this.modal.getByRole("button", { name: translate("administration:shipping:dialogs.cancel") });
8241
+ this.modalDeleteButton = this.modal.getByRole("button", { name: translate("administration:shipping:dialogs.delete") });
5761
8242
  }
5762
8243
  url() {
5763
8244
  return "#/sw/settings/shipping/index/";
@@ -5832,23 +8313,23 @@ class LandingPageCreate {
5832
8313
  constructor(page) {
5833
8314
  this.page = page;
5834
8315
  this.loadingSpinner = page.locator(".sw-loader");
5835
- this.saveLandingPageButton = page.getByRole("button", { name: "Save" });
5836
- this.nameInput = page.getByLabel("Name");
5837
- this.landingPageStatus = page.getByRole("checkbox", { name: "Active" });
5838
- this.salesChannelSelectionList = page.locator(".sw-select").filter({ hasText: "Sales Channels" }).locator(".sw-select-selection-list");
8316
+ this.saveLandingPageButton = page.getByRole("button", { name: translate("administration:landingPage:general.save") });
8317
+ this.nameInput = page.getByLabel(translate("administration:landingPage:general.name"));
8318
+ this.landingPageStatus = page.getByRole("checkbox", { name: translate("administration:landingPage:general.active") });
8319
+ this.salesChannelSelectionList = page.locator(".sw-select").filter({ hasText: translate("administration:landingPage:general.salesChannels") }).locator(".sw-select-selection-list");
5839
8320
  this.filtersResultPopoverItemList = page.locator(".sw-select-result-list__content").getByRole("listitem");
5840
- this.seoUrlInput = page.getByLabel("SEO URL");
5841
- this.layoutTab = page.getByRole("tab", { name: "Layout" });
8321
+ this.seoUrlInput = page.getByLabel(translate("administration:landingPage:general.seoUrl"));
8322
+ this.layoutTab = page.getByRole("tab", { name: translate("administration:landingPage:layout.layout") });
5842
8323
  const layoutCardPreview = page.locator(".sw-category-layout-card__preview");
5843
8324
  this.layoutEmptyState = layoutCardPreview.locator(".is--empty");
5844
- this.assignLayoutButton = page.getByRole("button", { name: "Assign layout" });
5845
- this.createNewLayoutButton = page.getByRole("button", { name: "Create new layout" });
5846
- const layoutModal = page.getByRole("dialog", { name: "Select layout" });
5847
- this.searchLayoutInput = layoutModal.getByPlaceholder("Search layouts...");
8325
+ this.assignLayoutButton = page.getByRole("button", { name: translate("administration:landingPage:create.assignLayout") });
8326
+ this.createNewLayoutButton = page.getByRole("button", { name: translate("administration:landingPage:create.createNewLayout") });
8327
+ const layoutModal = page.getByRole("dialog", { name: translate("administration:landingPage:create.selectLayout") });
8328
+ this.searchLayoutInput = layoutModal.getByPlaceholder(translate("administration:landingPage:create.searchLayoutsPlaceholder"));
5848
8329
  this.layoutItems = layoutModal.locator(".sw-cms-list-item");
5849
8330
  const layoutTable = layoutModal.locator(".sw-data-grid__body");
5850
8331
  this.layoutCheckboxes = layoutTable.locator(".sw-field--checkbox__content");
5851
- this.layoutSaveButton = layoutModal.getByRole("button", { name: "Save" });
8332
+ this.layoutSaveButton = layoutModal.getByRole("button", { name: translate("administration:landingPage:general.save") });
5852
8333
  }
5853
8334
  url() {
5854
8335
  return `#/sw/category/landingPage/create/base`;
@@ -5881,15 +8362,15 @@ class LandingPageDetail {
5881
8362
  constructor(page) {
5882
8363
  this.page = page;
5883
8364
  this.loadingSpinner = page.locator(".sw-loader");
5884
- this.saveLandingPageButton = page.getByRole("button", { name: "Save" });
5885
- this.nameInput = page.getByLabel("Name");
5886
- this.landingPageStatus = page.getByRole("checkbox", { name: "Active" });
5887
- this.salesChannelSelectionList = page.locator(".sw-select").filter({ hasText: "Sales Channels" }).locator(".sw-select-selection-list");
8365
+ this.saveLandingPageButton = page.getByRole("button", { name: translate("administration:landingPage:general.save") });
8366
+ this.nameInput = page.getByLabel(translate("administration:landingPage:general.name"));
8367
+ this.landingPageStatus = page.getByRole("checkbox", { name: translate("administration:landingPage:general.active") });
8368
+ this.salesChannelSelectionList = page.locator(".sw-select").filter({ hasText: translate("administration:landingPage:general.salesChannels") }).locator(".sw-select-selection-list");
5888
8369
  this.filtersResultPopoverItemList = page.locator(".sw-select-result-list__content").getByRole("listitem");
5889
- this.seoUrlInput = page.getByLabel("SEO URL");
5890
- this.layoutTab = page.getByRole("tab", { name: "Layout" });
5891
- this.changeLayoutButton = page.getByRole("button", { name: "Change layout" });
5892
- this.editInDesignerButton = page.getByRole("button", { name: "Edit in designer" });
8370
+ this.seoUrlInput = page.getByLabel(translate("administration:landingPage:general.seoUrl"));
8371
+ this.layoutTab = page.getByRole("tab", { name: translate("administration:landingPage:layout.layout") });
8372
+ this.changeLayoutButton = page.getByRole("button", { name: translate("administration:landingPage:layout.changeLayout") });
8373
+ this.editInDesignerButton = page.getByRole("button", { name: translate("administration:landingPage:layout.editInDesigner") });
5893
8374
  const layoutAssignmentCard = page.locator(".sw-category-layout-card");
5894
8375
  this.layoutAssignmentCardHeadline = layoutAssignmentCard.locator(".sw-category-layout-card__desc-headline");
5895
8376
  this.layoutResetButton = layoutAssignmentCard.locator(".sw-category-detail-layout__layout-reset");
@@ -5963,25 +8444,25 @@ class Categories {
5963
8444
  this.instanceMeta = instanceMeta;
5964
8445
  this.contentView = page.locator(".sw-desktop__content");
5965
8446
  this.landingPageArea = page.locator(".sw-category-detail__landing-page-collapse");
5966
- this.landingPageHeadline = this.landingPageArea.getByRole("heading", { name: "Landing pages" });
5967
- this.addLandingPageButton = this.landingPageArea.getByText("Add landing page");
8447
+ this.landingPageHeadline = this.landingPageArea.getByRole("heading", { name: translate("administration:category:headings.landingPages") });
8448
+ this.addLandingPageButton = this.landingPageArea.getByText(translate("administration:category:actions.addLandingPage"));
5968
8449
  this.landingPageItems = this.landingPageArea.locator(".sw-tree-item__label");
5969
8450
  this.categoryTree = page.locator(".sw-category-tree");
5970
8451
  this.categoryMenuItemList = page.locator(".sw-context-menu-item");
5971
- this.createCategoryInput = page.getByPlaceholder("Create category").getByRole("textbox");
8452
+ this.createCategoryInput = page.getByPlaceholder(translate("administration:category:actions.createCategory")).getByRole("textbox");
5972
8453
  this.confirmCategoryCreationButton = page.locator(".sw-confirm-field").locator(".sw-confirm-field__button--submit");
5973
8454
  this.categoryItems = this.categoryTree.locator(".tree-link");
5974
8455
  this.confirmCategoryCancelButton = page.locator(".sw-confirm-field").locator(".sw-confirm-field__button--cancel");
5975
- this.generalTab = page.locator(".sw-tabs__content").getByText("General");
5976
- this.productsTab = page.locator(".sw-tabs__content").getByText("Products");
5977
- this.layoutTab = page.locator(".sw-tabs__content").getByText("Layout");
5978
- this.seoTab = page.locator(".sw-tabs__content").getByText("SEO");
5979
- this.nameInput = page.getByLabel("Name");
5980
- this.activeCheckbox = page.getByRole("checkbox", { name: "Active" });
5981
- this.saveButton = page.getByRole("button", { name: "Save" });
5982
- this.categoryTypeSelectionList = page.locator(".sw-select").filter({ hasText: "Category type" }).locator(".sw-select__selection");
5983
- this.linkTypeSelectionList = page.locator(".sw-select").filter({ hasText: "Link type" }).locator(".sw-select__selection");
5984
- this.entitySelectionList = page.locator(".sw-select").filter({ hasText: "Entity" }).locator(".sw-select__selection");
8456
+ this.generalTab = page.locator(".sw-tabs__content").getByText(translate("administration:category:tabs.general"));
8457
+ this.productsTab = page.locator(".sw-tabs__content").getByText(translate("administration:category:tabs.products"));
8458
+ this.layoutTab = page.locator(".sw-tabs__content").getByText(translate("administration:category:tabs.layout"));
8459
+ this.seoTab = page.locator(".sw-tabs__content").getByText(translate("administration:category:tabs.seo"));
8460
+ this.nameInput = page.getByLabel(translate("administration:category:general.name"));
8461
+ this.activeCheckbox = page.getByRole("checkbox", { name: translate("administration:category:general.active") });
8462
+ this.saveButton = page.getByRole("button", { name: translate("administration:category:general.save") });
8463
+ this.categoryTypeSelectionList = page.locator(".sw-select").filter({ hasText: translate("administration:category:fields.categoryType") }).locator(".sw-select__selection");
8464
+ this.linkTypeSelectionList = page.locator(".sw-select").filter({ hasText: translate("administration:category:fields.linkType") }).locator(".sw-select__selection");
8465
+ this.entitySelectionList = page.locator(".sw-select").filter({ hasText: translate("administration:category:fields.entity") }).locator(".sw-select__selection");
5985
8466
  this.categorySelectionList = page.locator(".sw-category-link-settings__selection-category").locator(".sw-block-field__block");
5986
8467
  this.categorySelectionListWrapper = page.locator(".sw-category-tree-field__main-wrapper");
5987
8468
  this.productSelectionList = page.locator(".sw-category-link-settings__selection-product");
@@ -5990,12 +8471,12 @@ class Categories {
5990
8471
  this.filtersResultPopoverItemList = page.locator(".sw-select-result-list__content").getByRole("listitem");
5991
8472
  this.popoverCategoryTree = page.locator(".sw-category-tree-field__results_popover");
5992
8473
  this.filterResultPopoverTreeCheckboxItemList = this.popoverCategoryTree.locator(".sw-tree__content").locator(".sw-tree-item");
5993
- this.openInNewTabCheckbox = page.getByRole("checkbox", { name: "Open in new tab" });
8474
+ this.openInNewTabCheckbox = page.getByRole("checkbox", { name: translate("administration:category:fields.openInNewTab") });
5994
8475
  this.loadingSpinner = page.locator(".sw-loader");
5995
8476
  this.loadingSpinner = page.locator(".mt-loader");
5996
8477
  this.fadingBar = page.locator(".fade-leave-active");
5997
- this.configureHomePageButton = page.getByRole("button", { name: "Configure home page" });
5998
- this.configureModalCancelButton = page.locator(".sw-modal").getByRole("button", { name: "Cancel" });
8478
+ this.configureHomePageButton = page.getByRole("button", { name: translate("administration:category:actions.configureHomePage") });
8479
+ this.configureModalCancelButton = page.locator(".sw-modal").getByRole("button", { name: translate("administration:category:general.cancel") });
5999
8480
  }
6000
8481
  async getLandingPageByName(landingPageName) {
6001
8482
  return this.landingPageItems.locator(`text="${landingPageName}"`);
@@ -6017,18 +8498,18 @@ class CustomFieldListing {
6017
8498
  page;
6018
8499
  constructor(page) {
6019
8500
  this.page = page;
6020
- this.addNewSetButton = page.getByText("Add new set");
8501
+ this.addNewSetButton = page.getByText(translate("administration:customField:listing.addNewSet"));
6021
8502
  this.customFieldRows = page.getByRole("row");
6022
8503
  }
6023
8504
  async getLineItemByCustomFieldSetName(customFieldSetName) {
6024
8505
  const lineItem = this.page.getByRole("row").filter({ hasText: customFieldSetName });
6025
8506
  const customFieldSetNameText = lineItem.getByText(customFieldSetName);
6026
8507
  const customFieldSetContextButton = lineItem.locator(".sw-context-button__button");
6027
- const customFieldSetEditButton = this.page.locator(".sw-context-menu__content").getByRole("link", { name: "Edit" });
6028
- const customFieldSetDeleteButton = this.page.locator(".sw-context-menu__content").getByRole("link", { name: "Delete" });
6029
- const warningDialog = this.page.getByRole("dialog", { name: "Warning" });
6030
- const warningDialogCancelButton = warningDialog.getByRole("button", { name: "Cancel" });
6031
- const warningDialogDeleteButton = warningDialog.getByRole("button", { name: "Delete" });
8508
+ const customFieldSetEditButton = this.page.locator(".sw-context-menu__content").getByRole("link", { name: translate("administration:customField:actions.edit") });
8509
+ const customFieldSetDeleteButton = this.page.locator(".sw-context-menu__content").getByRole("link", { name: translate("administration:customField:actions.delete") });
8510
+ const warningDialog = this.page.getByRole("dialog", { name: translate("administration:customField:dialogs.warning") });
8511
+ const warningDialogCancelButton = warningDialog.getByRole("button", { name: translate("administration:customField:actions.cancel") });
8512
+ const warningDialogDeleteButton = warningDialog.getByRole("button", { name: translate("administration:customField:actions.delete") });
6032
8513
  return {
6033
8514
  customFieldSetNameText,
6034
8515
  customFieldSetContextButton,
@@ -6055,12 +8536,12 @@ class CustomFieldCreate {
6055
8536
  page;
6056
8537
  constructor(page) {
6057
8538
  this.page = page;
6058
- this.saveButton = page.getByRole("button", { name: "Save" });
6059
- this.cancelButton = page.getByRole("button", { name: "Cancel" });
6060
- this.technicalNameInput = page.getByLabel("Technical name");
6061
- this.positionInput = page.getByLabel("Position");
6062
- this.labelEnglishGBInput = page.getByLabel("Label (English (GB))");
6063
- this.assignToSelectionList = page.locator(".sw-field").filter({ hasText: "Assign To" }).locator(".sw-select__selection");
8539
+ this.saveButton = page.getByRole("button", { name: translate("administration:customField:create.save") });
8540
+ this.cancelButton = page.getByRole("button", { name: translate("administration:customField:create.cancel") });
8541
+ this.technicalNameInput = page.getByLabel(translate("administration:customField:common.technicalName"));
8542
+ this.positionInput = page.getByLabel(translate("administration:customField:common.position"));
8543
+ this.labelEnglishGBInput = page.getByLabel(translate("administration:customField:common.labelEnglishGB"));
8544
+ this.assignToSelectionList = page.locator(".sw-field").filter({ hasText: translate("administration:customField:create.assignTo") }).locator(".sw-select__selection");
6064
8545
  this.resultAssignToPopoverItemList = page.locator(".sw-select-result-list__content").getByRole("listitem");
6065
8546
  }
6066
8547
  url() {
@@ -6091,39 +8572,39 @@ class CustomFieldDetail extends CustomFieldCreate {
6091
8572
  constructor(page, instanceMeta) {
6092
8573
  super(page);
6093
8574
  this.instanceMeta = instanceMeta;
6094
- this.newCustomFieldButton = page.getByRole("button", { name: "New custom field" });
8575
+ this.newCustomFieldButton = page.getByRole("button", { name: translate("administration:customField:detail.newCustomField") });
6095
8576
  this.customFieldDeleteListButton = page.locator(".sw-custom-field-list__delete-button");
6096
- this.newCustomFieldDialog = page.getByRole("dialog", { name: "New custom field" });
6097
- this.customFieldAddButton = this.newCustomFieldDialog.getByRole("button", { name: "Add" });
6098
- this.customFieldTechnicalNameInput = this.newCustomFieldDialog.getByLabel("Technical name");
6099
- this.customFieldPositionInput = this.newCustomFieldDialog.getByLabel("Position");
8577
+ this.newCustomFieldDialog = page.getByRole("dialog", { name: translate("administration:customField:detail.newCustomField") });
8578
+ this.customFieldAddButton = this.newCustomFieldDialog.getByRole("button", { name: translate("administration:customField:detail.add") });
8579
+ this.customFieldTechnicalNameInput = this.newCustomFieldDialog.getByLabel(translate("administration:customField:common.technicalName"));
8580
+ this.customFieldPositionInput = this.newCustomFieldDialog.getByLabel(translate("administration:customField:common.position"));
6100
8581
  if (satisfies(instanceMeta.version, "<6.7")) {
6101
- this.customFieldTypeSelectionList = this.newCustomFieldDialog.getByLabel("Type");
8582
+ this.customFieldTypeSelectionList = this.newCustomFieldDialog.getByLabel(translate("administration:customField:detail.type"));
6102
8583
  } else {
6103
- this.customFieldTypeSelectionList = this.newCustomFieldDialog.getByRole("textbox", { name: "Select..." });
8584
+ this.customFieldTypeSelectionList = this.newCustomFieldDialog.getByRole("textbox", { name: translate("administration:customField:detail.select") });
6104
8585
  }
6105
- this.customFieldModifyByStoreApiCheckbox = this.newCustomFieldDialog.getByLabel("Modifiable via Store API");
6106
- this.customFieldCancelButton = this.newCustomFieldDialog.getByRole("button", { name: "Cancel" });
6107
- this.customFieldLabelEnglishGBInput = this.newCustomFieldDialog.getByLabel("Label (English (GB))");
6108
- this.customFieldPlaceholderEnglishGBInput = this.newCustomFieldDialog.getByLabel("Placeholder (English (GB))");
6109
- this.customFieldHelpTextEnglishGBInput = this.newCustomFieldDialog.getByLabel("Help text (English (GB))");
6110
- this.customFieldEditDialog = page.getByRole("dialog", { name: "Edit custom field" });
6111
- this.customFieldEditAvailableInShoppingCartCheckbox = this.customFieldEditDialog.getByLabel("Available in shopping cart");
6112
- this.customFieldEditApplyButton = this.customFieldEditDialog.getByRole("button", { name: "Apply changes" });
6113
- this.customFieldDeleteDialog = page.getByRole("dialog", { name: "Delete custom field" });
6114
- this.customFieldDeleteCancelButton = this.customFieldDeleteDialog.getByRole("button", { name: "Cancel" });
6115
- this.customFieldDeleteButton = this.customFieldDeleteDialog.getByRole("button", { name: "Delete" });
8586
+ this.customFieldModifyByStoreApiCheckbox = this.newCustomFieldDialog.getByLabel(translate("administration:customField:detail.modifiableViaStoreApi"));
8587
+ this.customFieldCancelButton = this.newCustomFieldDialog.getByRole("button", { name: translate("administration:customField:actions.cancel") });
8588
+ this.customFieldLabelEnglishGBInput = this.newCustomFieldDialog.getByLabel(translate("administration:customField:common.labelEnglishGB"));
8589
+ this.customFieldPlaceholderEnglishGBInput = this.newCustomFieldDialog.getByLabel(translate("administration:customField:detail.placeholderEnglishGB"));
8590
+ this.customFieldHelpTextEnglishGBInput = this.newCustomFieldDialog.getByLabel(translate("administration:customField:detail.helpTextEnglishGB"));
8591
+ this.customFieldEditDialog = page.getByRole("dialog", { name: translate("administration:customField:detail.editCustomField") });
8592
+ this.customFieldEditAvailableInShoppingCartCheckbox = this.customFieldEditDialog.getByLabel(translate("administration:customField:detail.availableInShoppingCart"));
8593
+ this.customFieldEditApplyButton = this.customFieldEditDialog.getByRole("button", { name: translate("administration:customField:actions.applyChanges") });
8594
+ this.customFieldDeleteDialog = page.getByRole("dialog", { name: translate("administration:customField:dialogs.deleteCustomField") });
8595
+ this.customFieldDeleteCancelButton = this.customFieldDeleteDialog.getByRole("button", { name: translate("administration:customField:actions.cancel") });
8596
+ this.customFieldDeleteButton = this.customFieldDeleteDialog.getByRole("button", { name: translate("administration:customField:actions.delete") });
6116
8597
  }
6117
8598
  async getLineItemByCustomFieldName(customFieldName) {
6118
8599
  const lineItem = this.page.getByRole("row").filter({ hasText: customFieldName });
6119
8600
  const customFieldCheckbox = lineItem.locator(".icon--regular-checkmark-xxs");
6120
8601
  const customFieldLabelText = lineItem.getByRole("textbox");
6121
8602
  const customFieldContextButton = lineItem.locator(".sw-context-button__button");
6122
- const customFieldEditButton = this.page.locator(".sw-context-menu__content").getByRole("link", { name: "Edit" });
6123
- const customFieldDeleteButton = this.page.locator(".sw-context-menu__content").getByRole("link", { name: "Delete" });
6124
- const warningDialog = this.page.getByRole("dialog", { name: "Delete custom field" });
6125
- const warningDialogCancelButton = warningDialog.getByRole("button", { name: "Cancel" });
6126
- const warningDialogDeleteButton = warningDialog.getByRole("button", { name: "Delete" });
8603
+ const customFieldEditButton = this.page.locator(".sw-context-menu__content").getByRole("link", { name: translate("administration:customField:actions.edit") });
8604
+ const customFieldDeleteButton = this.page.locator(".sw-context-menu__content").getByRole("link", { name: translate("administration:customField:actions.delete") });
8605
+ const warningDialog = this.page.getByRole("dialog", { name: translate("administration:customField:dialogs.deleteCustomField") });
8606
+ const warningDialogCancelButton = warningDialog.getByRole("button", { name: translate("administration:customField:actions.cancel") });
8607
+ const warningDialogDeleteButton = warningDialog.getByRole("button", { name: translate("administration:customField:actions.delete") });
6127
8608
  return {
6128
8609
  customFieldLabelText,
6129
8610
  customFieldCheckbox,
@@ -6154,12 +8635,12 @@ class CategoryDetail {
6154
8635
  constructor(page, instanceMeta) {
6155
8636
  this.page = page;
6156
8637
  this.instanceMeta = instanceMeta;
6157
- this.saveButton = page.getByRole("button", { name: "Save" });
6158
- this.cancelButton = page.getByRole("button", { name: "Cancel" });
8638
+ this.saveButton = page.getByRole("button", { name: translate("administration:category:general.save") });
8639
+ this.cancelButton = page.getByRole("button", { name: translate("administration:category:general.cancel") });
6159
8640
  if (satisfies(instanceMeta.version, "<6.7")) {
6160
- this.customFieldCard = page.locator(".sw-card").getByText("Custom fields");
8641
+ this.customFieldCard = page.locator(".sw-card").getByText(translate("administration:category:general.customFields"));
6161
8642
  } else {
6162
- this.customFieldCard = page.locator(".mt-card").getByText("Custom fields");
8643
+ this.customFieldCard = page.locator(".mt-card").getByText(translate("administration:category:general.customFields"));
6163
8644
  }
6164
8645
  this.customFieldSetTabs = this.customFieldCard.locator(".sw-tabs-item");
6165
8646
  this.customFieldSetTabCustomContent = this.customFieldCard.locator(".sw-tabs__custom-content");
@@ -6167,9 +8648,9 @@ class CategoryDetail {
6167
8648
  async getCustomFieldSetCardContentByName(customFieldSetName) {
6168
8649
  let customFieldCard;
6169
8650
  if (satisfies(this.instanceMeta.version, "<6.7")) {
6170
- customFieldCard = this.page.locator(".sw-card").filter({ hasText: "Custom fields" });
8651
+ customFieldCard = this.page.locator(".sw-card").filter({ hasText: translate("administration:category:general.customFields") });
6171
8652
  } else {
6172
- customFieldCard = this.page.locator(".mt-card").filter({ hasText: "Custom fields" });
8653
+ customFieldCard = this.page.locator(".mt-card").filter({ hasText: translate("administration:category:general.customFields") });
6173
8654
  }
6174
8655
  const customFieldSetTab = customFieldCard.getByText(customFieldSetName);
6175
8656
  const customFieldSetTabCustomContent = customFieldCard.locator(`.sw-custom-field-set-renderer-tab-content__${customFieldSetName}`);
@@ -6202,13 +8683,13 @@ class RuleCreate {
6202
8683
  this.page = page;
6203
8684
  this.instanceMeta = instanceMeta;
6204
8685
  this.header = page.locator(".smart-bar__header");
6205
- this.nameInput = page.getByLabel("Name");
6206
- this.priorityInput = page.getByLabel("Priority");
8686
+ this.nameInput = page.getByLabel(translate("administration:rule:fields.name"));
8687
+ this.priorityInput = page.getByLabel(translate("administration:rule:fields.priority"));
6207
8688
  this.conditionTypeSelectionInput = page.locator(".sw-condition-type-select").locator(".sw-single-select__selection");
6208
8689
  this.conditionValueSelectionInput = page.locator(".sw-condition__value-content").locator(".sw-entity-single-select__selection");
6209
8690
  this.filtersResultPopoverSelectionList = page.locator(".sw-select-result-list__content").getByRole("listitem");
6210
- this.saveButton = page.getByRole("button", { name: "Save" });
6211
- this.cancelButton = page.getByRole("button", { name: "Cancel" });
8691
+ this.saveButton = page.getByRole("button", { name: translate("administration:rule:buttons.save") });
8692
+ this.cancelButton = page.getByRole("button", { name: translate("administration:rule:buttons.cancel") });
6212
8693
  this.valueNotAvailableTooltip = page.locator(".sw-tooltip");
6213
8694
  }
6214
8695
  url() {
@@ -6289,15 +8770,15 @@ class RuleDetail extends RuleCreate {
6289
8770
  this.assignmentModalSearchField = this.assignmentModal.getByRole("textbox");
6290
8771
  this.adminMenuAvatar = page.locator(".sw-admin-menu__avatar");
6291
8772
  if (satisfies(instanceMeta.version, "<6.7")) {
6292
- this.assignmentModalAddButton = this.assignmentModal.locator(".sw-button--primary").getByText("Add");
8773
+ this.assignmentModalAddButton = this.assignmentModal.locator(".sw-button--primary").getByText(translate("administration:rule:buttons.add"));
6293
8774
  } else {
6294
- this.assignmentModalAddButton = this.assignmentModal.locator(".mt-button--primary").getByText("Add");
8775
+ this.assignmentModalAddButton = this.assignmentModal.locator(".mt-button--primary").getByText(translate("administration:rule:buttons.add"));
6295
8776
  }
6296
8777
  this.conditionORContainer = page.locator(".sw-condition-or-container");
6297
8778
  }
6298
8779
  async getEntityCard(cardLocator) {
6299
8780
  return {
6300
- addAssignmentButton: cardLocator.getByText("Add assignment")
8781
+ addAssignmentButton: cardLocator.getByText(translate("administration:rule:buttons.addAssignment"))
6301
8782
  };
6302
8783
  }
6303
8784
  url(ruleId, tabName = "base") {
@@ -6312,7 +8793,7 @@ class RuleListing {
6312
8793
  page;
6313
8794
  constructor(page) {
6314
8795
  this.page = page;
6315
- this.createRuleButton = page.getByText("Create rule");
8796
+ this.createRuleButton = page.getByText(translate("administration:rule:buttons.createRule"));
6316
8797
  this.header = page.locator(".smart-bar__header");
6317
8798
  this.grid = page.locator(".sw-data-grid__table)");
6318
8799
  }
@@ -6332,10 +8813,10 @@ class ManufacturerCreate {
6332
8813
  constructor(page, instanceMeta) {
6333
8814
  this.page = page;
6334
8815
  this.instanceMeta = instanceMeta;
6335
- this.saveButton = page.getByRole("button", { name: "Save" });
6336
- this.cancelButton = page.getByRole("button", { name: "Cancel" });
6337
- this.nameInput = page.getByLabel("Name");
6338
- this.websiteInput = page.getByLabel("Website");
8816
+ this.saveButton = page.getByRole("button", { name: translate("administration:manufacturer:create.save") });
8817
+ this.cancelButton = page.getByRole("button", { name: translate("administration:manufacturer:create.cancel") });
8818
+ this.nameInput = page.getByLabel(translate("administration:manufacturer:create.name"));
8819
+ this.websiteInput = page.getByLabel(translate("administration:manufacturer:create.website"));
6339
8820
  if (satisfies(instanceMeta.version, "<6.8")) {
6340
8821
  this.descriptionInput = page.locator(".sw-text-editor__content-editor");
6341
8822
  } else {
@@ -6353,7 +8834,7 @@ class ManufacturerListing {
6353
8834
  page;
6354
8835
  constructor(page) {
6355
8836
  this.page = page;
6356
- this.addManufacturerButton = page.getByText("Add manufacturer");
8837
+ this.addManufacturerButton = page.getByText(translate("administration:manufacturer:listing.addManufacturer"));
6357
8838
  this.manufacturerRows = page.getByRole("row");
6358
8839
  }
6359
8840
  async getLineItemByManufacturerName(manufacturerName) {
@@ -6362,11 +8843,11 @@ class ManufacturerListing {
6362
8843
  const manufacturerWebsiteText = lineItem.locator(".sw-data-grid__cell--link");
6363
8844
  const manufacturerCheckbox = lineItem.locator(".sw-data-grid__cell--selection");
6364
8845
  const manufacturerContextButton = lineItem.locator(".sw-context-button__button");
6365
- const manufacturerEditButton = this.page.locator(".sw-context-menu__content").getByRole("link", { name: "Edit" });
6366
- const manufacturerDeleteButton = this.page.locator(".sw-context-menu__content").getByRole("link", { name: "Delete" });
6367
- const warningDialog = this.page.getByRole("dialog", { name: "Warning" });
6368
- const warningDialogCancelButton = warningDialog.getByRole("button", { name: "Cancel" });
6369
- const warningDialogDeleteButton = warningDialog.getByRole("button", { name: "Delete" });
8846
+ const manufacturerEditButton = this.page.locator(".sw-context-menu__content").getByRole("link", { name: translate("administration:manufacturer:actions.edit") });
8847
+ const manufacturerDeleteButton = this.page.locator(".sw-context-menu__content").getByRole("link", { name: translate("administration:manufacturer:actions.delete") });
8848
+ const warningDialog = this.page.getByRole("dialog", { name: translate("administration:manufacturer:dialogs.warning") });
8849
+ const warningDialogCancelButton = warningDialog.getByRole("button", { name: translate("administration:manufacturer:actions.cancel") });
8850
+ const warningDialogDeleteButton = warningDialog.getByRole("button", { name: translate("administration:manufacturer:actions.delete") });
6370
8851
  return {
6371
8852
  manufacturerNameText,
6372
8853
  manufacturerWebsiteText,
@@ -6391,9 +8872,9 @@ class ManufacturerDetail extends ManufacturerCreate {
6391
8872
  constructor(page, instanceMeta) {
6392
8873
  super(page, instanceMeta);
6393
8874
  if (satisfies(instanceMeta.version, "<6.7")) {
6394
- this.customFieldCard = page.locator(".sw-card").getByText("Custom fields");
8875
+ this.customFieldCard = page.locator(".sw-card").getByText(translate("administration:manufacturer:detail.customFields"));
6395
8876
  } else {
6396
- this.customFieldCard = page.locator(".mt-card").getByText("Custom fields");
8877
+ this.customFieldCard = page.locator(".mt-card").getByText(translate("administration:manufacturer:detail.customFields"));
6397
8878
  }
6398
8879
  this.customFieldSetTabs = this.customFieldCard.locator(".sw-tabs-item");
6399
8880
  this.customFieldSetTabCustomContent = this.customFieldCard.locator(".sw-tabs__custom-content");
@@ -6401,9 +8882,9 @@ class ManufacturerDetail extends ManufacturerCreate {
6401
8882
  async getCustomFieldSetCardContentByName(customFieldSetName) {
6402
8883
  let customFieldCard;
6403
8884
  if (satisfies(this.instanceMeta.version, "<6.7")) {
6404
- customFieldCard = this.page.locator(".mt-card").filter({ hasText: "Custom fields" });
8885
+ customFieldCard = this.page.locator(".mt-card").filter({ hasText: translate("administration:manufacturer:detail.customFields") });
6405
8886
  } else {
6406
- customFieldCard = this.page.locator(".mt-card").filter({ hasText: "Custom fields" });
8887
+ customFieldCard = this.page.locator(".mt-card").filter({ hasText: translate("administration:manufacturer:detail.customFields") });
6407
8888
  }
6408
8889
  const customFieldSetTab = customFieldCard.getByText(customFieldSetName);
6409
8890
  const customFieldSetTabCustomContent = customFieldCard.locator(`.sw-custom-field-set-renderer-tab-content__${customFieldSetName}`);
@@ -6432,9 +8913,9 @@ class ProductListing {
6432
8913
  constructor(page) {
6433
8914
  this.page = page;
6434
8915
  this.productsTable = page.locator(".sw-data-grid__table");
6435
- this.bulkEditButton = page.getByRole("button", { name: "Bulk edit" });
8916
+ this.bulkEditButton = page.getByRole("button", { name: translate("administration:product:listing.bulkEdit") });
6436
8917
  this.bulkEditModal = page.locator(".sw-product-bulk-edit-modal");
6437
- this.startBulkEditButton = this.bulkEditModal.getByRole("button", { name: "Start bulk edit" });
8918
+ this.startBulkEditButton = this.bulkEditModal.getByRole("button", { name: translate("administration:product:listing.startBulkEdit") });
6438
8919
  }
6439
8920
  /**
6440
8921
  * Returns the url to the listing page.
@@ -6564,12 +9045,12 @@ class ProductBulkEdit {
6564
9045
  this.salesChannelChangeMethodDropdown = this.changeSalesChannelRow.locator(".sw-single-select__selection-text");
6565
9046
  this.salesChannelChangeMethodInput = this.changeSalesChannelRow.locator(".sw-single-select__selection-input");
6566
9047
  this.salesChannelInput = this.changeSalesChannelRow.getByRole("combobox");
6567
- this.applyChangesButton = page.getByRole("button", { name: "Apply changes" });
9048
+ this.applyChangesButton = page.getByRole("button", { name: translate("administration:product:bulkEdit.applyChanges") });
6568
9049
  this.confirmModal = page.locator(".sw-bulk-edit-save-modal");
6569
- this.confirmModalApplyChangesButton = this.confirmModal.getByRole("button", { name: "Apply changes" });
9050
+ this.confirmModalApplyChangesButton = this.confirmModal.getByRole("button", { name: translate("administration:product:bulkEdit.applyChanges") });
6570
9051
  this.confirmModalLoadingSpinner = this.confirmModal.locator(".sw-bulk-edit-save-modal__loading-icon");
6571
- this.confirmModalSuccessHeader = this.confirmModal.getByRole("heading", { name: "Bulk edit - Success" });
6572
- this.confirmModalSuccessCloseButton = this.confirmModal.getByRole("button", { name: "Close" }).first();
9052
+ this.confirmModalSuccessHeader = this.confirmModal.getByRole("heading", { name: translate("administration:product:bulkEdit.success") });
9053
+ this.confirmModalSuccessCloseButton = this.confirmModal.getByRole("button", { name: translate("administration:product:bulkEdit.close") }).first();
6573
9054
  }
6574
9055
  url() {
6575
9056
  throw new Error("Bulk edit page does not have a callable URL.");
@@ -6610,19 +9091,19 @@ class CustomerBulkEdit {
6610
9091
  page;
6611
9092
  constructor(page) {
6612
9093
  this.page = page;
6613
- this.applyChangesButton = page.getByRole("button", { name: "Apply changes" });
9094
+ this.applyChangesButton = page.getByRole("button", { name: translate("administration:customer:bulkEdit.applyChanges") });
6614
9095
  this.filtersResultPopoverItemList = page.locator(".sw-select-result-list__content").getByRole("listitem");
6615
- this.changeCustomerGroupCheckbox = page.getByRole("checkbox", { name: "Change: Customer group" });
6616
- this.customerGroupInput = page.locator(".sw-select").filter({ hasText: "Select customer group..." }).locator(".sw-select__selection");
9096
+ this.changeCustomerGroupCheckbox = page.getByRole("checkbox", { name: translate("administration:customer:bulkEdit.changes.customerGroup") });
9097
+ this.customerGroupInput = page.locator(".sw-select").filter({ hasText: translate("administration:customer:bulkEdit.placeholders.selectCustomerGroup") }).locator(".sw-select__selection");
6617
9098
  const accountStatus = page.locator(".sw-bulk-edit-change-field-active");
6618
- this.changeAccountStatusCheckbox = accountStatus.getByRole("checkbox", { name: "Change: Account status" });
9099
+ this.changeAccountStatusCheckbox = accountStatus.getByRole("checkbox", { name: translate("administration:customer:bulkEdit.changes.accountStatus") });
6619
9100
  this.accountStatusInput = accountStatus.locator(".sw-field--switch__input");
6620
- this.changeLanguageCheckbox = page.getByRole("checkbox", { name: "Change: Language" });
6621
- this.changeLanguageInput = page.locator(".sw-select").filter({ hasText: "Select language..." }).locator(".sw-select__selection");
6622
- this.replyToCustomerGroupRequest = page.getByRole("checkbox", { name: "Reply to: Customer group request" });
6623
- this.replyToCustomerGroupRequestInput = page.locator(".sw-select").filter({ hasText: "Select customer group request reply..." }).locator(".sw-select__selection");
9101
+ this.changeLanguageCheckbox = page.getByRole("checkbox", { name: translate("administration:customer:bulkEdit.changes.language") });
9102
+ this.changeLanguageInput = page.locator(".sw-select").filter({ hasText: translate("administration:customer:bulkEdit.placeholders.selectLanguage") }).locator(".sw-select__selection");
9103
+ this.replyToCustomerGroupRequest = page.getByRole("checkbox", { name: translate("administration:customer:bulkEdit.changes.replyToRequest") });
9104
+ this.replyToCustomerGroupRequestInput = page.locator(".sw-select").filter({ hasText: translate("administration:customer:bulkEdit.placeholders.selectCustomerGroupRequestReply") }).locator(".sw-select__selection");
6624
9105
  const changeTag = page.locator(".sw-bulk-edit-change-field-tags");
6625
- this.changeTagsCheckbox = changeTag.getByRole("checkbox", { name: "Change: Tags" });
9106
+ this.changeTagsCheckbox = changeTag.getByRole("checkbox", { name: translate("administration:customer:bulkEdit.changes.tags") });
6626
9107
  this.changeTypeSelect = changeTag.locator(".sw-bulk-edit-change-type__selection");
6627
9108
  this.enterTagsSelect = changeTag.locator(".sw-entity-multi-select input");
6628
9109
  const customFields = page.locator(".sw-bulk-edit__custom-fields");
@@ -6630,10 +9111,10 @@ class CustomerBulkEdit {
6630
9111
  this.customFieldCheckbox = customFields.getByRole("checkbox");
6631
9112
  this.customFieldInput = customFields.getByRole("textbox");
6632
9113
  this.confirmModal = page.locator(".sw-bulk-edit-save-modal");
6633
- this.confirmModalApplyChangesButton = this.confirmModal.getByRole("button", { name: "Apply changes" });
6634
- this.confirmModalSuccessHeader = this.confirmModal.getByRole("heading", { name: "Bulk edit - Success" });
9114
+ this.confirmModalApplyChangesButton = this.confirmModal.getByRole("button", { name: translate("administration:customer:bulkEdit.applyChanges") });
9115
+ this.confirmModalSuccessHeader = this.confirmModal.getByRole("heading", { name: translate("administration:customer:bulkEdit.success") });
6635
9116
  const footer = this.confirmModal.locator(".sw-modal__footer");
6636
- this.confirmModalSuccessCloseButton = footer.getByRole("button", { name: "Close" });
9117
+ this.confirmModalSuccessCloseButton = footer.getByRole("button", { name: translate("administration:customer:bulkEdit.close") });
6637
9118
  }
6638
9119
  async getPageHeadline(customerCount) {
6639
9120
  return this.page.getByRole("heading", { name: `Bulk edit: ${customerCount} customer` });
@@ -6660,7 +9141,7 @@ class SettingsListing {
6660
9141
  this.page = page;
6661
9142
  this.header = page.locator(".sw-settings__content-header");
6662
9143
  this.contentView = page.locator(".sw-desktop__content");
6663
- this.shopwareServicesLink = page.locator(".sw-settings__content-grid").getByRole("link", { name: "Shopware Services" });
9144
+ this.shopwareServicesLink = page.locator(".sw-settings__content-grid").getByRole("link", { name: translate("administration:shopwareServices:links.shopwareServices") });
6664
9145
  }
6665
9146
  url() {
6666
9147
  return "#/sw/settings/index/shop";
@@ -6673,8 +9154,8 @@ class DocumentListing {
6673
9154
  page;
6674
9155
  constructor(page) {
6675
9156
  this.page = page;
6676
- this.addDocumentButton = page.getByRole("button", { name: "Add document" });
6677
- this.invoiceLink = page.getByRole("link", { name: "invoice", exact: true });
9157
+ this.addDocumentButton = page.getByRole("button", { name: translate("administration:document:listing.addDocument") });
9158
+ this.invoiceLink = page.getByRole("link", { name: translate("administration:document:types.invoice"), exact: true });
6678
9159
  }
6679
9160
  url() {
6680
9161
  return `#/sw/settings/document/index`;
@@ -6688,8 +9169,8 @@ class DocumentDetail {
6688
9169
  page;
6689
9170
  constructor(page) {
6690
9171
  this.page = page;
6691
- this.showInAccountSwitch = page.getByRole("checkbox", { name: 'Display document in "My' });
6692
- this.saveButton = page.getByRole("button", { name: "Save" });
9172
+ this.showInAccountSwitch = page.getByRole("checkbox", { name: translate("administration:document:detail.displayDocumentInMyAccount") });
9173
+ this.saveButton = page.getByRole("button", { name: translate("administration:document:detail.save") });
6693
9174
  this.documentTypeSelect = page.locator(".sw-settings-document-detail__select-type");
6694
9175
  }
6695
9176
  url(documentId) {
@@ -6710,15 +9191,15 @@ class ShopwareServices {
6710
9191
  page;
6711
9192
  constructor(page) {
6712
9193
  this.page = page;
6713
- this.header = page.getByRole("heading", { name: "Future proof your store with Shopware Services" });
9194
+ this.header = page.getByRole("heading", { name: translate("administration:shopwareServices:headings.futureProofStore") });
6714
9195
  this.deactivatedBanner = page.locator(".sw-settings-services-index__services-deactivated-banner");
6715
- this.activateServicesButton = page.getByRole("button", { name: "Activate Services" });
9196
+ this.activateServicesButton = page.getByRole("button", { name: translate("administration:shopwareServices:buttons.activateServices") });
6716
9197
  this.permissionBanner = page.locator(".sw-settings-services-grant-permission-card");
6717
- this.permissionGrantButton = page.getByRole("button", { name: "Grant permissions" });
9198
+ this.permissionGrantButton = page.getByRole("button", { name: translate("administration:shopwareServices:buttons.grantPermissions") });
6718
9199
  this.serviceCards = page.locator(".sw-settings-services-service-card");
6719
- this.deactivateServicesButton = page.getByRole("button", { name: "Deactivate" });
6720
- this.deactivateServicesModal = page.getByRole("dialog", { name: "Deactivate Shopware Services" });
6721
- this.deactivateServicesConfirmButton = this.deactivateServicesModal.getByRole("button", { name: "Deactivate" });
9200
+ this.deactivateServicesButton = page.getByRole("button", { name: translate("administration:shopwareServices:buttons.deactivate") });
9201
+ this.deactivateServicesModal = page.getByRole("dialog", { name: translate("administration:shopwareServices:modals.deactivateServices") });
9202
+ this.deactivateServicesConfirmButton = this.deactivateServicesModal.getByRole("button", { name: translate("administration:shopwareServices:buttons.deactivate") });
6722
9203
  }
6723
9204
  url() {
6724
9205
  return "#/sw/settings/services/index/";
@@ -6746,14 +9227,14 @@ class PromotionsListing {
6746
9227
  this.smartBar = page.locator(".smart-bar__content");
6747
9228
  this.smartBarHeader = this.smartBar.locator(".smart-bar__header");
6748
9229
  this.languageSelect = this.smartBar.locator(".sw-entity-single-select__selection");
6749
- this.smartBarAddPromotionButton = this.smartBar.getByRole("button", { name: "Add promotion" });
9230
+ this.smartBarAddPromotionButton = this.smartBar.getByRole("button", { name: translate("administration:promotion:actions.addPromotion") });
6750
9231
  this.emptyState = page.locator(".sw-promotion-v2-empty-state-hero");
6751
- this.emptyStateAddPromotionButton = this.emptyState.getByRole("button", { name: "Add promotion" });
9232
+ this.emptyStateAddPromotionButton = this.emptyState.getByRole("button", { name: translate("administration:promotion:actions.addPromotion") });
6752
9233
  this.promotionsTable = page.locator(".sw-data-grid__table");
6753
9234
  this.sidebarRefreshButton = page.getByTitle("Refresh");
6754
9235
  if (satisfies(instanceMeta.version, "<6.7")) {
6755
- this.smartBarAddPromotionButton = this.smartBar.getByRole("link", { name: "Add promotion" });
6756
- this.emptyStateAddPromotionButton = this.emptyState.getByRole("link", { name: "Add promotion" });
9236
+ this.smartBarAddPromotionButton = this.smartBar.getByRole("link", { name: translate("administration:promotion:actions.addPromotion") });
9237
+ this.emptyStateAddPromotionButton = this.emptyState.getByRole("link", { name: translate("administration:promotion:actions.addPromotion") });
6757
9238
  }
6758
9239
  }
6759
9240
  /**
@@ -6790,12 +9271,12 @@ class PromotionsListing {
6790
9271
  const promotionInactive = promotionTableRow.locator(".is--inactive");
6791
9272
  const promotionContextButton = promotionTableRow.locator(".sw-context-button");
6792
9273
  const promotionContextMenu = ".sw-context-menu";
6793
- const promotionContextMenuEdit = this.page.locator(promotionContextMenu).getByRole("link", { name: "Edit" });
6794
- let promotionContextMenuDuplicate = this.page.locator(promotionContextMenu).getByRole("button", { name: "Duplicate" });
6795
- let promotionContextMenuDelete = this.page.locator(promotionContextMenu).getByRole("button", { name: "Delete" });
9274
+ const promotionContextMenuEdit = this.page.locator(promotionContextMenu).getByRole("link", { name: translate("administration:promotion:actions.edit") });
9275
+ let promotionContextMenuDuplicate = this.page.locator(promotionContextMenu).getByRole("button", { name: translate("administration:promotion:actions.duplicate") });
9276
+ let promotionContextMenuDelete = this.page.locator(promotionContextMenu).getByRole("button", { name: translate("administration:promotion:actions.delete") });
6796
9277
  if (satisfies(this.instanceMeta.version, "<6.7")) {
6797
- promotionContextMenuDuplicate = this.page.locator(promotionContextMenu).locator(".sw-context-menu-item", { hasText: "Duplicate" });
6798
- promotionContextMenuDelete = this.page.locator(promotionContextMenu).locator(".sw-context-menu-item", { hasText: "Delete" });
9278
+ promotionContextMenuDuplicate = this.page.locator(promotionContextMenu).locator(".sw-context-menu-item", { hasText: translate("administration:promotion:actions.duplicate") });
9279
+ promotionContextMenuDelete = this.page.locator(promotionContextMenu).locator(".sw-context-menu-item", { hasText: translate("administration:promotion:actions.delete") });
6799
9280
  }
6800
9281
  return {
6801
9282
  selectionCheckbox,
@@ -6831,11 +9312,11 @@ class PromotionCreate {
6831
9312
  this.smartBar = page.locator(".smart-bar__content");
6832
9313
  this.smartBarHeader = this.smartBar.locator(".smart-bar__header");
6833
9314
  this.languageSelect = this.smartBar.locator(".sw-entity-single-select__selection");
6834
- this.saveButton = this.smartBar.getByRole("button", { name: "Save" });
6835
- this.cancelButton = this.smartBar.getByRole("button", { name: "Cancel" });
9315
+ this.saveButton = this.smartBar.getByRole("button", { name: translate("administration:promotion:actions.save") });
9316
+ this.cancelButton = this.smartBar.getByRole("button", { name: translate("administration:promotion:actions.cancel") });
6836
9317
  this.generalCard = page.locator(".sw-promotion-v2-detail-base__card-general");
6837
9318
  this.nameInput = this.generalCard.locator(".sw-promotion-v2-detail-base__field-name").getByRole("textbox");
6838
- this.priorityInput = this.generalCard.getByLabel("Priority");
9319
+ this.priorityInput = this.generalCard.getByLabel(translate("administration:promotion:fields.priority"));
6839
9320
  }
6840
9321
  /**
6841
9322
  * Returns the url to the creation page.
@@ -6865,19 +9346,19 @@ class PromotionDetail extends PromotionCreate {
6865
9346
  super(page, instanceMeta);
6866
9347
  this.page = page;
6867
9348
  this.instanceMeta = instanceMeta;
6868
- this.tabGeneralLink = page.getByRole("tab", { name: "General" });
6869
- this.tabConditionsLink = page.getByRole("tab", { name: "Conditions" });
6870
- this.tabDiscountsLink = page.getByRole("tab", { name: "Discounts" });
9349
+ this.tabGeneralLink = page.getByRole("tab", { name: translate("administration:promotion:tabs.general") });
9350
+ this.tabConditionsLink = page.getByRole("tab", { name: translate("administration:promotion:tabs.conditions") });
9351
+ this.tabDiscountsLink = page.getByRole("tab", { name: translate("administration:promotion:tabs.discounts") });
6871
9352
  this.promotionCodesCard = page.locator(".sw-promotion-v2-detail-base__card-codes");
6872
- this.promotionCodesHeading = this.promotionCodesCard.getByRole("heading", { name: "Promotion codes" });
9353
+ this.promotionCodesHeading = this.promotionCodesCard.getByRole("heading", { name: translate("administration:promotion:headings.promotionCodes") });
6873
9354
  this.promotionCodesSelection = this.promotionCodesCard.locator(".mt-select__selection");
6874
- this.preConditionsCard = page.locator(".mt-card__wrapper", { hasText: "Pre-conditions" });
6875
- this.addDiscountButton = page.getByRole("button", { name: "Add discount" });
9355
+ this.preConditionsCard = page.locator(".mt-card__wrapper", { hasText: translate("administration:promotion:cards.preConditions") });
9356
+ this.addDiscountButton = page.getByRole("button", { name: translate("administration:promotion:actions.addDiscount") });
6876
9357
  this.discountCards = page.locator(".sw-promotion-detail-discounts__discount-list");
6877
9358
  if (satisfies(instanceMeta.version, "<6.7")) {
6878
9359
  this.promotionCodesHeading = this.promotionCodesCard.locator(".sw-card__title");
6879
9360
  this.promotionCodesSelection = this.promotionCodesCard.getByRole("combobox");
6880
- this.preConditionsCard = page.locator(".sw-card-wrapper", { hasText: "Pre-conditions" });
9361
+ this.preConditionsCard = page.locator(".sw-card-wrapper", { hasText: translate("administration:promotion:cards.preConditions") });
6881
9362
  }
6882
9363
  }
6883
9364
  /**
@@ -6907,12 +9388,12 @@ class YourProfile {
6907
9388
  constructor(page) {
6908
9389
  this.page = page;
6909
9390
  this.contentView = page.locator(".sw-desktop__content");
6910
- this.searchPreferencesTab = page.locator(".sw-tabs-item").filter({ hasText: "Search preferences" });
6911
- this.firstNameField = page.getByRole("textbox", { name: "First name" });
6912
- this.lastNameField = page.getByRole("textbox", { name: "Last name" });
6913
- this.userNameField = page.getByRole("textbox", { name: "Username" });
6914
- this.emailField = page.getByRole("textbox", { name: "Email" });
6915
- this.deselectAllButton = page.getByRole("button", { name: "Deselect all" });
9391
+ this.searchPreferencesTab = page.locator(".sw-tabs-item").filter({ hasText: translate("administration:yourProfile:tabs.searchPreferences") });
9392
+ this.firstNameField = page.getByRole("textbox", { name: translate("administration:yourProfile:fields.firstName") });
9393
+ this.lastNameField = page.getByRole("textbox", { name: translate("administration:yourProfile:fields.lastName") });
9394
+ this.userNameField = page.getByRole("textbox", { name: translate("administration:yourProfile:fields.username") });
9395
+ this.emailField = page.getByRole("textbox", { name: translate("administration:yourProfile:fields.email") });
9396
+ this.deselectAllButton = page.getByRole("button", { name: translate("administration:yourProfile:buttons.deselectAll") });
6916
9397
  }
6917
9398
  url() {
6918
9399
  return "#/sw/profile/index/general";
@@ -6961,7 +9442,7 @@ class MediaListing {
6961
9442
  this.page = page;
6962
9443
  this.scrollableElementVertical = page.locator(".sw-media-library__scroll-container");
6963
9444
  this.mediaFolder = (title) => page.locator(".sw-media-folder-item", { hasText: title });
6964
- this.emptyState = page.locator(".sw-empty-state__element");
9445
+ this.emptyState = page.locator(".sw-media-library__empty-state");
6965
9446
  this.updatedAtDate = page.locator(".sw-media-quickinfo-metadata-createdAt.sw-media-quickinfo-metadata-item__description");
6966
9447
  }
6967
9448
  url() {
@@ -6977,7 +9458,7 @@ class LayoutListing {
6977
9458
  pagination;
6978
9459
  constructor(page) {
6979
9460
  this.page = page;
6980
- this.createNewLayoutButton = page.getByRole("button", { name: "Create new layout" });
9461
+ this.createNewLayoutButton = page.getByRole("button", { name: translate("administration:layout:listing.createNewLayout") });
6981
9462
  this.viewChangeButton = page.locator(".sw-cms-list__actions-mode");
6982
9463
  this.listingGrid = page.locator(".sw-cms-list__list-grid");
6983
9464
  this.pagination = page.locator(".sw-pagination__list");
@@ -7005,17 +9486,17 @@ class LayoutCreate {
7005
9486
  page;
7006
9487
  constructor(page) {
7007
9488
  this.page = page;
7008
- this.shopPageButton = page.getByRole("button", { name: "Shop page" });
7009
- this.landingPageButton = page.getByRole("button", { name: "Landing page" });
7010
- this.listingPageButton = page.getByRole("button", { name: "Listing page" });
7011
- this.productPageButton = page.getByRole("button", { name: "Product page" });
7012
- this.cancelButton = page.getByRole("link", { name: "Cancel" });
7013
- this.saveButton = page.getByRole("button", { name: "Save" });
7014
- this.fullWidthButton = page.getByRole("button", { name: "Full width" });
7015
- this.sidebarButton = page.getByRole("button", { name: "Sidebar" });
7016
- this.backButton = page.getByRole("button", { name: "Back" });
7017
- this.layoutNameInput = page.getByRole("textbox", { name: "Layout name" });
7018
- this.createLayoutButton = page.getByRole("button", { name: "Create layout" });
9489
+ this.shopPageButton = page.getByRole("button", { name: translate("administration:layout:create.shopPage") });
9490
+ this.landingPageButton = page.getByRole("button", { name: translate("administration:layout:create.landingPage") });
9491
+ this.listingPageButton = page.getByRole("button", { name: translate("administration:layout:create.listingPage") });
9492
+ this.productPageButton = page.getByRole("button", { name: translate("administration:layout:create.productPage") });
9493
+ this.cancelButton = page.getByRole("link", { name: translate("administration:layout:create.cancel") });
9494
+ this.saveButton = page.getByRole("button", { name: translate("administration:layout:create.save") });
9495
+ this.fullWidthButton = page.getByRole("button", { name: translate("administration:layout:create.fullWidth") });
9496
+ this.sidebarButton = page.getByRole("button", { name: translate("administration:layout:create.sidebar") });
9497
+ this.backButton = page.getByRole("button", { name: translate("administration:layout:create.back") });
9498
+ this.layoutNameInput = page.getByRole("textbox", { name: translate("administration:layout:create.layoutName") });
9499
+ this.createLayoutButton = page.getByRole("button", { name: translate("administration:layout:create.createLayout") });
7019
9500
  }
7020
9501
  url() {
7021
9502
  return `#/sw/cms/create`;
@@ -7048,15 +9529,15 @@ class ListingPageLayoutDetail {
7048
9529
  this.fullWidthSection = page.locator(".sw-cms-stage-section-selection__default");
7049
9530
  this.sidebarSection = page.locator(".sw-cms-stage-section-selection__sidebar");
7050
9531
  this.sectionEmptyState = page.locator(".sw-cms-section__empty-stage");
7051
- this.saveButton = page.getByRole("button", { name: "Save" });
9532
+ this.saveButton = page.getByRole("button", { name: translate("administration:layout:detail.save") });
7052
9533
  this.loadingSpinner = page.locator(".sw-loader");
7053
9534
  this.loaderButton = page.locator(".mt-button__loader");
7054
9535
  this.productListingBlock = page.locator(".sw-cms-block-product-listing");
7055
9536
  this.sidebarTitle = page.locator(".sw-sidebar-item__title");
7056
- this.settingsButton = page.locator('button[title="Settings"]');
7057
- this.blocksButton = page.locator('button[title="Blocks"]');
7058
- this.navigatorButton = page.locator('button[title="Navigator"]');
7059
- this.layoutAssignmentButton = page.locator('button[title="Layout assignment"]');
9537
+ this.settingsButton = page.locator(`button[title="${translate("administration:layout:detail.settings")}"]`);
9538
+ this.blocksButton = page.locator(`button[title="${translate("administration:layout:detail.blocks")}"]`);
9539
+ this.navigatorButton = page.locator(`button[title="${translate("administration:layout:detail.navigator")}"]`);
9540
+ this.layoutAssignmentButton = page.locator(`button[title="${translate("administration:layout:detail.layoutAssignment")}"]`);
7060
9541
  }
7061
9542
  url(layoutId) {
7062
9543
  return `#/sw/cms/detail/${layoutId}`;
@@ -7811,7 +10292,7 @@ const SaveProduct = test$e.extend({
7811
10292
  await ShopAdmin.expects(AdminProductDetail.savePhysicalProductButton).toContainText("Save");
7812
10293
  await ShopAdmin.expects(AdminProductDetail.saveButtonCheckMark).toBeHidden();
7813
10294
  await ShopAdmin.expects(AdminProductDetail.saveButtonLoadingSpinner).toBeHidden();
7814
- await ShopAdmin.expects(AdminProductDetail.page.getByText("The following error occurred:")).toBeHidden();
10295
+ await ShopAdmin.expects(AdminProductDetail.page.getByText(translate("administration:product:errors.followingErrorOccurred"))).toBeHidden();
7815
10296
  };
7816
10297
  };
7817
10298
  await use(task);
@@ -7848,7 +10329,7 @@ const CreateLinkTypeCategory = test$e.extend({
7848
10329
  const task = (categoryData, categoryCustomizableLinkData, parentCategoryName) => {
7849
10330
  return async function CreateLinkTypeCategory2() {
7850
10331
  await AdminCategories.getTreeItemContextButton(parentCategoryName).click();
7851
- await AdminCategories.page.getByText("New category after").click();
10332
+ await AdminCategories.page.getByText(translate("administration:category:actions.newCategoryAfter")).click();
7852
10333
  await AdminCategories.createCategoryInput.fill(categoryData.name);
7853
10334
  await AdminCategories.confirmCategoryCreationButton.click();
7854
10335
  await AdminCategories.fadingBar.first().waitFor({ state: "hidden" });
@@ -8120,7 +10601,7 @@ const CreateFlow = test$e.extend({
8120
10601
  const task = (flowConfig) => {
8121
10602
  return async function createFlow() {
8122
10603
  await AdminFlowBuilderListing.createFlowButton.click();
8123
- await ShopAdmin.expects(AdminFlowBuilderCreate.smartBarHeader).toHaveText("New flow");
10604
+ await ShopAdmin.expects(AdminFlowBuilderCreate.smartBarHeader).toHaveText(translate("administration:flowBuilder:create.newFlow"));
8124
10605
  await AdminFlowBuilderCreate.nameField.fill(`${flowConfig.name}`);
8125
10606
  await AdminFlowBuilderCreate.descriptionField.fill(`${flowConfig.description}`);
8126
10607
  await AdminFlowBuilderCreate.priorityField.fill(`${flowConfig.priority}`);
@@ -8231,13 +10712,15 @@ const CheckAccessToShopwareServices = test$e.extend({
8231
10712
  }
8232
10713
  const adminPage = await createNewAdminPageContext(user, browser, SalesChannelBaseConfig, TestDataService.AdminApiClient);
8233
10714
  const shopwareServicesAdvertisementBanner = adminPage.locator(".sw-settings-services-dashboard-banner__content").first();
8234
- const shopwareServicesExploreNowButton = shopwareServicesAdvertisementBanner.getByRole("button", { name: "Explore now" });
10715
+ const shopwareServicesExploreNowButton = shopwareServicesAdvertisementBanner.getByRole("button", {
10716
+ name: translate("administration:shopwareServices:buttons.exploreNow")
10717
+ });
8235
10718
  await expect(shopwareServicesAdvertisementBanner).toBeVisible();
8236
10719
  await expect(shopwareServicesExploreNowButton).toBeVisible();
8237
- await expect(shopwareServicesAdvertisementBanner).toContainText("Introducing Shopware Services");
10720
+ await expect(shopwareServicesAdvertisementBanner).toContainText(translate("administration:shopwareServices:dashboard.shopwareServicesIntroduction"));
8238
10721
  await shopwareServicesExploreNowButton.click();
8239
- const adminPrivilegeHeader = adminPage.getByRole("heading", { name: "Access denied" }).first();
8240
- const shopwareServicesHeader = adminPage.getByRole("heading", { name: "Future proof your store with Shopware Services" });
10722
+ const adminPrivilegeHeader = adminPage.getByRole("heading", { name: translate("administration:shopwareServices:messages.accessDenied") }).first();
10723
+ const shopwareServicesHeader = adminPage.getByRole("heading", { name: translate("administration:shopwareServices:headings.futureProofStore") });
8241
10724
  if (!aclRole?.privileges.includes("system:plugin:maintain")) {
8242
10725
  await expect(adminPrivilegeHeader).toBeVisible();
8243
10726
  } else {
@@ -9123,4 +11606,4 @@ const test = mergeTests(
9123
11606
  test$3
9124
11607
  );
9125
11608
 
9126
- export { AdminPageObjects, RuleType, StorefrontPageObjects, TestDataService, assertScreenshot, compareFlowTemplateWithFlow, createRandomImage, encodeImage, extractIdFromUrl, getCountryId, getCurrency, getDefaultShippingMethodId, getFlow, getFlowId, getFlowTemplate, getLanguageData, getMediaId, getOrderTransactionId, getPaymentMethodId, getPromotionWithDiscount, getSalutationId, getShippingMethodId, getSnippetSetId, getStateMachineId, getStateMachineStateId, getTaxId, getThemeId, hideElements, isSaaSInstance, isThemeCompiled, replaceElements, replaceElementsIndividually, setOrderStatus, setViewport, test, updateAdminUser };
11609
+ export { AdminPageObjects, BUNDLED_RESOURCES, IdProvider, LanguageHelper, RuleType, StorefrontPageObjects, TestDataService, assertScreenshot, baseNamespaces, compareFlowTemplateWithFlow, createRandomImage, encodeImage, extractIdFromUrl, getCountryId, getCurrency, getCurrentContext, getDefaultShippingMethodId, getFlow, getFlowId, getFlowTemplate, getLanguageData, getMediaId, getOrderTransactionId, getPaymentMethodId, getPromotionWithDiscount, getSalutationId, getShippingMethodId, getSnippetSetId, getStateMachineId, getStateMachineStateId, getTaxId, getThemeId, hideElements, isSaaSInstance, isThemeCompiled, replaceElements, replaceElementsIndividually, setCurrentContext, setOrderStatus, setViewport, test, translate, updateAdminUser };