Skip to content

Commit ad63b94

Browse files
committed
Issue #1589: various small changes
- for xml import - for the tour - add less/more button - check in new images for systems - preload images for systems - refactor language.controller.js
1 parent 314a9b4 commit ad63b94

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

123 files changed

+1348
-934
lines changed

OpenRobertaServer/src/main/resources/openRoberta.properties

+1-1
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ server.staticresources.dir = OpenRobertaServer/staticResources
5252
# For instance, if your school offers nxt, calliope2017 and calliope2016 robots, use this white list:
5353
# robot.whitelist = sim, nxt, calliope2017, calliope2016
5454
# Usually overwritten by command line parameter -d
55-
robot.whitelist = sim, spike, thymio, wedo, ev3lejosv1, ev3lejosv0, ev3dev, ev3c4ev3, xNN, nxt, microbit, microbitv2, joycar, botnroll, nao, bob3, rob3rta, sensebox, mbot, mbot2, edison, festobionic, festobionicflower, uno, unowifirev2, nano, mega, nano33ble, calliope2017NoBlue, calliope2017, calliope2016, robotino
55+
robot.whitelist = spike, thymio, wedo, ev3lejosv1, ev3dev, ev3c4ev3, xNN, nxt, microbit, microbitv2, joycar, botnroll, nao, bob3, rob3rta, sensebox, mbot, mbot2, edison, festobionic, festobionicflower, uno, unowifirev2, nano, mega, nano33ble, calliope2017NoBlue, calliope2017, calliope2016, robotino
5656
robot.default = ev3lejosv1
5757
# account activation / verification / reset
5858
# server.iptocountry.dir path where the db is located, db name is fix: IpToCountry.cvs

OpenRobertaServer/staticResources/blockly/msg/js/ar.js

