-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathen-GB.json
More file actions
1306 lines (1306 loc) · 59.1 KB
/
Copy pathen-GB.json
File metadata and controls
1306 lines (1306 loc) · 59.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
{
"meta": {
"description": "Hackerspace NTNU, a student-led project open to all students, offers access to new technology like 3D printers and VR equipment. Our members provide varied expertise to help with your projects, from making an LED light blink to creating a 3D model. Visit our workshop or join our Slack channel for assistance or a friendly chat."
},
"ui": {
"open": "Open",
"close": "Close",
"previous": "Previous",
"goBack": "Go back",
"goToPreviousPage": "Go to previous page",
"next": "Next",
"goToNextPage": "Go to next page",
"morePages": "More pages",
"name": "name",
"page": "page",
"category": "category",
"sort": "sort",
"photoOf": "Photo of {name}",
"skills": "Skills",
"today": "Today",
"selected": "Selected",
"week": "Week",
"nextMonth": "Next month",
"previousMonth": "Previous month",
"selectMonth": "Select month",
"selectYear": "Select year",
"pickDate": "Pick a date",
"dateFormat": "dd/MM/yyyy",
"searchCountry": "Search country...",
"noCountryFound": "No country found",
"hidePassword": "Hide password",
"showPassword": "Show password",
"confirm": "Confirm",
"delete": "Delete",
"cancel": "Cancel",
"save": "Save",
"uploadText": "Drop files here or click to upload",
"noValidFiles": "No valid files were dropped",
"noChoicesFound": "No choices found"
},
"error": {
"notFound": "404 - Page not found",
"notFoundDescription": "Oops! Looks like this page got lost in cyberspace.",
"error": "Oops! Something went wrong",
"errorDescription": "Don't worry, our best hackers are on it!",
"tooManyRequests": "Too Many Requests",
"tooManyRequestsDescription": "Please wait a moment before trying again.",
"goToHomepage": "Return to homepage",
"tryAgain": "Try again",
"invalidLocale": "Invalid locale: {locale}"
},
"auth": {
"welcome": "Welcome!",
"description": "Is it your first time here? Use Feide",
"signInWith": "Sign in with",
"hackerspaceAccount": "Hackerspace Account",
"success": "Success!",
"successDescription": "Congratulations, you are now a member of Hackerspace NTNU!",
"home": "Home",
"signIn": "Sign in",
"useYourAccount": "Use your account",
"forgotPassword": "Forgot password",
"forgotPasswordDescription": "Enter your Hackerspace account email address to reset your password.",
"forgotPasswordInfoToast": "We've sent you a one-time code to reset your password if the email <strong>{email}</strong> is associated with a Hackerspace account.<br></br>If you've used the wrong email, please create a new forgot password request.",
"enterTheCode": "Please enter the code we've sent to your email to confirm the password change",
"submit": "Submit",
"invalidCredentials": "Invalid credentials",
"matrixRegistrationFailed": "Matrix user registration failed",
"createPassword": "Create password",
"passwordDescription": "The password will be used for signing into Matrix and your Hackerspace Account",
"createAccount": "Create Account",
"feideNotConfigured": "Feide is not configured",
"verifyEmail": "Verify your email address",
"verifyEmailDescription": "Enter the confirmation code sent to your new email. If you don't see it, check your spam folder.",
"getNewCode": "Get new code {seconds, plural, =0 {} =1 {(# second)} other {(# seconds)}}",
"newCodeSent": "A new code was sent to your inbox",
"confirmEmail": "Confirm email",
"unableToCreateVerificationRequest": "Unable to create email verification request",
"noVerificationRequest": "No verification request found",
"verificationCodeExpired": "The verification code was expired. We sent another code to your inbox",
"emailUpdateSuccess": "Email updated successfully",
"passwordUpdateSuccess": "Password updated successfully! You may now log in using your new password.",
"tryAgain": "Try again",
"form": {
"username": {
"label": "Username",
"required": "Username is required",
"minLength": "Username must be at least {count} characters",
"maxLength": "Username must be less than {count} characters",
"invalid": "Username must contain only letters"
},
"password": {
"label": "Password",
"required": "Password is required",
"minLength": "Password must be at least {count} characters",
"maxLength": "Password must be less than {count} characters",
"lowercase": "Password must contain at least one lowercase letter",
"uppercase": "Password must contain at least one uppercase letter",
"specialChar": "Password must contain at least one special character",
"confirmLabel": "Confirm password",
"mismatch": "Passwords do not match",
"weak": "Password is too weak"
},
"newPassword": {
"label": "New password"
},
"otp": {
"label": "One-time password",
"required": "One-time password is required",
"length": "One-time password must be {count} characters long",
"invalid": "One-time password must only contain digits and characters",
"incorrect": "Incorrect one-time password",
"expired": "One-time password has expired.",
"used": "One-time password has already been used. Please create a new forgot password request."
},
"email": {
"label": "Email",
"required": "Email is required",
"invalid": "Email is invalid"
}
},
"error": {
"authenticationFailed": "Authentication failed",
"userInfoFailed": "Failed to get user info",
"userInfoMissing": "User info is missing",
"phoneInUse": "Phone number is already in use",
"emailInUse": "Email is already in use",
"invalidUserData": "Invalid user data",
"userCreationFailed": "Failed to create user",
"forgotPasswordRequestCreationFailed": "Failed to create forgot password request",
"failedToSendEmail": "Failed to send email",
"forgotPasswordRequestIdRequired": "Forgot password request ID is required",
"matrixPasswordUpdateFailed": "Failed to update Matrix password",
"passwordUpdateFailed": "Failed to update password"
}
},
"layout": {
"hackerspaceHome": "Hackerspace homepage",
"navigationMenu": "Navigation menu",
"news": "News",
"events": "Events",
"storage": "Storage",
"about": "About",
"apply": "Apply",
"shiftSchedule": "Shift Schedule",
"members": "Members",
"quotes": "Quotes",
"desktopNavMenu": "{open, select, true {Open} other {Close}} navigation menu",
"goToMatrix": "Go to Matrix",
"rules": "Rules",
"applications": "Applications",
"changeLocale": "Change language",
"toggleTheme": "Toggle theme",
"light": "Light",
"dark": "Dark",
"system": "System",
"profile": "Profile",
"signIn": "Sign in",
"signOut": "Sign out",
"forgotPassword": "Forgot password",
"settings": "Settings",
"management": "Management",
"links": "Links",
"utilities": "Utilities",
"haveYouFoundA": "Have you found a",
"utilitiesDescription": "Feel free to send a <MailLink></MailLink> to DevOps or use the <code>#dev-public</code> channel on <SlackLink>Slack</SlackLink>! You can also report errors or suggest improvements on <GithubLink>GitHub</GithubLink>.",
"openingHours": "Opening hours",
"allWeekdays": "Monday-Friday",
"socialMedia": "Social media",
"sendAnEmail": "Send an email",
"visitSlack": "Visit Slack",
"visitFacebook": "Visit Facebook",
"visitGithub": "Visit Github",
"visitLinkedin": "Visit Linkedin",
"visitInstagram": "Visit our Instagram",
"discordTag": "Copy the Discord tag",
"NTNUIDI": "NTNU Department of Computer Science",
"NTNUIDIURL": "https://www.ntnu.edu/idi",
"NTNUNexus": "The working life network Nexus",
"internal": "Internal",
"copyright": "Copyright",
"allRightsReserved": "All rights reserved",
"cookieConsent": "We use cookies to ensure you get the best experience on our website. For more information on how we use cookies, please see our <link>Privacy Policy</link>.",
"reservations": "Reservations"
},
"news": {
"title": "News",
"internalArticle": "This is an internal article",
"newArticle": "New article",
"updateArticle": "Update article",
"readTime": "{count, plural, =0 {less than a minute} one {# minute} other {# minutes}} read",
"views": "Views",
"backToNews": "Back to news",
"backToArticle": "Back to article",
"lastUpdated": "Last updated: {date}",
"newArticlesUnauthorized": "Unauthorized to create new articles",
"updateArticlesUnauthorized": "Unauthorized to update articles",
"form": {
"createArticle": "Create article",
"updateArticle": "Update article",
"deleteArticle": "Delete article",
"articleCreated": "Article created successfully",
"articleUpdated": "Article updated successfully",
"articleImageDeleted": "Article image deleted successfully",
"articleDeleted": "Article deleted successfully",
"deleteArticleImage": "Delete article image",
"deleteArticleImageTitle": "Are you sure you want to delete this article image?",
"deleteArticleImageDescription": "This action cannot be undone.",
"deleteArticleTitle": "Are you sure you want to delete this article?",
"deleteArticleDescription": "This action cannot be undone.",
"image": {
"label": "Article image",
"description": "Upload an image...",
"required": "Article image is required",
"sizeLimitError": "Article image must be less than {size} MB",
"wrongFileTypeError": "Article image must be a PNG or JPG",
"fileNotImageError": "The file is not an image"
},
"title": {
"labelNorwegian": "Article title (Norwegian)",
"labelEnglish": "Article title (English)",
"required": "Article title is required"
},
"content": {
"labelNorwegian": "Article content (Norwegian)",
"labelEnglish": "Article content (English)",
"required": "Article content is required"
},
"internal": {
"label": "Internal",
"description": "If selected, this article will only be visible to Hackerspace members."
}
},
"api": {
"invalidId": "Invalid ID",
"invalidLimit": "Invalid limit",
"invalidOffset": "Invalid offset",
"tooManyArticles": "Too many articles requested. Cannot fetch more than {count} articles.",
"insertFailed": "Failed to add news article",
"articleNotFound": "Article not found",
"articleImageNotFound": "Article image not found"
}
},
"members": {
"title": "Members",
"internalMember": "This is an internal member",
"backToMember": "Back to members",
"searchPlaceholder": "Search for a member...",
"memberSince": "Member since {date}",
"guest": "Guest",
"usernameCopied": "Username copied to clipboard!",
"noMembersFound": "No members found.",
"unauthorized": "Unauthorized to view this user",
"skillManagement": {
"addDialogTitle": "Are you sure you want to add {skill} to {user}?",
"removeDialogTitle": "Are you sure you want to remove {skill} from {user}?",
"dialogDescription": "This change will be reflected in their profile.",
"addSkill": "Add skill",
"addingSkill": "Adding skill...",
"addedSkill": "Skill added successfully",
"addingSkillFailed": "Failed to add skill",
"removeSkill": "Remove skill",
"removingSkill": "Removing skill...",
"removedSkill": "Skill removed successfully",
"removingSkillFailed": "Failed to remove skill",
"cancel": "Cancel"
},
"groupManagement": {
"title": "Group management",
"group": "Group",
"actions": "Actions",
"addToGroup": "Add to group",
"addingToGroup": "Adding to group...",
"addingToGroupFailed": "Failed to add user to group",
"removeFromGroup": "Remove from group",
"removingFromGroup": "Removing from group...",
"removingFromGroupFailed": "Failed to remove user from group",
"userAddedToGroup": "User added to group successfully",
"userRemovedFromGroup": "User removed from group successfully"
},
"api": {
"idOrNameRequired": "Either ID or name must be provided",
"errorFetchingMember": "Error fetching member",
"errorFetchingMembers": "Error fetching members",
"pageNumberRequired": "Page number required",
"invalidLimit": "Invalid limit",
"adminGroupRequired": "You must be an admin yourself to edit admin users"
}
},
"settings": {
"manageAccountSettings": "Manage your account settings and set preferences.",
"profile": {
"title": "Profile",
"username": "Username",
"updateProfile": "Update profile",
"updateProfileFailed": "Failed to update profile",
"updateProfileSuccess": "Profile updated successfully",
"updateProfilePicture": "Update profile picture",
"updateProfilePictureFailed": "Failed to update profile picture",
"updateProfilePictureSuccess": "Profile picture updated successfully",
"updateProfilePictureTooltip": "Click to change profile picture",
"profilePicture": {
"label": "Profile picture",
"mustBeImage": "Profile picture must be an image",
"mustbePngOrJpg": "Profile picture must be a PNG or JPG",
"sizeLimit": "Profile picture must be less than {size} MB"
},
"firstName": {
"label": "First name",
"required": "First name is required",
"minLength": "First name must be at least {count} characters",
"maxLength": "First name must be less than {count} characters",
"general": "Is your first name correct?"
},
"lastName": {
"label": "Last name",
"required": "Last name is required",
"minLength": "Last name must be at least {count} characters",
"maxLength": "Last name must be less than {count} characters",
"general": "Is your last name correct?"
},
"birthDate": {
"label": "Birth date",
"required": "Birth date is required",
"invalid": "Birth date is invalid",
"minAge": "You must be at least {age} years old",
"maxAge": "You must be less than {age} years old"
}
},
"account": {
"title": "Account",
"updateAccount": "Update account",
"updateAccountFailed": "Failed to update account",
"updateAccountSuccess": "Account updated successfully",
"email": {
"label": "Email",
"description": "If you change your email, you will recieve a verification email to confirm your new address.",
"required": "Email is required",
"invalid": "Invalid email address format",
"confirmLabel": "Confirm email",
"mismatch": "Emails do not match",
"inUse": "Email is already in use"
},
"phoneNumber": {
"label": "Phone number",
"description": "Your phone number will be visible when reserving 3D printers or borrowing items, allowing us to contact you if any issues arise.",
"required": "Phone number is required",
"invalid": "Invalid phone number",
"format": "Phone number is formatted incorrectly",
"inUse": "Phone number is already in use"
},
"delete": {
"buttonLabel": "Delete account",
"dialogTitle": "Are you sure want to delete your account?",
"dialogDescription": "All data related to you, including all your contact information, profile picture, item loans, event registrations, linked groups, reservations, settings and more will be deleted. <bold>This action cannot be undone</bold>. If you change your mind later, recovering this data will be impossible - however, you're still welcome to make a new account.",
"failedToDelete": "Failed to delete account"
},
"password": {
"currentLabel": "Current password",
"newLabel": "New password",
"confirmLabel": "Confirm password",
"required": "Password is required",
"minLength": "Password must be at least {count} characters",
"maxLength": "Password must be less than {count} characters",
"lowercase": "Password must contain at least one lowercase letter",
"uppercase": "Password must contain at least one uppercase letter",
"specialChar": "Password must contain at least one special character",
"weak": "Password is too weak",
"mismatch": "Passwords do not match",
"update": "Update password",
"updateSuccess": "Password updated successfully",
"updateFailed": "Failed to update password",
"incorrectPassword": "Incorrect password"
}
},
"notifications": {
"title": "Notifications",
"updateNotifications": "Update notifications",
"updateNotificationsFailed": "Failed to update notifications",
"updateNotificationsSuccess": "Notifications updated successfully",
"notifyMeAbout": "Notify me about via email",
"all": "Finished prints, borrowed item deadlines, coffee cups filled and account updates",
"useful": "Finished prints, borrowed item deadlines and account updates",
"essential": "Account updates"
},
"administrator": {
"title": "Administrator"
}
},
"about": {
"whatIsHackerspace": "What is Hackerspace?",
"aboutDescription": "<p1> Hackerspace NTNU is a student-driven project open to all students, regardless of study direction or Hackerspace membership. We offer a creative arena where students from different disciplines can get help realizing their ideas in an engaged and inclusive environment. Here, you will find new technology at your disposal, including drones, 3D printers, and Virtual Reality equipment. </p1> <p2> Whether you are a first-year student needing help with your first Arduino project or a fourth-year student wanting to create a 3D model of Trondheim, we can provide both equipment and expertise. We also regularly hold courses for both beginners and advanced students in many exciting subjects. </p2> <p3> Come by to see what we're doing and have a chat. </p3> You can find us on the second floor of the A-block in the Realfagbygget at NTNU Gløshaugen.",
"showMap": "Show map",
"FAQ": {
"title": "Frequently Asked Questions",
"canIUseThe3dPrinter": "Can I use the 3D printer?",
"answerCanIUseThe3dPrinter": "<p1> All students can use the 3D printers and the rest of the workshop, regardless of whether they are members of Hackerspace or not. We have a reservation system available for all students with FEIDE login from the website's navigation bar. </p1> <p2> Come by during opening hours and get help from one of our members.</p2>",
"canITryVRGames-Equipment": "Can I try VR games/equipment?",
"answerCanITryVRGames-Equipment": "Our VR equipment can be borrowed and tried out by all students, regardless of Hackerspace membership. We have a dedicated VR room where you can come and play as long as a Hackerspace member is available for setup and teardown. The equipment can be borrowed through the usual inventory system. Come by during our opening hours if you're interested.",
"howDoIBecomeAMember": "How do I become a member?",
"answerHowDoIBecomeAMember": "<p1> Hackerspace has ongoing admissions. You can apply whenever you want. We usually respond within 3 working weeks. </p1> <p2> Note that you do not need membership to borrow equipment or try something cool. Come by for a chat during our opening hours to learn more about our offerings and what it's like to be a member. </p2>"
},
"activeGroup": "Our Active Groups",
"noMembers": "No members are a part of this group yet."
},
"groups": {
"backToAbout": "Back to About",
"new": {
"title": "New Group",
"createGroup": "Create group",
"unauthorized": "Unauthorized to create new groups",
"groupCreated": "Group created successfully"
},
"update": {
"title": "Update Group",
"backToGroup": "Back to group",
"unauthorized": "Unauthorized to update groups",
"updateGroup": "Update group",
"groupUpdated": "Group updated successfully",
"deleteGroup": "Delete group",
"imageDeleted": "Group image deleted successfully",
"groupDeleted": "Group deleted successfully",
"deleteGroupTitle": "Are you sure you want to delete this group?",
"deleteGroupDescription": "The group will be permanently deleted. This action cannot be undone.",
"deleteGroupImage": "Delete group image",
"deleteGroupImageTitle": "Are you sure you want to delete this group image?",
"deleteGroupImageDescription": "The group image will be permanently deleted. This action cannot be undone."
},
"form": {
"image": {
"label": "Group image",
"description": "Upload an image...",
"required": "Group image is required",
"sizeLimitError": "Group image must be less than {size} MB",
"wrongFileTypeError": "Group image must be a PNG or JPG",
"fileNotImageError": "The file is not an image"
},
"name": {
"labelNorwegian": "Group name (Norwegian)",
"labelEnglish": "Group name (English)",
"placeholder": "DevOps",
"required": "Group name is required",
"maxLength": "Group name must be less than {count} characters"
},
"summary": {
"labelNorwegian": "Summary (Norwegian)",
"labelEnglish": "Summary (English)",
"placeholderNorwegian": "DevOps-gruppen er ansvarlig for å vedlikeholde nettsiden og andre systemer.",
"placeholderEnglish": "The DevOps team is responsible for maintaining the website and other systems.",
"required": "Group summary is required",
"maxLength": "Group summary must be less than {count} characters"
},
"description": {
"labelNorwegian": "Description (Norwegian)",
"labelEnglish": "Description (English)",
"required": "Group description is required"
},
"identifier": {
"label": "Group identifier",
"description": "The group identifier will be used in the URL for the group page. It must be unique - duplicate groups are not allowed.",
"placeholder": "devops",
"isReserved": "Sorry, this identifier is reserved by internal systems",
"required": "Group identifier is required",
"regex": "The identifier can't be used in a URL. Allowed character: a-z, A-Z, 0-9, -, _, ., and ~"
},
"internal": {
"label": "Internal group",
"description": "If selected, this group will only be visible to Hackerspace members."
},
"openForApplications": {
"label": "Open for applications",
"description": "If selected, anyone will be able to send an application to join this group."
}
},
"api": {
"fetchGroupsFailed": "Failed to fetch active groups",
"invalidId": "Invalid ID",
"invalidGroupIdentifier": "Invalid group identifier",
"groupWithIdExists": "A group with the identifier \"{identifier}\" already exists",
"insertFailed": "Failed to add group",
"groupNotFound": "The group could not be found",
"userAlreadyInGroup": "User is already a member of the group",
"userNotInGroup": "User is not a member of the group"
}
},
"storage": {
"title": "Storage",
"searchPlaceholder": "Search for product...",
"addNewItem": "Add new item",
"viewLoans": "View your loans",
"backToStorage": "Back to storage",
"noItemsFound": "No items found. Please check your filter criteria.",
"card": {
"availableUnits": "{units}/{total} {total, plural, =1 {unit} other {units}}",
"addToCart": "Add to cart",
"removeFromCart": "Remove from cart"
},
"select": {
"ariaLabel": "Select how to filter the storage items",
"filters": "Filters",
"name": "Name (in alphabetical order)",
"sortDescending": "Inventory (descending)",
"sortAscending": "Inventory (ascending)"
},
"combobox": {
"defaultDescription": "Choose category...",
"defaultPlaceholder": "Search category...",
"cables": "Cables",
"sensors": "Sensors",
"peripherals": "PC peripherals",
"miniPC": "Mini PC"
},
"searchParams": {
"name": "name",
"descending": "descending",
"ascending": "ascending",
"cables": "cables",
"sensors": "sensors",
"peripherals": "peripherals",
"miniPC": "minipc"
},
"tooltips": {
"viewShoppingCart": "View shopping cart"
},
"item": {
"noDescription": "No description has been provided for this item.",
"noLocation": "No location specified",
"noCategory": "No category specified",
"invalidId": "The provided storage item ID was invalid.",
"edit": "Edit item",
"api": {
"insertFailed": "Failed to add storage item",
"insertLocalizationsFailed": "Failed to add storage item translations. Please contact Hackerspace DevOps about this issue!"
}
},
"shoppingCart": {
"title": "Shopping Cart",
"productId": "Product ID",
"productName": "Product Name",
"location": "Location",
"unitsAvailable": "Units available",
"tableDescription": "A list of your shopping cart items.",
"cartEmpty": "Your shopping cart is empty.",
"clearCart": "Empty shopping cart",
"clear": "Clear",
"clearCartDescription": "Are you sure you want to clear your shopping cart? All items will be removed.",
"requestLoan": "Request loan",
"amountOfItemAria": "Select number of this item",
"mustBeLoggedIn": "You must be logged in to borrow items"
},
"loanForm": {
"loanPeriod": "Select loan period",
"loanPeriodDescription": "Select how long you would like to borrow the item for.",
"autoapprove": "Approve immediately",
"autoapproveDescription": "As a Hackerspace member, you can approve this request immediately!",
"submit": "Submit",
"dateInFuture": "The return date must be in the future",
"success": "Loan request sent! Redirecting to loans..."
},
"categories": {
"title": "Categories",
"categoryName": "Category name (norwegian & english)",
"categoryTableDescription": "Table listing categories",
"actions": "Actions",
"unauthorized": "Unauthorized to manage storage item categories",
"successAddMessage": "Item category added successfully!",
"successEditMessage": "Item category edited successfully!",
"successDeleteMessage": "Item category deleted successfully!",
"invalidName": "Invalid category name",
"api": {
"insertFailed": "Failed to add category",
"updateFailed": "Failed to update category",
"deleteFailed": "Failed to delete category",
"duplicateCategory": "Cannot add another category with the same name"
}
},
"edit": {
"titleNew": "New Item",
"titleEdit": "Edit Item",
"image": {
"label": "Item image",
"upload": "Upload an image...",
"sizeLimitError": "Item image must be less than {size} MB",
"wrongFileTypeError": "Item image must be a PNG or JPG",
"fileNotImageError": "The file is not an image"
},
"name": {
"labelEnglish": "Item name (English)",
"labelNorwegian": "Item name (Norwegian)",
"placeholder": "Raspberry Pi 5",
"required": "Item name is required."
},
"description": {
"labelEnglish": "Description (English)",
"labelNorwegian": "Description (Norwegian)",
"placeholder": "A mini-PC capable of, among other things, running scripts and controlling electronic components."
},
"location": {
"labelEnglish": "Location (English)",
"labelNorwegian": "Location (Norwegian)",
"placeholder": "Box 2A",
"required": "Item location is required.",
"invalid": "Please provide a short and concise location."
},
"quantity": {
"label": "Quantity",
"placeholder": "4",
"negative": "Quantity cannot be negative."
},
"category": {
"label": "Category",
"placeholder": "Hardware"
},
"submit": "Submit",
"deleteItem": "Delete item",
"deleteItemDescription": "Are you sure you want to delete this item? All loans of this item will also be deleted. This action cannot be undone!",
"successNew": "New storage item added successfully! Redirecting to storage...",
"successEdit": "Storage item edited successfully! Redirecting to storage...",
"successDelete": "Storage item deleted successfully! Redirecting to storage...",
"unauthorized": "Unauthorized to manage storage items"
},
"loans": {
"view": "View loans",
"title": "Loans",
"titlePending": "Pending loans",
"titleApproved": "Approved loans",
"pendingLoan": "Pending loan",
"notReturned": "Not returned yet",
"returned": "Returned {date}",
"loanSubheader": "This loan is waiting for approval",
"loanItem": "{units, plural, =1 {# unit} other {# units}} of {name}",
"askForApproval": "Do you wish to approve this loan request?",
"approve": "Approve",
"confirmLoanReturn": "Confirm item return",
"deleteLoan": "Delete loan",
"deleteDescription": "Do you really wish to delete the loan from {person}?",
"loan": "Loan",
"loanApproveSuccess": "Loan has been approved successfully!",
"loanDeleteSuccess": "Loan has been deleted successfully!",
"loanReturnSuccess": "Loan has been registered as returned!",
"loanApproved": "This loan has been approved",
"borrowTimeline": "Borrowing from {from} until {until}",
"requestedAt": "Requested at {date}",
"noPendingLoans": "No pending loans 🎉",
"noLoansFound": "No loans found",
"unauthorized": "Unauthorized to manage storage item loan requests"
},
"api": {
"duplicateItem": "Cannot create storage items with the same name. Edit the already existing item instead.",
"notFound": "The selected storage item was not found.",
"categoryNotFound": "The selected category was not found.",
"wantedItemNotFound": "One or more of the selected storage items to borrow was not found.",
"borrowingMoreThanQuantity": "Cannot borrow more items than the number of available units.",
"itemIsBorrowed": "Cannot delete an item which is borrowed by someone! Delete and/or check all loans of this item first.",
"borrowPositiveAmount": "Must borrow a positive amount.",
"limitNotInRange": "limit must be between 1 and 50."
}
},
"shiftSchedule": {
"title": "Shift Schedule",
"clearShifts": {
"clear": "Clear shift schedule",
"warning": "Warning",
"confirmationPrompt": "Are you sure you want to clear the shift schedule?",
"confirm": "Clear",
"cancel": "Cancel",
"clearSuccess": "Cleared shifts successfully"
},
"table": {
"time": "Time",
"day": "{day, select, monday {Monday} tuesday {Tuesday} wednesday {Wednesday} thursday {Thursday} other {Friday}}",
"cell": {
"onShift": "{count, plural, =1 {1 person on shift} other {# people on shift}}",
"closed": "Closed",
"dialog": {
"description": "See members on the selected shift or register yourself",
"empty": "No one on shift",
"recurring": "Recurring",
"register": "Register",
"update": "Update",
"unregister": "Unregister",
"signIn": "Sign in",
"signInDescription": "Sign in to register for shifts",
"registerSuccess": "Registered shift successfully",
"updateSuccess": "Updated shift successfully",
"unregisterSuccess": "Unregistered from shift successfully"
}
}
},
"api": {
"day": "Invalid day",
"timeslot": "Invalid timeslot",
"recurring": "Invalid value for recurring",
"fetchShiftsFailed": "Failed to fetch shifts"
}
},
"events": {
"title": "Events",
"activeEvents": "Active events",
"upcomingEvents": "Upcoming events",
"pastEvents": "Past events",
"detailsAboutEvent": "Read more about {eventName}",
"startsAt": "Starts at",
"startedAt": "Started at",
"endsAt": "Ends at",
"endedAt": "Ended at",
"backToEvents": "Back to Events",
"backToEvent": "Back to Event",
"attendanceGivesSkill": "By attending this event, you will gain the following skill:",
"new": {
"title": "New Event",
"unauthorized": "Unauthorized to create events",
"success": "Event created successfully! Redirecting to event..."
},
"edit": {
"title": "Edit Event",
"unauthorized": "Unauthorized to edit events",
"delete": "Delete event",
"deleteImage": "Delete event image",
"deleteConfirmTitle": "Are you sure you want to delete this event?",
"deleteConfirmDescription": "All registrations for this event will also be deleted. This action cannot be undone.",
"deleteImageConfirmTitle": "Are you sure you want to delete the event image?",
"deleteImageConfirmDescription": "This action cannot be undone.",
"successEdit": "Event updated successfully! Redirecting to event...",
"successDelete": "Event deleted successfully! Redirecting to events...",
"successDeleteImage": "Event image deleted successfully!"
},
"form": {
"nameNorwegian": {
"label": "Event name (Norwegian)",
"placeholder": "Arrangementsnavn",
"required": "Event name is required",
"maxLength": "Event name must be less than {count} characters"
},
"nameEnglish": {
"label": "Event name (English)",
"placeholder": "Event name",
"required": "Event name is required",
"maxLength": "Event name must be less than {count} characters"
},
"summaryNorwegian": {
"label": "Summary (Norwegian)",
"placeholder": "Kort beskrivelse av arrangementet",
"required": "Event summary is required",
"maxLength": "Event summary must be less than {count} characters"
},
"summaryEnglish": {
"label": "Summary (English)",
"placeholder": "Short description of the event",
"required": "Event summary is required",
"maxLength": "Event summary must be less than {count} characters"
},
"descriptionNorwegian": {
"label": "Description (Norwegian)",
"placeholder": "Beskrivelse av arrangementet",
"required": "Event description is required"
},
"descriptionEnglish": {
"label": "Description (English)",
"placeholder": "Description of the event",
"required": "Event description is required"
},
"locationNorwegian": {
"label": "Location (Norwegian)",
"placeholder": "Sted for arrangementet",
"required": "Event location is required",
"maxLength": "Event location must be less than {count} characters"
},
"locationEnglish": {
"label": "Location (English)",
"placeholder": "Location of the event",
"required": "Event location is required",
"maxLength": "Event location must be less than {count} characters"
},
"startTime": {
"label": "Start time",
"required": "Start time is required",
"timeInPast": "The start time must be in the future"
},
"setSignUpDeadline": {
"label": "Set sign-up deadline",
"description": "Optionally, you can set a sign-up deadline. After this time, no new sign-ups will be accepted"
},
"signUpDeadline": {
"label": "Sign-up deadline",
"timeInPast": "The sign-up deadline must be in the future",
"beforeStartTime": "The sign-up deadline must be before the event start time"
},
"endTime": {
"label": "End time",
"required": "End time is required",
"dateBeforeStart": "The end time must be after the start time"
},
"locationMapLink": {
"label": "Location map link",
"placeholder": "https://use.mazemap.com/...",
"description": "Link to a map showing the event location",
"invalid": "Invalid map link format. Must be a URL"
},
"internal": {
"label": "Internal event",
"description": "If checked, the event will only be visible to Hackerspace members"
},
"skill": {
"label": "Select skill",
"description": "Select the skill that can be acquired by attending this event",
"placeholder": "Select a skill"
},
"image": {
"label": "Event image",
"upload": "Upload an image...",
"sizeLimitError": "Event image must be less than {size} MB",
"wrongFileTypeError": "Event image must be a PNG or JPG",
"fileNotImageError": "The file is not an image"
},
"createSubmit": "Create event",
"editSubmit": "Update event"
},
"attendance": {
"signUp": "Sign up",
"cancelSignUp": "Cancel sign-up",
"signUpSuccess": "Successfully signed up for the event!",
"cancelSignUpSuccess": "Successfully canceled sign-up for the event!",
"mustBeLoggedIn": "You must be logged in to sign up",
"signUpClosed": "Sign-up for this event is closed",
"pastSignUpDeadline": "The sign-up deadline has passed",
"eventStartedAlready": "The event has already started",
"eventFinishedAlready": "The event has already finished",
"signUpDeadline": "Sign-up deadline: {date}",
"attendance": "Attendance",
"attended": "Attended",
"attendanceDescription": "Check the attendance of members who signed up for this event. If a skill can be achieved by attending this event, you may give it to a participant after confirming their attendance.",
"attendeesList": "Attendees list",
"member": "Member",
"actions": "Actions",
"present": "Present",
"absent": "Absent",
"give": "Give",
"skillAttained": "Skill attained!",
"noParticipants": "No members signed up for this event",
"notStartedYet": "Cannot change attendance: The event has not started yet",
"updating": "Updating attendance for {name}...",
"success": "Attendance updated for {name}!",
"error": "Failed to update attendance for {name}",
"givingSkill": "Giving skill {skill} to {name}...",
"successSkill": "Skill {skill} given to {name}!",
"errorSkill": "Failed to give skill {skill} to {name}"
},
"api": {
"invalidId": "Invalid event ID",
"invalidUserId": "Invalid user ID",
"invalidSkillId": "Invalid skill ID",
"fetchEventFailed": "Failed to fetch event",
"unauthorized": "Unauthorized to view this event",
"invalidOffset": "Invalid offset",
"invalidLimit": "Invalid limit",
"insertFailed": "Failed to create event",
"notFound": "Event not found",
"skillNotFound": "Skill not found",
"userNotFound": "User not found",
"alreadyHasSkill": "User {user} already has the skill {skill}",
"participantNotFound": "Participant not found",
"noImage": "There is no image for this event"
}
},
"rules": {
"title": "Rules",
"publicRules": "Public rules",
"internalRules": "Internal rules",
"backToRules": "Back to Rules",
"new": {
"title": "New Rule",
"createRule": "Create rule",
"ruleCreated": "Rule created successfully",
"unauthorized": "Unauthorized to create new rules"
},
"update": {
"title": "Update Rule",
"updateRule": "Update rule",
"deleteRule": "Delete rule",
"deleteRuleTitle": "Are you sure you want to delete this rule?",
"deleteRuleDescription": "The rule will be permanently deleted. This action cannot be undone.",
"deleteRuleImage": "Delete rule image",
"deleteRuleImageTitle": "Are you sure you want to delete this rule image?",
"deleteRuleImageDescription": "The rule image will be permanently deleted. This action cannot be undone.",
"ruleUpdated": "Rule updated successfully",
"ruleDeleted": "Rule deleted successfully",
"imageDeleted": "Rule image deleted successfully",
"unauthorized": "Unauthorized to update rules"
},
"form": {
"image": {
"label": "Rule image",
"description": "Upload an image...",
"sizeLimitError": "Rule image must be less than {size} MB",
"wrongFileTypeError": "Rule image must be a PNG or JPG",
"fileNotImageError": "The file is not an image"
},
"name": {
"labelNorwegian": "Rule name (Norwegian)",
"labelEnglish": "Rule name (English)",
"placeholderNorwegian": "Regler for verkstedet",
"placeholderEnglish": "Rules for the workshop",
"required": "Rule name is required"
},
"content": {
"labelNorwegian": "Rule content (Norwegian)",
"labelEnglish": "Rule content (English)",
"placeholderNorwegian": "Disse reglene gjelder for alle som bruker verkstedet. Rydd opp etter deg. Bruk verneutstyr når det er påkrevd...",
"placeholderEnglish": "These rules apply to everyone using the workshop. Clean up after yourself. Use protective equipment when required...",
"required": "Rule content is required"
},
"internal": {
"label": "Internal rule",
"description": "If selected, this rule will only be visible to Hackerspace members."
}
},
"api": {
"invalidRuleId": "Invalid rule ID",
"fetchRulesFailed": "Failed to fetch rules",
"ruleWithNameExists": "A rule with the name {name} already exists",
"ruleNotFound": "Rule not found",
"insertFailed": "Failed to add rule",
"updateFailed": "Failed to update rule",
"unauthorizedInternalRule": "Unauthorized to view internal rules"
}
},
"skills": {
"api": {
"invalidId": "Invalid skill ID",
"skillNotFound": "Skill not found",
"cannotAddSkill": "You cannot give this skill",
"userAlreadyHasSkill": "User already has this skill",
"userDoesNotHaveSkill": "User does not have this skill",
"invalidIdentifier": "Invalid skill identifier",
"skillWithIdExists": "Skill with the identifier \"{identifier}\" already exists"
}
},
"management": {
"title": "Website Management",
"unauthorized": "Unauthorized to access management tools",
"backToManagement": "Back to management",
"skills": {
"name": "Skills",
"title": "Manage Skills",
"description": "Manage the skills that members can achieve.",
"backToSkills": "Back to skills",
"new": {
"title": "New Skill",
"success": "Skill added successfully!"
},
"edit": {
"title": "Update Skill",
"delete": "Delete skill",
"deleteConfirmTitle": "Are you sure you want to delete this skill?",
"deleteConfirmDescription": "All users that have this skill will lose it. This action cannot be undone.",
"successEdit": "Skill updated successfully!",
"successDelete": "Skill deleted successfully!"
},
"form": {
"createSubmit": "Create skill",
"editSubmit": "Update skill",
"name": {
"labelNorwegian": "Skill name (Norwegian)",
"placeholderNorwegian": "Webutvikling",
"placeholderEnglish": "Web development",
"labelEnglish": "Skill name (English)",
"required": "Skill name is required",
"maxLength": "Skill name must be less than {count} characters"
},
"identifier": {
"label": "Skill identifier",
"placeholder": "webdevelopment",
"description": "Certain skill names may have predefined icons, permissions or similar. If in doubt, ask the DevOps-team.",
"required": "Skill identifier is required",
"maxLength": "Skill identifier must be less than {count} characters",
"regex": "The identifier must only contain alphanumeric characters (a-z, A-Z, 0-9)"
}
}
},
"users": {
"name": "Users",
"title": "Search for Users",
"description": "Manage users on the website.",
"searchUser": "Search user...",
"table": {
"name": "Name",
"groups": "Groups",
"skills": "Skills",
"noUsersFound": "No users found. Please check your search criteria.",
"caption": "Website users"
},
"unauthorized": "Unauthorized to manage users"
},
"files": {
"name": "Files & Images",
"title": "Manage Files & Images",
"description": "Manage files and images uploaded by members."
},
"banners": {