+9-4
Original file line numberDiff line numberDiff line change
@@ -811,7 +811,7 @@ Blockly.Msg.MENU_SAVE = "save"; // untranslated
811811
Blockly.Msg.MENU_SAVE_AS = "save as ..."; // untranslated
812812
Blockly.Msg.MENU_SHORTCUT = "keyboard shortcuts"; // untranslated
813813
Blockly.Msg.MENU_SHORTCUT_RUN = "run on robot"; // untranslated
814-
Blockly.Msg.MENU_SHOW_AGAIN = "show welcome note again"; // untranslated
814+
Blockly.Msg.MENU_SHOW_AGAIN = "back to the start page"; // untranslated
815815
Blockly.Msg.MENU_SHOW_CODE = "open/close source code view"; // untranslated
816816
Blockly.Msg.MENU_SIM_ADD_COLOR_OBJECT_TOOLTIP = "Add a color area."; // untranslated
817817
Blockly.Msg.MENU_SIM_ADD_MARKER_OBJECT_TOOLTIP = "Add a marker"; // untranslated
@@ -1400,7 +1400,7 @@ Blockly.Msg.POPUP_STARTUP_COOKIES = "We use cookies to personalise content and t
14001400
Blockly.Msg.POPUP_STARTUP_HELP = "Do you need help?"; // untranslated
14011401
Blockly.Msg.POPUP_STARTUP_HELP_TEXT = "In our detailed help, we will explain everything you need, from building instructions to frequently asked questions."; // untranslated
14021402
Blockly.Msg.POPUP_STARTUP_HIDE = "Okay, don't show this window again and remember my choice with a bookmark."; // untranslated
1403-
Blockly.Msg.POPUP_STARTUP_START = "Choose your system!"; // untranslated
1403+
Blockly.Msg.POPUP_STARTUP_START = "back to robot/system selection"; // untranslated
14041404
Blockly.Msg.POPUP_STARTUP_TOUR_TEXT = "Would you like to get started, but do not know exactly how? We will show you the first steps in an interactive tutorial."; // untranslated
14051405
Blockly.Msg.POPUP_TOUR = "take a tour"; // untranslated
14061406
Blockly.Msg.POPUP_USERNAME = "Username"; // untranslated
@@ -1455,9 +1455,11 @@ Blockly.Msg.PROGLIST_DELETE_ALL_TOOLTIP = "Click here to delete all selected pro
14551455
Blockly.Msg.PROGLIST_DELETE_TOOLTIP = "Click here to delete your program."; // untranslated
14561456
Blockly.Msg.PROGLIST_LOAD_TOOLTIP = "Click here to load your robot configuration in the configuration environment."; // untranslated
14571457
Blockly.Msg.PROGLIST_SHARE_TOOLTIP = "Click here to share your program with a friend."; // untranslated
1458-
Blockly.Msg.PROGLIST_SHARE_WITH_GALLERY = "Do you really want to share your program with everybody? If you are not sure please check the question and answers <a href='https://www.roberta-home.de/index.php?id=138&L=1' target='_blank'>here</a>."; // untranslated
1458+
Blockly.Msg.PROGLIST_SHARE_WITH_GALLERY = "Do you really want to upload your program to the gallery and share it with all other users? Take a close look at the preview above. This is exactly what everyone else will see in the gallery. The two lines below the name of the program are a preview of the program documentation. By publishing your program in the gallery, other users are allowed to use, modify and share your program. You also agree to the conditions for publishing a program in the Open Roberta Gallery. If you are not sure, take another look <a href='https://www.roberta-home.de/index.php?id=138&L=1' target='_blank'>here</a>!"; // untranslated
1459+
Blockly.Msg.PROGLIST_SHARE_WITH_GALLERY_TOOLTIP = "Click here to upload your program to the gallery hence share it with all other users."; // untranslated
14591460
Blockly.Msg.PROGRAM_ERROR_EXPRBLOCK_PARSE = "This expression is syntactically incorrect."; // untranslated
14601461
Blockly.Msg.PROGRAM_ERROR_EXPRBLOCK_TYPECHECK = "This expression is invalid. The type check failed."; // untranslated
1462+
Blockly.Msg.PROGRAM_IMPORT_ERROR_MISSING_ROBOT_TYPE = "You have tried to import a program that is suitable for »$«, a group of robots/systems.<br>Please first select the desired robot/system here on the start page."; // untranslated
14611463
Blockly.Msg.PULSEHIGH = "pulse time HIGH"; // untranslated
14621464
Blockly.Msg.PULSELOW = "pulse time LOW"; // untranslated
14631465
Blockly.Msg.PULSETOOLTIP = "Represents a pulse sensor."; // untranslated
@@ -1827,6 +1829,7 @@ Blockly.Msg.START = "start"; // untranslated
18271829
Blockly.Msg.START_ACTIVITY = "activity"; // untranslated
18281830
Blockly.Msg.START_ACTIVITY_TOOLTIP = "Starts additional activity."; // untranslated
18291831
Blockly.Msg.START_ALL_ROBOTS = "All systems and filter options"; // untranslated
1832+
Blockly.Msg.START_BOOKMARK_TOOLTIP = "Create a bookmark directly to your favourite robot/system."; // untranslated
18301833
Blockly.Msg.START_CONNECT_HEADLINE = "Connect your robot"; // untranslated
18311834
Blockly.Msg.START_CONNECT_TEXT = "You can directly connect your robot. The suitable NEPO program opens automatically."; // untranslated
18321835
Blockly.Msg.START_FAQ = "Find answers to questions about the Open Roberta Lab that we have been asked so far or that we have already asked ourselves."; // untranslated
@@ -1837,6 +1840,7 @@ Blockly.Msg.START_FOOTER_FRAUNHOFER = "Fraunhofer Institute for Intelligent Anal
18371840
Blockly.Msg.START_FOOTER_INFORMATION = "<strong>Information</strong>"; // untranslated
18381841
Blockly.Msg.START_FOOTER_RESSOURCES = "<strong>Resources</strong>"; // untranslated
18391842
Blockly.Msg.START_FOOTER_ROBERTA_IAIS = "Part of the Roberta Initiative<sup>®</sup> of Fraunhofer IAIS"; // untranslated
1843+
Blockly.Msg.START_FORMATSEARCH = "search robots/systems"; // untranslated
18401844
Blockly.Msg.START_HEADLINE_PART_FOUR = "Boards"; // untranslated
18411845
Blockly.Msg.START_HEADLINE_PART_ONE = "Program"; // untranslated
18421846
Blockly.Msg.START_HEADLINE_PART_THREE = "Robots &"; // untranslated
@@ -1855,7 +1859,8 @@ Blockly.Msg.START_PROGRAM_DEBUG = "show sensor data"; // untranslated
18551859
Blockly.Msg.START_RESULTS = "results"; // untranslated
18561860
Blockly.Msg.START_SIMULATION = "Simulation"; // untranslated
18571861
Blockly.Msg.START_START = "get started"; // untranslated
1858-
Blockly.Msg.START_TEASER = "Our open source platform »Open Roberta Lab« let you create your very own programs in no time at all using drag and drop. The graphical programming language <span class='nepo'>(NEPO)</span> will support you."; // untranslated
1862+
Blockly.Msg.START_STARTUP_TITLE = "Welcome to Open Roberta Lab"; // untranslated
1863+
Blockly.Msg.START_TEASER = "Our open source platform »Open Roberta Lab« let you create your very own programs in no time at all using drag and drop."; // untranslated
18591864
Blockly.Msg.START_TOOLTIP = "The starting point for the main program."; // untranslated
18601865
Blockly.Msg.START_TOUR_HEADLINE = "Take an interactive tour"; // untranslated
18611866
Blockly.Msg.START_WIKI_HEADLINE = "Take a look at our wiki"; // untranslated

OpenRobertaServer/staticResources/blockly/msg/js/az.js

+9-4
Original file line numberDiff line numberDiff line change
@@ -811,7 +811,7 @@ Blockly.Msg.MENU_SAVE = "save"; // untranslated
811811
Blockly.Msg.MENU_SAVE_AS = "save as ..."; // untranslated
812812
Blockly.Msg.MENU_SHORTCUT = "keyboard shortcuts"; // untranslated
813813
Blockly.Msg.MENU_SHORTCUT_RUN = "run on robot"; // untranslated
814-
Blockly.Msg.MENU_SHOW_AGAIN = "show welcome note again"; // untranslated
814+
Blockly.Msg.MENU_SHOW_AGAIN = "back to the start page"; // untranslated
815815
Blockly.Msg.MENU_SHOW_CODE = "open/close source code view"; // untranslated
816816
Blockly.Msg.MENU_SIM_ADD_COLOR_OBJECT_TOOLTIP = "Add a color area."; // untranslated
817817
Blockly.Msg.MENU_SIM_ADD_MARKER_OBJECT_TOOLTIP = "Add a marker"; // untranslated
@@ -1400,7 +1400,7 @@ Blockly.Msg.POPUP_STARTUP_COOKIES = "We use cookies to personalise content and t
14001400
Blockly.Msg.POPUP_STARTUP_HELP = "Do you need help?"; // untranslated
14011401
Blockly.Msg.POPUP_STARTUP_HELP_TEXT = "In our detailed help, we will explain everything you need, from building instructions to frequently asked questions."; // untranslated
14021402
Blockly.Msg.POPUP_STARTUP_HIDE = "Okay, don't show this window again and remember my choice with a bookmark."; // untranslated
1403-
Blockly.Msg.POPUP_STARTUP_START = "Choose your system!"; // untranslated
1403+
Blockly.Msg.POPUP_STARTUP_START = "back to robot/system selection"; // untranslated
14041404
Blockly.Msg.POPUP_STARTUP_TOUR_TEXT = "Would you like to get started, but do not know exactly how? We will show you the first steps in an interactive tutorial."; // untranslated
14051405
Blockly.Msg.POPUP_TOUR = "take a tour"; // untranslated
14061406
Blockly.Msg.POPUP_USERNAME = "Username"; // untranslated
@@ -1455,9 +1455,11 @@ Blockly.Msg.PROGLIST_DELETE_ALL_TOOLTIP = "Click here to delete all selected pro
14551455
Blockly.Msg.PROGLIST_DELETE_TOOLTIP = "Click here to delete your program."; // untranslated
14561456
Blockly.Msg.PROGLIST_LOAD_TOOLTIP = "Click here to load your robot configuration in the configuration environment."; // untranslated
14571457
Blockly.Msg.PROGLIST_SHARE_TOOLTIP = "Click here to share your program with a friend."; // untranslated
1458-
Blockly.Msg.PROGLIST_SHARE_WITH_GALLERY = "Do you really want to share your program with everybody? If you are not sure please check the question and answers <a href='https://www.roberta-home.de/index.php?id=138&L=1' target='_blank'>here</a>."; // untranslated
1458+
Blockly.Msg.PROGLIST_SHARE_WITH_GALLERY = "Do you really want to upload your program to the gallery and share it with all other users? Take a close look at the preview above. This is exactly what everyone else will see in the gallery. The two lines below the name of the program are a preview of the program documentation. By publishing your program in the gallery, other users are allowed to use, modify and share your program. You also agree to the conditions for publishing a program in the Open Roberta Gallery. If you are not sure, take another look <a href='https://www.roberta-home.de/index.php?id=138&L=1' target='_blank'>here</a>!"; // untranslated
1459+
Blockly.Msg.PROGLIST_SHARE_WITH_GALLERY_TOOLTIP = "Click here to upload your program to the gallery hence share it with all other users."; // untranslated
14591460
Blockly.Msg.PROGRAM_ERROR_EXPRBLOCK_PARSE = "This expression is syntactically incorrect."; // untranslated
14601461
Blockly.Msg.PROGRAM_ERROR_EXPRBLOCK_TYPECHECK = "This expression is invalid. The type check failed."; // untranslated
1462+
Blockly.Msg.PROGRAM_IMPORT_ERROR_MISSING_ROBOT_TYPE = "You have tried to import a program that is suitable for »$«, a group of robots/systems.<br>Please first select the desired robot/system here on the start page."; // untranslated
14611463
Blockly.Msg.PULSEHIGH = "pulse time HIGH"; // untranslated
14621464
Blockly.Msg.PULSELOW = "pulse time LOW"; // untranslated
14631465
Blockly.Msg.PULSETOOLTIP = "Represents a pulse sensor."; // untranslated
@@ -1827,6 +1829,7 @@ Blockly.Msg.START = "start"; // untranslated
18271829
Blockly.Msg.START_ACTIVITY = "activity"; // untranslated
18281830
Blockly.Msg.START_ACTIVITY_TOOLTIP = "Starts additional activity."; // untranslated
18291831
Blockly.Msg.START_ALL_ROBOTS = "All systems and filter options"; // untranslated
1832+
Blockly.Msg.START_BOOKMARK_TOOLTIP = "Create a bookmark directly to your favourite robot/system."; // untranslated
18301833
Blockly.Msg.START_CONNECT_HEADLINE = "Connect your robot"; // untranslated
18311834
Blockly.Msg.START_CONNECT_TEXT = "You can directly connect your robot. The suitable NEPO program opens automatically."; // untranslated
18321835
Blockly.Msg.START_FAQ = "Find answers to questions about the Open Roberta Lab that we have been asked so far or that we have already asked ourselves."; // untranslated
@@ -1837,6 +1840,7 @@ Blockly.Msg.START_FOOTER_FRAUNHOFER = "Fraunhofer Institute for Intelligent Anal
18371840
Blockly.Msg.START_FOOTER_INFORMATION = "<strong>Information</strong>"; // untranslated
18381841
Blockly.Msg.START_FOOTER_RESSOURCES = "<strong>Resources</strong>"; // untranslated
18391842
Blockly.Msg.START_FOOTER_ROBERTA_IAIS = "Part of the Roberta Initiative<sup>®</sup> of Fraunhofer IAIS"; // untranslated
1843+
Blockly.Msg.START_FORMATSEARCH = "search robots/systems"; // untranslated
18401844
Blockly.Msg.START_HEADLINE_PART_FOUR = "Boards"; // untranslated
18411845
Blockly.Msg.START_HEADLINE_PART_ONE = "Program"; // untranslated
18421846
Blockly.Msg.START_HEADLINE_PART_THREE = "Robots &"; // untranslated
@@ -1855,7 +1859,8 @@ Blockly.Msg.START_PROGRAM_DEBUG = "show sensor data"; // untranslated
18551859
Blockly.Msg.START_RESULTS = "results"; // untranslated
18561860
Blockly.Msg.START_SIMULATION = "Simulation"; // untranslated
18571861
Blockly.Msg.START_START = "get started"; // untranslated
1858-
Blockly.Msg.START_TEASER = "Our open source platform »Open Roberta Lab« let you create your very own programs in no time at all using drag and drop. The graphical programming language <span class='nepo'>(NEPO)</span> will support you."; // untranslated
1862+
Blockly.Msg.START_STARTUP_TITLE = "Welcome to Open Roberta Lab"; // untranslated
1863+
Blockly.Msg.START_TEASER = "Our open source platform »Open Roberta Lab« let you create your very own programs in no time at all using drag and drop."; // untranslated
18591864
Blockly.Msg.START_TOOLTIP = "The starting point for the main program."; // untranslated
18601865
Blockly.Msg.START_TOUR_HEADLINE = "Take an interactive tour"; // untranslated
18611866
Blockly.Msg.START_WIKI_HEADLINE = "Take a look at our wiki"; // untranslated

OpenRobertaServer/staticResources/blockly/msg/js/ba.js

+9-4
Original file line numberDiff line numberDiff line change
@@ -811,7 +811,7 @@ Blockly.Msg.MENU_SAVE = "save"; // untranslated
811811
Blockly.Msg.MENU_SAVE_AS = "save as ..."; // untranslated
812812
Blockly.Msg.MENU_SHORTCUT = "keyboard shortcuts"; // untranslated
813813
Blockly.Msg.MENU_SHORTCUT_RUN = "run on robot"; // untranslated
814-
Blockly.Msg.MENU_SHOW_AGAIN = "show welcome note again"; // untranslated
814+
Blockly.Msg.MENU_SHOW_AGAIN = "back to the start page"; // untranslated
815815
Blockly.Msg.MENU_SHOW_CODE = "open/close source code view"; // untranslated
816816
Blockly.Msg.MENU_SIM_ADD_COLOR_OBJECT_TOOLTIP = "Add a color area."; // untranslated
817817
Blockly.Msg.MENU_SIM_ADD_MARKER_OBJECT_TOOLTIP = "Add a marker"; // untranslated
@@ -1400,7 +1400,7 @@ Blockly.Msg.POPUP_STARTUP_COOKIES = "We use cookies to personalise content and t
14001400
Blockly.Msg.POPUP_STARTUP_HELP = "Do you need help?"; // untranslated
14011401
Blockly.Msg.POPUP_STARTUP_HELP_TEXT = "In our detailed help, we will explain everything you need, from building instructions to frequently asked questions."; // untranslated
14021402
Blockly.Msg.POPUP_STARTUP_HIDE = "Okay, don't show this window again and remember my choice with a bookmark."; // untranslated
1403-
Blockly.Msg.POPUP_STARTUP_START = "Choose your system!"; // untranslated
1403+
Blockly.Msg.POPUP_STARTUP_START = "back to robot/system selection"; // untranslated
14041404
Blockly.Msg.POPUP_STARTUP_TOUR_TEXT = "Would you like to get started, but do not know exactly how? We will show you the first steps in an interactive tutorial."; // untranslated
14051405
Blockly.Msg.POPUP_TOUR = "take a tour"; // untranslated
14061406
Blockly.Msg.POPUP_USERNAME = "Username"; // untranslated
@@ -1455,9 +1455,11 @@ Blockly.Msg.PROGLIST_DELETE_ALL_TOOLTIP = "Click here to delete all selected pro
14551455
Blockly.Msg.PROGLIST_DELETE_TOOLTIP = "Click here to delete your program."; // untranslated
14561456
Blockly.Msg.PROGLIST_LOAD_TOOLTIP = "Click here to load your robot configuration in the configuration environment."; // untranslated
14571457
Blockly.Msg.PROGLIST_SHARE_TOOLTIP = "Click here to share your program with a friend."; // untranslated
1458-
Blockly.Msg.PROGLIST_SHARE_WITH_GALLERY = "Do you really want to share your program with everybody? If you are not sure please check the question and answers <a href='https://www.roberta-home.de/index.php?id=138&L=1' target='_blank'>here</a>."; // untranslated
1458+
Blockly.Msg.PROGLIST_SHARE_WITH_GALLERY = "Do you really want to upload your program to the gallery and share it with all other users? Take a close look at the preview above. This is exactly what everyone else will see in the gallery. The two lines below the name of the program are a preview of the program documentation. By publishing your program in the gallery, other users are allowed to use, modify and share your program. You also agree to the conditions for publishing a program in the Open Roberta Gallery. If you are not sure, take another look <a href='https://www.roberta-home.de/index.php?id=138&L=1' target='_blank'>here</a>!"; // untranslated
1459+
Blockly.Msg.PROGLIST_SHARE_WITH_GALLERY_TOOLTIP = "Click here to upload your program to the gallery hence share it with all other users."; // untranslated
14591460
Blockly.Msg.PROGRAM_ERROR_EXPRBLOCK_PARSE = "This expression is syntactically incorrect."; // untranslated
14601461
Blockly.Msg.PROGRAM_ERROR_EXPRBLOCK_TYPECHECK = "This expression is invalid. The type check failed."; // untranslated
1462+
Blockly.Msg.PROGRAM_IMPORT_ERROR_MISSING_ROBOT_TYPE = "You have tried to import a program that is suitable for »$«, a group of robots/systems.<br>Please first select the desired robot/system here on the start page."; // untranslated
14611463
Blockly.Msg.PULSEHIGH = "pulse time HIGH"; // untranslated
14621464
Blockly.Msg.PULSELOW = "pulse time LOW"; // untranslated
14631465
Blockly.Msg.PULSETOOLTIP = "Represents a pulse sensor."; // untranslated
@@ -1827,6 +1829,7 @@ Blockly.Msg.START = "start"; // untranslated
18271829
Blockly.Msg.START_ACTIVITY = "activity"; // untranslated
18281830
Blockly.Msg.START_ACTIVITY_TOOLTIP = "Starts additional activity."; // untranslated
18291831
Blockly.Msg.START_ALL_ROBOTS = "All systems and filter options"; // untranslated
1832+
Blockly.Msg.START_BOOKMARK_TOOLTIP = "Create a bookmark directly to your favourite robot/system."; // untranslated
18301833
Blockly.Msg.START_CONNECT_HEADLINE = "Connect your robot"; // untranslated
18311834
Blockly.Msg.START_CONNECT_TEXT = "You can directly connect your robot. The suitable NEPO program opens automatically."; // untranslated
18321835
Blockly.Msg.START_FAQ = "Find answers to questions about the Open Roberta Lab that we have been asked so far or that we have already asked ourselves."; // untranslated
@@ -1837,6 +1840,7 @@ Blockly.Msg.START_FOOTER_FRAUNHOFER = "Fraunhofer Institute for Intelligent Anal
18371840
Blockly.Msg.START_FOOTER_INFORMATION = "<strong>Information</strong>"; // untranslated
18381841
Blockly.Msg.START_FOOTER_RESSOURCES = "<strong>Resources</strong>"; // untranslated
18391842
Blockly.Msg.START_FOOTER_ROBERTA_IAIS = "Part of the Roberta Initiative<sup>®</sup> of Fraunhofer IAIS"; // untranslated
1843+
Blockly.Msg.START_FORMATSEARCH = "search robots/systems"; // untranslated
18401844
Blockly.Msg.START_HEADLINE_PART_FOUR = "Boards"; // untranslated
18411845
Blockly.Msg.START_HEADLINE_PART_ONE = "Program"; // untranslated
18421846
Blockly.Msg.START_HEADLINE_PART_THREE = "Robots &"; // untranslated
@@ -1855,7 +1859,8 @@ Blockly.Msg.START_PROGRAM_DEBUG = "show sensor data"; // untranslated
18551859
Blockly.Msg.START_RESULTS = "results"; // untranslated
18561860
Blockly.Msg.START_SIMULATION = "Simulation"; // untranslated
18571861
Blockly.Msg.START_START = "get started"; // untranslated
1858-
Blockly.Msg.START_TEASER = "Our open source platform »Open Roberta Lab« let you create your very own programs in no time at all using drag and drop. The graphical programming language <span class='nepo'>(NEPO)</span> will support you."; // untranslated
1862+
Blockly.Msg.START_STARTUP_TITLE = "Welcome to Open Roberta Lab"; // untranslated
1863+
Blockly.Msg.START_TEASER = "Our open source platform »Open Roberta Lab« let you create your very own programs in no time at all using drag and drop."; // untranslated
18591864
Blockly.Msg.START_TOOLTIP = "The starting point for the main program."; // untranslated
18601865
Blockly.Msg.START_TOUR_HEADLINE = "Take an interactive tour"; // untranslated
18611866
Blockly.Msg.START_WIKI_HEADLINE = "Take a look at our wiki"; // untranslated

0 commit comments

Comments
 (0)