rapid-router 5.4.1__py2.py3-none-any.whl → 7.6.8__py2.py3-none-any.whl

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.
Files changed (354) hide show
  1. example_project/rapid_router_test_settings.py +164 -0
  2. example_project/settings.py +152 -0
  3. example_project/urls.py +15 -0
  4. example_project/{example_project/wsgi.py → wsgi.py} +2 -1
  5. game/__init__.py +1 -1
  6. game/admin.py +43 -4
  7. game/app_settings.py +3 -7
  8. game/character.py +26 -18
  9. game/decor.py +172 -97
  10. game/end_to_end_tests/base_game_test.py +44 -33
  11. game/end_to_end_tests/editor_page.py +17 -2
  12. game/end_to_end_tests/game_page.py +127 -45
  13. game/end_to_end_tests/selenium_test_case.py +1 -20
  14. game/end_to_end_tests/test_cow_crashes.py +3 -5
  15. game/end_to_end_tests/test_language_dropdown.py +14 -0
  16. game/end_to_end_tests/test_level_editor.py +290 -0
  17. game/end_to_end_tests/test_level_failures.py +1 -1
  18. game/end_to_end_tests/test_level_selection.py +79 -0
  19. game/end_to_end_tests/test_play_through.py +240 -102
  20. game/end_to_end_tests/test_python_levels.py +44 -13
  21. game/end_to_end_tests/test_saving_workspace.py +22 -0
  22. game/forms.py +9 -2
  23. game/level_management.py +38 -29
  24. game/messages.py +1218 -203
  25. game/migrations/0001_squashed_0025_levels_ordering_pt1.py +19 -1
  26. game/migrations/0026_levels_pt2.py +13 -2
  27. game/migrations/0032_cannot_turn_left_level.py +13 -2
  28. game/migrations/0033_recursion_level.py +13 -2
  29. game/migrations/0034_joes_level.py +13 -2
  30. game/migrations/0035_disable_route_score_level_70.py +0 -2
  31. game/migrations/0036_level_score_73.py +0 -2
  32. game/migrations/0037_level_score_79.py +0 -2
  33. game/migrations/0038_level_score_40.py +0 -1
  34. game/migrations/0042_level_score_73.py +0 -2
  35. game/migrations/0048_add_cow_field_and_blocks.py +0 -2
  36. game/migrations/0049_level_score_34.py +0 -2
  37. game/migrations/0050_level_score_40.py +0 -2
  38. game/migrations/0051_level_score_49.py +0 -1
  39. game/migrations/0076_level_locked_for_class.py +19 -0
  40. game/migrations/0077_alter_level_next_level.py +52 -0
  41. game/migrations/0078_add_block_types.py +23 -0
  42. game/migrations/0079_populate_block_type_add_cow_blocks.py +60 -0
  43. game/migrations/0080_level_disable_algorithm_score.py +18 -0
  44. game/migrations/0081_first_12_levels_no_algo_score.py +29 -0
  45. game/migrations/0082_level_43_solution.py +16 -0
  46. game/migrations/0083_add_cows_to_existing_levels.py +195 -0
  47. game/migrations/0084_alter_block_block_type.py +18 -0
  48. game/migrations/0085_add_new_blocks.py +53 -0
  49. game/migrations/0086_loop_levels.py +482 -0
  50. game/migrations/0087_workspace_python_view_enabled.py +18 -0
  51. game/migrations/0088_rename_episodes.py +35 -0
  52. game/migrations/0089_episodes_in_development.py +30 -0
  53. game/migrations/0090_add_missing_model_solutions.py +144 -0
  54. game/migrations/0091_disable_algo_score_if_no_model_solution.py +46 -0
  55. game/migrations/0092_disable_algo_score_in_custom_levels.py +28 -0
  56. game/migrations/0093_alter_level_character_name.py +18 -0
  57. game/migrations/0094_add_hint_lesson_subtitle_to_levels.py +28 -0
  58. game/migrations/0095_level_commands.py +18 -0
  59. game/migrations/0096_alter_level_commands.py +18 -0
  60. game/migrations/0097_add_python_den_levels.py +1515 -0
  61. game/migrations/0098_add_episode_link_fields.py +44 -0
  62. game/migrations/0099_python_episodes_links.py +103 -0
  63. game/migrations/0100_reorder_python_levels.py +179 -0
  64. game/migrations/0101_rename_episodes.py +45 -0
  65. game/migrations/0102_reoder_episodes_13_14.py +136 -0
  66. game/migrations/0103_level_1015_solution.py +26 -0
  67. game/migrations/0104_remove_level_direct_drive.py +17 -0
  68. game/migrations/0105_delete_invalid_attempts.py +18 -0
  69. game/migrations/0106_fields_to_snake_case.py +48 -0
  70. game/migrations/0107_rename_worksheet_link_episode_student_worksheet_link.py +18 -0
  71. game/migrations/0108_episode_indy_worksheet_link.py +18 -0
  72. game/migrations/0109_create_episodes_23_and_24.py +99 -0
  73. game/migrations/0110_remove_episode_indy_worksheet_link_and_more.py +100 -0
  74. game/migrations/0111_create_worksheets.py +149 -0
  75. game/migrations/0112_worksheet_locked_classes.py +21 -0
  76. game/migrations/0113_level_needs_approval.py +18 -0
  77. game/migrations/0114_default_and_non_student_levels_no_approval.py +31 -0
  78. game/migrations/0115_level_level__default_does_not_need_approval.py +22 -0
  79. game/migrations/0116_update_worksheet_video_links.py +68 -0
  80. game/migrations/0117_update_solutions_to_if_else.py +61 -0
  81. game/models.py +157 -16
  82. game/permissions.py +34 -19
  83. game/python_den_urls.py +26 -0
  84. game/random_road.py +43 -127
  85. game/serializers.py +12 -17
  86. game/static/django_reverse_js/js/reverse.js +171 -0
  87. game/static/game/css/LilitaOne-Regular.ttf +0 -0
  88. game/static/game/css/backgrounds.css +14 -10
  89. game/static/game/css/dataTables.custom.css +4 -2
  90. game/static/game/css/dataTables.jqueryui.css +561 -320
  91. game/static/game/css/editor.css +47 -0
  92. game/static/game/css/game.css +43 -49
  93. game/static/game/css/game_screen.css +116 -53
  94. game/static/game/css/jquery.dataTables.css +455 -251
  95. game/static/game/css/level_editor.css +10 -1
  96. game/static/game/css/level_selection.css +32 -3
  97. game/static/game/css/level_share.css +6 -5
  98. game/static/game/css/skulpt/codemirror.css +1 -0
  99. game/static/game/image/Python_Den_hero_student.png +0 -0
  100. game/static/game/image/Python_levels_page.svg +1954 -0
  101. game/static/game/image/characters/front_view/Electric_van.svg +448 -0
  102. game/static/game/image/characters/top_view/Electric_van.svg +448 -0
  103. game/static/game/image/characters/top_view/Sleigh.svg +436 -0
  104. game/static/game/image/decor/city/solar_panel.svg +1200 -0
  105. game/static/game/image/decor/farm/solar_panel.svg +86 -0
  106. game/static/game/image/decor/grass/solar_panel.svg +86 -0
  107. game/static/game/image/decor/snow/barn.svg +1788 -0
  108. game/static/game/image/decor/snow/cfc.svg +1050 -147
  109. game/static/game/image/decor/snow/crops.svg +7370 -0
  110. game/static/game/image/decor/snow/hospital.svg +1220 -0
  111. game/static/game/image/decor/snow/house1.svg +971 -0
  112. game/static/game/image/decor/snow/house2.svg +1574 -0
  113. game/static/game/image/decor/snow/school.svg +1071 -0
  114. game/static/game/image/decor/snow/shop.svg +3211 -0
  115. game/static/game/image/decor/snow/solar_panel.svg +173 -0
  116. game/static/game/image/electric_van.svg +448 -0
  117. game/static/game/image/icons/add_house.svg +26 -0
  118. game/static/game/image/icons/delete_house.svg +26 -0
  119. game/static/game/image/icons/description.svg +1 -0
  120. game/static/game/image/icons/hint.svg +1 -0
  121. game/static/game/image/icons/if_else.svg +3 -0
  122. game/static/game/image/icons/python.svg +1 -1
  123. game/static/game/image/if_else_example.png +0 -0
  124. game/static/game/image/pigeon.svg +684 -0
  125. game/static/game/image/python_den_header.svg +19 -0
  126. game/static/game/js/animation.js +84 -28
  127. game/static/game/js/blockly/msg/js/bg.js +52 -1
  128. game/static/game/js/blockly/msg/js/ca.js +52 -1
  129. game/static/game/js/blockly/msg/js/en-gb.js +52 -1
  130. game/static/game/js/blockly/msg/js/en.js +52 -1
  131. game/static/game/js/blockly/msg/js/es.js +52 -1
  132. game/static/game/js/blockly/msg/js/fr.js +52 -1
  133. game/static/game/js/blockly/msg/js/hi.js +52 -1
  134. game/static/game/js/blockly/msg/js/it.js +52 -1
  135. game/static/game/js/blockly/msg/js/pl.js +52 -1
  136. game/static/game/js/blockly/msg/js/pt-br.js +52 -1
  137. game/static/game/js/blockly/msg/js/ru.js +52 -1
  138. game/static/game/js/blockly/msg/js/ur.js +52 -1
  139. game/static/game/js/blocklyCompiler.js +550 -392
  140. game/static/game/js/blocklyControl.js +335 -302
  141. game/static/game/js/blocklyCustomBlocks.js +691 -458
  142. game/static/game/js/blocklyCustomisations.js +3 -1
  143. game/static/game/js/button.js +12 -0
  144. game/static/game/js/cow.js +15 -130
  145. game/static/game/js/drawing.js +313 -201
  146. game/static/game/js/editor.js +23 -0
  147. game/static/game/js/game.js +148 -139
  148. game/static/game/js/jquery.dataTables.min.js +3 -159
  149. game/static/game/js/level_editor.js +823 -448
  150. game/static/game/js/level_moderation.js +33 -2
  151. game/static/game/js/level_selection.js +62 -25
  152. game/static/game/js/loadLanguages.js +21 -0
  153. game/static/game/js/map.js +106 -36
  154. game/static/game/js/model.js +55 -107
  155. game/static/game/js/pathFinder.js +73 -72
  156. game/static/game/js/program.js +184 -193
  157. game/static/game/js/pythonControl.js +14 -1
  158. game/static/game/js/scoreboard.js +0 -37
  159. game/static/game/js/scoreboardSharedLevels.js +48 -0
  160. game/static/game/js/sharing.js +22 -10
  161. game/static/game/js/skulpt/codemirror.js +5 -4
  162. game/static/game/js/skulpt/skulpt-stdlib.js +1 -1
  163. game/static/game/js/sound.js +52 -5
  164. game/static/game/js/van.js +0 -7
  165. game/static/game/raphael_image/characters/top_view/Electric_van.svg +448 -0
  166. game/static/game/raphael_image/characters/top_view/Sleigh.svg +436 -0
  167. game/static/game/raphael_image/decor/city/solar_panel.svg +1200 -0
  168. game/static/game/raphael_image/decor/farm/solar_panel.svg +86 -0
  169. game/static/game/raphael_image/decor/grass/solar_panel.svg +86 -0
  170. game/static/game/raphael_image/decor/snow/barn.svg +1788 -0
  171. game/static/game/raphael_image/decor/snow/cfc.svg +1050 -147
  172. game/static/game/raphael_image/decor/snow/crops.svg +7370 -0
  173. game/static/game/raphael_image/decor/snow/hospital.svg +1220 -0
  174. game/static/game/raphael_image/decor/snow/house1.svg +971 -0
  175. game/static/game/raphael_image/decor/snow/house2.svg +1574 -0
  176. game/static/game/raphael_image/decor/snow/school.svg +1071 -0
  177. game/static/game/raphael_image/decor/snow/shop.svg +3211 -0
  178. game/static/game/raphael_image/decor/snow/solar_panel.svg +173 -0
  179. game/static/game/raphael_image/pigeon.svg +685 -0
  180. game/static/game/raphael_image/sleigh_wreckage.svg +430 -0
  181. game/static/game/sass/game.scss +22 -6
  182. game/static/game/sound/clown_horn.mp3 +0 -0
  183. game/static/game/sound/clown_horn.ogg +0 -0
  184. game/static/game/sound/electric_van_starting.mp3 +0 -0
  185. game/static/game/sound/electric_van_starting.ogg +0 -0
  186. game/static/game/sound/pigeon.mp3 +0 -0
  187. game/static/game/sound/pigeon.ogg +0 -0
  188. game/static/game/sound/sleigh_bells.mp3 +0 -0
  189. game/static/game/sound/sleigh_bells.ogg +0 -0
  190. game/static/game/sound/sleigh_crash.mp3 +0 -0
  191. game/static/game/sound/sleigh_crash.ogg +0 -0
  192. game/templates/game/base.html +35 -15
  193. game/templates/game/basenonav.html +23 -17
  194. game/templates/game/game.html +236 -111
  195. game/templates/game/level_editor.html +353 -275
  196. game/templates/game/level_moderation.html +19 -6
  197. game/templates/game/level_selection.html +75 -62
  198. game/templates/game/python_den_level_selection.html +291 -0
  199. game/templates/game/python_den_worksheet.html +101 -0
  200. game/templates/game/scoreboard.html +88 -65
  201. game/tests/test_level_editor.py +210 -35
  202. game/tests/test_level_moderation.py +6 -20
  203. game/tests/test_level_selection.py +332 -11
  204. game/tests/test_python_den_worksheet.py +85 -0
  205. game/tests/test_scoreboard.py +258 -66
  206. game/tests/utils/level.py +43 -3
  207. game/tests/utils/teacher.py +2 -2
  208. game/theme.py +21 -21
  209. game/urls.py +125 -78
  210. game/views/language_code_conversions.py +90 -0
  211. game/views/level.py +201 -63
  212. game/views/level_editor.py +109 -48
  213. game/views/level_moderation.py +29 -6
  214. game/views/level_selection.py +179 -56
  215. game/views/level_solutions.py +600 -106
  216. game/views/scoreboard.py +181 -66
  217. game/views/worksheet.py +25 -0
  218. rapid_router-7.6.8.dist-info/METADATA +174 -0
  219. {rapid_router-5.4.1.dist-info → rapid_router-7.6.8.dist-info}/RECORD +222 -242
  220. {rapid_router-5.4.1.dist-info → rapid_router-7.6.8.dist-info}/WHEEL +1 -1
  221. rapid_router-7.6.8.dist-info/licenses/LICENSE.md +3 -0
  222. example_project/example_project/__init__.py +0 -1
  223. example_project/example_project/settings.py +0 -54
  224. example_project/example_project/urls.py +0 -16
  225. example_project/manage.py +0 -10
  226. game/autoconfig.py +0 -59
  227. game/csp_config.py +0 -23
  228. game/locale/ar_SA/LC_MESSAGES/django.mo +0 -0
  229. game/locale/ar_SA/LC_MESSAGES/django.po +0 -405
  230. game/locale/ar_SA/LC_MESSAGES/djangojs.mo +0 -0
  231. game/locale/ar_SA/LC_MESSAGES/djangojs.po +0 -743
  232. game/locale/bg_BG/LC_MESSAGES/django.mo +0 -0
  233. game/locale/bg_BG/LC_MESSAGES/django.po +0 -405
  234. game/locale/bg_BG/LC_MESSAGES/djangojs.mo +0 -0
  235. game/locale/bg_BG/LC_MESSAGES/djangojs.po +0 -739
  236. game/locale/ca_ES/LC_MESSAGES/django.mo +0 -0
  237. game/locale/ca_ES/LC_MESSAGES/django.po +0 -405
  238. game/locale/ca_ES/LC_MESSAGES/djangojs.mo +0 -0
  239. game/locale/ca_ES/LC_MESSAGES/djangojs.po +0 -740
  240. game/locale/cs_CZ/LC_MESSAGES/django.mo +0 -0
  241. game/locale/cs_CZ/LC_MESSAGES/django.po +0 -405
  242. game/locale/cs_CZ/LC_MESSAGES/djangojs.mo +0 -0
  243. game/locale/cs_CZ/LC_MESSAGES/djangojs.po +0 -741
  244. game/locale/cy_GB/LC_MESSAGES/django.mo +0 -0
  245. game/locale/cy_GB/LC_MESSAGES/django.po +0 -405
  246. game/locale/cy_GB/LC_MESSAGES/djangojs.mo +0 -0
  247. game/locale/cy_GB/LC_MESSAGES/djangojs.po +0 -743
  248. game/locale/de_DE/LC_MESSAGES/django.mo +0 -0
  249. game/locale/de_DE/LC_MESSAGES/django.po +0 -405
  250. game/locale/de_DE/LC_MESSAGES/djangojs.mo +0 -0
  251. game/locale/de_DE/LC_MESSAGES/djangojs.po +0 -739
  252. game/locale/el_GR/LC_MESSAGES/django.mo +0 -0
  253. game/locale/el_GR/LC_MESSAGES/django.po +0 -405
  254. game/locale/el_GR/LC_MESSAGES/djangojs.mo +0 -0
  255. game/locale/el_GR/LC_MESSAGES/djangojs.po +0 -739
  256. game/locale/en_GB/LC_MESSAGES/django.mo +0 -0
  257. game/locale/en_GB/LC_MESSAGES/django.po +0 -405
  258. game/locale/en_GB/LC_MESSAGES/djangojs.mo +0 -0
  259. game/locale/en_GB/LC_MESSAGES/djangojs.po +0 -739
  260. game/locale/es_ES/LC_MESSAGES/django.mo +0 -0
  261. game/locale/es_ES/LC_MESSAGES/django.po +0 -405
  262. game/locale/es_ES/LC_MESSAGES/djangojs.mo +0 -0
  263. game/locale/es_ES/LC_MESSAGES/djangojs.po +0 -739
  264. game/locale/fi_FI/LC_MESSAGES/django.mo +0 -0
  265. game/locale/fi_FI/LC_MESSAGES/django.po +0 -405
  266. game/locale/fi_FI/LC_MESSAGES/djangojs.mo +0 -0
  267. game/locale/fi_FI/LC_MESSAGES/djangojs.po +0 -739
  268. game/locale/fr_FR/LC_MESSAGES/django.mo +0 -0
  269. game/locale/fr_FR/LC_MESSAGES/django.po +0 -405
  270. game/locale/fr_FR/LC_MESSAGES/djangojs.mo +0 -0
  271. game/locale/fr_FR/LC_MESSAGES/djangojs.po +0 -739
  272. game/locale/gu_IN/LC_MESSAGES/django.mo +0 -0
  273. game/locale/gu_IN/LC_MESSAGES/django.po +0 -405
  274. game/locale/gu_IN/LC_MESSAGES/djangojs.mo +0 -0
  275. game/locale/gu_IN/LC_MESSAGES/djangojs.po +0 -739
  276. game/locale/hi_IN/LC_MESSAGES/django.mo +0 -0
  277. game/locale/hi_IN/LC_MESSAGES/django.po +0 -405
  278. game/locale/hi_IN/LC_MESSAGES/djangojs.mo +0 -0
  279. game/locale/hi_IN/LC_MESSAGES/djangojs.po +0 -739
  280. game/locale/id_ID/LC_MESSAGES/django.mo +0 -0
  281. game/locale/id_ID/LC_MESSAGES/django.po +0 -405
  282. game/locale/id_ID/LC_MESSAGES/djangojs.mo +0 -0
  283. game/locale/id_ID/LC_MESSAGES/djangojs.po +0 -738
  284. game/locale/it_IT/LC_MESSAGES/django.mo +0 -0
  285. game/locale/it_IT/LC_MESSAGES/django.po +0 -405
  286. game/locale/it_IT/LC_MESSAGES/djangojs.mo +0 -0
  287. game/locale/it_IT/LC_MESSAGES/djangojs.po +0 -739
  288. game/locale/ja_JP/LC_MESSAGES/django.mo +0 -0
  289. game/locale/ja_JP/LC_MESSAGES/django.po +0 -405
  290. game/locale/ja_JP/LC_MESSAGES/djangojs.mo +0 -0
  291. game/locale/ja_JP/LC_MESSAGES/djangojs.po +0 -738
  292. game/locale/lol_US/LC_MESSAGES/django.mo +0 -0
  293. game/locale/lol_US/LC_MESSAGES/django.po +0 -405
  294. game/locale/lol_US/LC_MESSAGES/djangojs.mo +0 -0
  295. game/locale/lol_US/LC_MESSAGES/djangojs.po +0 -739
  296. game/locale/nb_NO/LC_MESSAGES/django.mo +0 -0
  297. game/locale/nb_NO/LC_MESSAGES/django.po +0 -405
  298. game/locale/nb_NO/LC_MESSAGES/djangojs.mo +0 -0
  299. game/locale/nb_NO/LC_MESSAGES/djangojs.po +0 -739
  300. game/locale/nl_NL/LC_MESSAGES/django.mo +0 -0
  301. game/locale/nl_NL/LC_MESSAGES/django.po +0 -405
  302. game/locale/nl_NL/LC_MESSAGES/djangojs.mo +0 -0
  303. game/locale/nl_NL/LC_MESSAGES/djangojs.po +0 -739
  304. game/locale/pl_PL/LC_MESSAGES/django.mo +0 -0
  305. game/locale/pl_PL/LC_MESSAGES/django.po +0 -405
  306. game/locale/pl_PL/LC_MESSAGES/djangojs.mo +0 -0
  307. game/locale/pl_PL/LC_MESSAGES/djangojs.po +0 -741
  308. game/locale/pt_BR/LC_MESSAGES/django.mo +0 -0
  309. game/locale/pt_BR/LC_MESSAGES/django.po +0 -405
  310. game/locale/pt_BR/LC_MESSAGES/djangojs.mo +0 -0
  311. game/locale/pt_BR/LC_MESSAGES/djangojs.po +0 -739
  312. game/locale/pt_PT/LC_MESSAGES/django.mo +0 -0
  313. game/locale/pt_PT/LC_MESSAGES/django.po +0 -405
  314. game/locale/pt_PT/LC_MESSAGES/djangojs.mo +0 -0
  315. game/locale/pt_PT/LC_MESSAGES/djangojs.po +0 -739
  316. game/locale/ro_RO/LC_MESSAGES/django.mo +0 -0
  317. game/locale/ro_RO/LC_MESSAGES/django.po +0 -405
  318. game/locale/ro_RO/LC_MESSAGES/djangojs.mo +0 -0
  319. game/locale/ro_RO/LC_MESSAGES/djangojs.po +0 -740
  320. game/locale/ru_RU/LC_MESSAGES/django.mo +0 -0
  321. game/locale/ru_RU/LC_MESSAGES/django.po +0 -405
  322. game/locale/ru_RU/LC_MESSAGES/djangojs.mo +0 -0
  323. game/locale/ru_RU/LC_MESSAGES/djangojs.po +0 -741
  324. game/locale/sv_SE/LC_MESSAGES/django.mo +0 -0
  325. game/locale/sv_SE/LC_MESSAGES/django.po +0 -405
  326. game/locale/sv_SE/LC_MESSAGES/djangojs.mo +0 -0
  327. game/locale/sv_SE/LC_MESSAGES/djangojs.po +0 -739
  328. game/locale/tl_PH/LC_MESSAGES/django.mo +0 -0
  329. game/locale/tl_PH/LC_MESSAGES/django.po +0 -405
  330. game/locale/tl_PH/LC_MESSAGES/djangojs.mo +0 -0
  331. game/locale/tl_PH/LC_MESSAGES/djangojs.po +0 -739
  332. game/locale/tlh_AA/LC_MESSAGES/django.mo +0 -0
  333. game/locale/tlh_AA/LC_MESSAGES/django.po +0 -405
  334. game/locale/tlh_AA/LC_MESSAGES/djangojs.mo +0 -0
  335. game/locale/tlh_AA/LC_MESSAGES/djangojs.po +0 -739
  336. game/locale/tr_TR/LC_MESSAGES/django.mo +0 -0
  337. game/locale/tr_TR/LC_MESSAGES/django.po +0 -405
  338. game/locale/tr_TR/LC_MESSAGES/djangojs.mo +0 -0
  339. game/locale/tr_TR/LC_MESSAGES/djangojs.po +0 -740
  340. game/locale/ur_IN/LC_MESSAGES/django.mo +0 -0
  341. game/locale/ur_IN/LC_MESSAGES/django.po +0 -405
  342. game/locale/ur_IN/LC_MESSAGES/djangojs.mo +0 -0
  343. game/locale/ur_IN/LC_MESSAGES/djangojs.po +0 -739
  344. game/locale/ur_PK/LC_MESSAGES/django.mo +0 -0
  345. game/locale/ur_PK/LC_MESSAGES/django.po +0 -405
  346. game/locale/ur_PK/LC_MESSAGES/djangojs.mo +0 -0
  347. game/locale/ur_PK/LC_MESSAGES/djangojs.po +0 -739
  348. game/static/game/image/actions/go.svg +0 -18
  349. game/static/game/image/icons/destination.svg +0 -9
  350. game/static/game/js/pqselect.min.js +0 -9
  351. game/static/game/js/widget-scroller.js +0 -906
  352. rapid_router-5.4.1.dist-info/LICENSE.md +0 -577
  353. rapid_router-5.4.1.dist-info/METADATA +0 -24
  354. {rapid_router-5.4.1.dist-info → rapid_router-7.6.8.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,19 @@
1
+ <svg width="1440" height="41" viewBox="0 0 1440 41" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g clip-path="url(#clip0_1836_1252)">
3
+ <rect width="1440" height="41" fill="#1E30A6"/>
4
+ <path d="M1146.39 -2.60795L1149 -9.65065C1149.17 -10.1164 1149.83 -10.1164 1150 -9.65065L1152.61 -2.60779L1159.65 -0.00171947C1160.12 0.170583 1160.12 0.829576 1159.65 1.00188L1152.61 3.60795L1150 10.6508C1149.83 11.1166 1149.17 11.1166 1149 10.6508L1146.39 3.60795L1139.35 1.00188C1138.88 0.829576 1138.88 0.170583 1139.35 -0.00171947L1146.39 -2.60779L1146.39 -2.60795Z" fill="white"/>
5
+ <path d="M965.392 18.392L967.998 11.3493C968.17 10.8836 968.829 10.8836 969.002 11.3493L971.608 18.3922L978.651 20.9983C979.116 21.1706 979.116 21.8296 978.651 22.0019L971.608 24.608L969.002 31.6508C968.829 32.1166 968.17 32.1166 967.998 31.6508L965.392 24.608L958.349 22.0019C957.884 21.8296 957.884 21.1706 958.349 20.9983L965.392 18.3922L965.392 18.392Z" fill="white"/>
6
+ <path d="M322.392 36.392L324.998 29.3493C325.17 28.8836 325.829 28.8836 326.002 29.3493L328.608 36.3922L335.651 38.9983C336.116 39.1706 336.116 39.8296 335.651 40.0019L328.608 42.608L326.002 49.6508C325.829 50.1166 325.17 50.1166 324.998 49.6508L322.392 42.608L315.349 40.0019C314.884 39.8296 314.884 39.1706 315.349 38.9983L322.392 36.3922L322.392 36.392Z" fill="white"/>
7
+ <path d="M1349 34.9998L1349 6.00001L1320 6.00001C1320 22.0174 1332.98 34.9998 1349 34.9998Z" fill="#213CE7"/>
8
+ <path d="M1244.86 19.8721C1252.37 19.8721 1252.37 30.8962 1259.88 30.8962C1267.39 30.8962 1267.4 19.8721 1274.91 19.8721C1282.42 19.8721 1282.42 30.8962 1289.93 30.8962C1297.44 30.8962 1297.44 19.8721 1304.95 19.8721C1312.47 19.8721 1312.47 30.8962 1319.98 30.8962C1327.49 30.8962 1327.49 19.8721 1335 19.8721" stroke="#D841C3" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/>
9
+ <path d="M1244.86 31.7442L1221 22.1552V17.6461L1244.86 8V11.9954L1224.94 19.8721L1244.86 27.7488V31.7442Z" fill="#F5CD50"/>
10
+ <path d="M183 10L204 18.4808V22.4687L183 31L183 27.4663L200.535 20.5L183 13.5337L183 10Z" fill="#D841C3"/>
11
+ <path d="M99 19C105.667 19 105.667 29 112.333 29C118.999 29 119 19 125.666 19C132.332 19 132.333 29 139 29C145.666 29 145.666 19 152.333 19C159 19 159 29 165.666 29C172.332 29 172.333 19 179 19" stroke="#F5CD50" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/>
12
+ <path d="M464 20V44H488C488 30.7441 477.256 20 464 20Z" fill="#F6BE00"/>
13
+ </g>
14
+ <defs>
15
+ <clipPath id="clip0_1836_1252">
16
+ <rect width="1440" height="41" fill="white"/>
17
+ </clipPath>
18
+ </defs>
19
+ </svg>
@@ -16,24 +16,39 @@ ocargo.Animation = function(model, decor, drawing) {
16
16
 
17
17
  this.setAnimationDuration(this.REGULAR_ANIMATION_DURATION);
18
18
 
19
- // timer identifier for pausing
20
- this.playTimer = -1;
21
-
22
- this.drawing.clearPaper();
23
- this.drawing.renderMap(this.model.map);
24
- this.drawing.renderDecor(this.decor);
25
- this.drawing.renderOrigin(this.model.map.startingPosition());
26
- this.drawing.renderDestinations(this.model.map.getDestinations());
27
- this.drawing.renderTrafficLights(this.model.trafficLights);
19
+ // timer identifier for pausing
20
+ this.playTimer = -1;
21
+
22
+ this.drawing.clearPaper();
23
+ this.drawing.renderMap(this.model.map);
28
24
  this.drawing.renderCharacter();
25
+ this.drawing.renderDecor(this.decor);
26
+ this.drawing.renderOrigin(this.model.map.startingPosition());
27
+ this.drawing.renderDestinations(this.model.map.getDestinations());
28
+ this.drawing.renderTrafficLights(this.model.trafficLights);
29
+
30
+ this.addCows();
29
31
 
30
- this._updateFuelGauge(100);
32
+ this._updateFuelGauge(100);
31
33
  };
32
34
 
33
35
  ocargo.Animation.prototype.isFinished = function() {
34
36
  return this.finished;
35
37
  };
36
38
 
39
+ ocargo.Animation.prototype.addCows = function() {
40
+ let cows = this.model.cows;
41
+
42
+ for (let i = 0 ; i < cows.length ; i++){
43
+ let cow = cows[i];
44
+ for (let j = 0; j < cow.coordinates.length; j++) {
45
+ const cowImage = this.drawing.renderCow(cow.id, cow.coordinates[j], cow.potentialNodes[j], 0, cow.type);
46
+ this.numberOfCowsOnMap++;
47
+ this.activeCows.push(cowImage);
48
+ }
49
+ }
50
+ }
51
+
37
52
  ocargo.Animation.prototype.removeCows = function() {
38
53
  for (var i = 0; i < this.activeCows.length; i++) {
39
54
  this.drawing.removeCow(this.activeCows[i]);
@@ -60,6 +75,7 @@ ocargo.Animation.prototype.resetAnimation = function() {
60
75
  }
61
76
 
62
77
  this.removeCows();
78
+ this.addCows();
63
79
 
64
80
  for(var i = 0; i < this.model.map.destinations.length; i++) {
65
81
  var destination = this.model.map.destinations[i];
@@ -112,7 +128,7 @@ ocargo.Animation.prototype.stepAnimation = function(callback) {
112
128
  var animation = timestampQueue.shift();
113
129
  var delay = this.performAnimation(animation);
114
130
  if (this.crashed && delay != 0) {
115
- //Special case for crashing into cow as the van travel less before crashing
131
+ // Special case for crashing into cow as the van travel less before crashing
116
132
  maxDelay = delay;
117
133
  } else {
118
134
  maxDelay = Math.max(maxDelay, delay);
@@ -151,6 +167,18 @@ ocargo.Animation.prototype.playAnimation = function() {
151
167
  if (!this.currentlyAnimating && !this.isPlaying && this.animationQueue.length > 0) {
152
168
  this.isPlaying = true;
153
169
  this.stepAnimation(undefined);
170
+
171
+ let gauge_text = document.getElementById("Text_percentage");
172
+ let gauge_text_value = document.getElementById("Text_percentage_value");
173
+ let gauge_charge_circle = document.getElementById("f");
174
+ let gauge_emptying_circle = document.getElementById("emptying_circle");
175
+
176
+ gauge_text.setAttribute("transform", "translate(42.3 48.2)");
177
+ gauge_text.setAttribute("fill", "#4ba0dd");
178
+ gauge_text_value.textContent = "100%";
179
+ gauge_charge_circle.setAttribute("fill", "#4ba0dd");
180
+ gauge_emptying_circle.setAttribute("stroke-dashoffset", 273.18);
181
+ gauge_emptying_circle.setAttribute("transform", "rotate(90, 59.79, 59.79)");
154
182
  }
155
183
  };
156
184
 
@@ -211,6 +239,9 @@ ocargo.Animation.prototype.performAnimation = function(animation) {
211
239
  case 'WAIT':
212
240
  this.drawing.wait();
213
241
  break;
242
+ case 'SOUND_HORN':
243
+ this.drawing.wait();
244
+ break;
214
245
  case 'PUFFUP':
215
246
  this.scalingModifier.push(2);
216
247
  break;
@@ -287,7 +318,14 @@ ocargo.Animation.prototype.performAnimation = function(animation) {
287
318
  } else {
288
319
  // If there exists next level, add animation button which redirects the user to that
289
320
  if (NEXT_LEVEL_URL) {
290
- buttons += ocargo.button.redirectButtonHtml('next_level_button', NEXT_LEVEL_URL, gettext('Next Level'));
321
+ if (NEXT_LEVEL_URL == "/pythonden/") {
322
+ buttons += ocargo.button.episodeRedirectButtonHtml('next_level_button', NEXT_LEVEL_URL, gettext('Next episode'), NEXT_EPISODE)
323
+ } else {
324
+ buttons += ocargo.button.redirectButtonHtml('next_level_button', NEXT_LEVEL_URL, gettext('Next level'))
325
+ }
326
+ }
327
+ else if (PREV_LEVEL_URL) {
328
+ buttons += ocargo.button.redirectButtonHtml('prev_level_button', PREV_LEVEL_URL, gettext('Previous level'));
291
329
  } else {
292
330
  /*
293
331
  This is the last level of the episode. If there exists animation next episode, add button to
@@ -331,7 +369,7 @@ ocargo.Animation.prototype.performAnimation = function(animation) {
331
369
  }
332
370
  var otherMsg = "";
333
371
  if (animation.popupHint) {
334
- buttons += '<button class="navigation_button long_button" id="hintPopupBtn"><span>' + gettext('Are you stuck? Do you need help?') + '</span></button>';
372
+ buttons += '<button class="navigation_button long_button" id="hintPopupBtn"><span>' + gettext('Show hint') + '</span></button>';
335
373
  otherMsg = '<div id="hintBtnPara">' + '</div><div id="hintText">' + HINT + '</div>';
336
374
  }
337
375
  ocargo.Drawing.startPopup(title, leadMsg, otherMsg, true, buttons);
@@ -346,15 +384,10 @@ ocargo.Animation.prototype.performAnimation = function(animation) {
346
384
  case 'trafficlight':
347
385
  this.drawing.transitionTrafficLight(animation.id, animation.colour, duration/2);
348
386
  break;
349
- case 'cow':
350
- this.numberOfCowsOnMap++;
351
- var activeCow = this.drawing.renderCow(animation.id, animation.coordinate, animation.node, duration, animation.cowType);
352
- this.activeCows.push(activeCow);
353
- break;
354
387
  case 'cow_leave':
355
- this.numberOfCowsOnMap--;
356
- var cow = this._extractCowAt(animation.coordinate);
357
- this.drawing.removeCow(cow, duration); // remove it from drawing
388
+ this.numberOfCowsOnMap--;
389
+ var cow = this._extractCowAt(animation.coordinate);
390
+ this.drawing.removeCow(cow, duration); // remove it from drawing
358
391
  break;
359
392
  case 'console':
360
393
  ocargo.pythonControl.appendToConsole(animation.text);
@@ -366,7 +399,7 @@ ocargo.Animation.prototype.performAnimation = function(animation) {
366
399
  ocargo.Animation.prototype._extractCowAt = function(coordinate) {
367
400
  for (var i = 0; i < this.activeCows.length; i++) {
368
401
  var cow = this.activeCows[i];
369
- if (cow.coordinate == coordinate) {
402
+ if (coordinate.equals(cow.coordinate)) {
370
403
  this.activeCows.splice(i, 1); // remove cow from array
371
404
  return cow;
372
405
  }
@@ -374,16 +407,39 @@ ocargo.Animation.prototype._extractCowAt = function(coordinate) {
374
407
  };
375
408
 
376
409
  ocargo.Animation.prototype._updateFuelIfPresent = function(animation) {
377
- if (typeof animation.fuel != 'undefined') {
410
+ if (typeof animation.fuel != 'undefined' && animation.fuel >= 0) {
378
411
  this._updateFuelGauge(animation.fuel);
379
412
  }
380
413
  };
381
414
 
382
415
  ocargo.Animation.prototype._updateFuelGauge = function(fuelPercentage) {
383
- var degrees = ((fuelPercentage / 100) * 240) - 120;
384
- var rotation = 'rotate(' + degrees + 'deg)';
385
- document.getElementById('fuelGaugePointer').style.transform = rotation;
386
- document.getElementById('fuelGaugePointer').style.webkitTransform = rotation;
416
+ if (CHARACTER_NAME == "Electric van") {
417
+ let gaugeCircumference = 273.18;
418
+ let baseRotation = 270;
419
+
420
+ let offset = gaugeCircumference * (fuelPercentage / 100);
421
+ let rotation = 36 * (fuelPercentage / 10) - baseRotation;
422
+
423
+ let color = (fuelPercentage > 30) ? "#4ba0dd" : ((fuelPercentage > 10) ? "#ff7300" : "#ff3131");
424
+ let text_x = (fuelPercentage == 100) ? 42.3 : ((fuelPercentage >= 10) ? 45 : 50);
425
+
426
+ let gauge_text = document.getElementById("Text_percentage");
427
+ let gauge_text_value = document.getElementById("Text_percentage_value");
428
+ let gauge_charge_circle = document.getElementById("f");
429
+ let gauge_emptying_circle = document.getElementById("emptying_circle");
430
+
431
+ gauge_text.setAttribute("transform", "translate(" + text_x + " 48.2)");
432
+ gauge_text.setAttribute("fill", color);
433
+ gauge_text_value.textContent = fuelPercentage + "%";
434
+ gauge_charge_circle.setAttribute("fill", color);
435
+ gauge_emptying_circle.setAttribute("stroke-dashoffset", offset);
436
+ gauge_emptying_circle.setAttribute("transform", "rotate(" + rotation + ", 59.79, 59.79)");
437
+ } else {
438
+ var degrees = ((fuelPercentage / 100) * 240) - 120;
439
+ var rotation = 'rotate(' + degrees + 'deg)';
440
+ document.getElementById('fuelGaugePointer').style.transform = rotation;
441
+ document.getElementById('fuelGaugePointer').style.webkitTransform = rotation;
442
+ }
387
443
  };
388
444
 
389
445
  ocargo.Animation.prototype.serializeAnimationQueue = function(blocks){
@@ -440,4 +496,4 @@ ocargo.Animation.prototype.serializeAnimationQueue = function(blocks){
440
496
  ocargo.Animation.prototype.setAnimationDuration = function(duration) {
441
497
  this.animationDuration = duration;
442
498
  this.drawing.setCharacterManoeuvreDuration(this.animationDuration);
443
- };
499
+ };
@@ -433,4 +433,55 @@ Blockly.Msg["VARIABLES_HUE"] = "330";
433
433
  Blockly.Msg["TEXTS_HUE"] = "160";
434
434
  Blockly.Msg["PROCEDURES_HUE"] = "290";
435
435
  Blockly.Msg["COLOUR_HUE"] = "20";
436
- Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310";
436
+ Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310";
437
+
438
+ Blockly.Msg["START_TITLE"] = "Начало";
439
+ Blockly.Msg["START_TOOLTIP"] = "Началото на програмата"
440
+ Blockly.Msg["MOVE_FORWARDS_TITLE"] = "Премести напред";
441
+ Blockly.Msg["MOVE_FORWARDS_TOOLTIP"] = "премества камиона напред";
442
+ Blockly.Msg["TURN_LEFT_TITLE"] = "Завий наляво";
443
+ Blockly.Msg["TURN_LEFT_TOOLTIP"] = "камионът прави ляв завой";
444
+ Blockly.Msg["TURN_RIGHT_TITLE"] = "Завий надясно";
445
+ Blockly.Msg["TURN_RIGHT_TOOLTIP"] = "камионът прави десен завой";
446
+ Blockly.Msg["TURN_AROUND_TITLE"] = "Завърти се наобратно";
447
+ Blockly.Msg["TURN_AROUND_TOOLTIP"] = "камионът ще се движи в противоположна посока";
448
+
449
+ Blockly.Msg["WAIT_TITLE"] = "Изчакай";
450
+ Blockly.Msg["WAIT_TOOLTIP"] = "камионът стои неподвижно";
451
+ Blockly.Msg["DELIVER_TITLE"] = "Достави";
452
+ Blockly.Msg["DELIVER_TOOLTIP"] = "доставя стоките от камиона";
453
+ Blockly.Msg["SOUND_HORN_TITLE"] = "Свирни";
454
+ Blockly.Msg["SOUND_HORN_TOOLTIP"] = "включва клаксон за да плаши кравите";
455
+
456
+ Blockly.Msg["ROAD_EXISTS_FORWARD_TITLE"] = "Има път направо";
457
+ Blockly.Msg["ROAD_EXISTS_LEFT_TITLE"] = "Има път наляво";
458
+ Blockly.Msg["ROAD_EXISTS_RIGHT_TITLE"] = "Има път надясно";
459
+ Blockly.Msg["TRAFFIC_LIGHT_RED_TITLE"] = "Червен светофар";
460
+ Blockly.Msg["TRAFFIC_LIGHT_GREEN_TITLE"] = "зелен светофар";
461
+ Blockly.Msg["DEAD_END_TITLE"] = "Път без изход";
462
+ Blockly.Msg["AT_DESTINATION_TITLE"] = "На адреса";
463
+ Blockly.Msg["COW_CROSSING_TITLE"] = "Крави";
464
+ Blockly.Msg["PIGEON_CROSSING_TITLE"] = "гълъби";
465
+
466
+ Blockly.Msg["CALL_PROC_TITLE"] = "Изпълни";
467
+ Blockly.Msg["CALL_PROC_TOOLTIP"] = "изпълнява процедура";
468
+ Blockly.Msg["DECLARE_PROC_TITLE"] = "Дефинирай";
469
+ Blockly.Msg["DECLARE_PROC_SUBTITLE"] = "прави";
470
+ Blockly.Msg["DECLARE_PROC_TOOLTIP"] = "декларира процедура";
471
+ Blockly.Msg["CONTROLS_REPEAT_WHILE_TITLE"] = "Повтори докато";
472
+ Blockly.Msg["CONTROLS_REPEAT_WHILE_SUBTITLE"] = "прави";
473
+ Blockly.Msg["CONTROLS_REPEAT_WHILE_TOOLTIP"] = "докато стойността е вярна, изпълнявай действията";
474
+ Blockly.Msg["CONTROLS_REPEAT_UNTIL_TITLE"] = "Повтори докато не";
475
+ Blockly.Msg["CONTROLS_REPEAT_UNTIL_SUBTITLE"] = "прави";
476
+ Blockly.Msg["CONTROLS_REPEAT_UNTIL_TOOLTIP"] = "изпълнявай действията, докато стойността не е вярна";
477
+
478
+ Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "променлива";
479
+ Blockly.Msg["VARIABLES_SET_TITLE"] = "Задай на";
480
+ Blockly.Msg["VARIABLES_SET_SUBTITLE"] = "стойност";
481
+ Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "задаване на стойност на променлива";
482
+ Blockly.Msg["VARIABLES_NUMERIC_SET_TOOLTIP"] = "задаване на числена стойност на променлива";
483
+ Blockly.Msg["VARIABLES_INCREMENT_TITLE"] = "Увеличи";
484
+ Blockly.Msg["VARIABLES_INCREMENT_SUBTITLE"] = "с";
485
+ Blockly.Msg["VARIABLES_INCREMENT_TOOLTIP"] = "увеличаване на променлива";
486
+ Blockly.Msg["NUMBER_TITLE"] = "Число";
487
+ Blockly.Msg["NUMBER_TOOLTIP"] = "число";
@@ -433,4 +433,55 @@ Blockly.Msg["VARIABLES_HUE"] = "330";
433
433
  Blockly.Msg["TEXTS_HUE"] = "160";
434
434
  Blockly.Msg["PROCEDURES_HUE"] = "290";
435
435
  Blockly.Msg["COLOUR_HUE"] = "20";
436
- Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310";
436
+ Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310";
437
+
438
+ Blockly.Msg["START_TITLE"] = "Inici";
439
+ Blockly.Msg["START_TOOLTIP"] = "L’inici del programa"
440
+ Blockly.Msg["MOVE_FORWARDS_TITLE"] = "mou endavant";
441
+ Blockly.Msg["MOVE_FORWARDS_TOOLTIP"] = "Mou la furgoneta endavant";
442
+ Blockly.Msg["TURN_LEFT_TITLE"] = "gira a l’esquerra";
443
+ Blockly.Msg["TURN_LEFT_TOOLTIP"] = "Gira la furgoneta cap a l’esquerra";
444
+ Blockly.Msg["TURN_RIGHT_TITLE"] = "gira a la dreta";
445
+ Blockly.Msg["TURN_RIGHT_TOOLTIP"] = "Gira la furgoneta cap a la dreta";
446
+ Blockly.Msg["TURN_AROUND_TITLE"] = "canvia de sentit";
447
+ Blockly.Msg["TURN_AROUND_TOOLTIP"] = "Canvia de sentit la furgoneta";
448
+
449
+ Blockly.Msg["WAIT_TITLE"] = "espera";
450
+ Blockly.Msg["WAIT_TOOLTIP"] = "Deixa la furgoneta parada";
451
+ Blockly.Msg["DELIVER_TITLE"] = "entrega";
452
+ Blockly.Msg["DELIVER_TOOLTIP"] = "Entrega les mercaderies de la furgoneta";
453
+ Blockly.Msg["SOUND_HORN_TITLE"] = "fes sonar el clàxon";
454
+ Blockly.Msg["SOUND_HORN_TOOLTIP"] = "Fes sonar el clàxon per espantar les vaques";
455
+
456
+ Blockly.Msg["ROAD_EXISTS_FORWARD_TITLE"] = "hi ha una carretera endavant";
457
+ Blockly.Msg["ROAD_EXISTS_LEFT_TITLE"] = "hi ha una carretera a l’esquerra";
458
+ Blockly.Msg["ROAD_EXISTS_RIGHT_TITLE"] = "hi ha una carretera a la dreta";
459
+ Blockly.Msg["TRAFFIC_LIGHT_RED_TITLE"] = "semàfor vermell";
460
+ Blockly.Msg["TRAFFIC_LIGHT_GREEN_TITLE"] = "semàfor verd";
461
+ Blockly.Msg["DEAD_END_TITLE"] = "és carrer sense sortida";
462
+ Blockly.Msg["AT_DESTINATION_TITLE"] = "a destí";
463
+ Blockly.Msg["COW_CROSSING_TITLE"] = "vaques";
464
+ Blockly.Msg["PIGEON_CROSSING_TITLE"] = "coloms";
465
+
466
+ Blockly.Msg["CALL_PROC_TITLE"] = "Crida";
467
+ Blockly.Msg["CALL_PROC_TOOLTIP"] = "Crida un procediment";
468
+ Blockly.Msg["DECLARE_PROC_TITLE"] = "Defineix";
469
+ Blockly.Msg["DECLARE_PROC_SUBTITLE"] = "Fes";
470
+ Blockly.Msg["DECLARE_PROC_TOOLTIP"] = "Declara el procediment";
471
+ Blockly.Msg["CONTROLS_REPEAT_WHILE_TITLE"] = "repeteix mentre";
472
+ Blockly.Msg["CONTROLS_REPEAT_WHILE_SUBTITLE"] = "fes";
473
+ Blockly.Msg["CONTROLS_REPEAT_WHILE_TOOLTIP"] = "Mentre un valor és cert, executa unes instruccions";
474
+ Blockly.Msg["CONTROLS_REPEAT_UNTIL_TITLE"] = "repeteix fins que";
475
+ Blockly.Msg["CONTROLS_REPEAT_UNTIL_SUBTITLE"] = "fes";
476
+ Blockly.Msg["CONTROLS_REPEAT_UNTIL_TOOLTIP"] = "Fins que un valor sigui cert, executa unes instruccions";
477
+
478
+ Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Una variable";
479
+ Blockly.Msg["VARIABLES_SET_TITLE"] = "estableix";
480
+ Blockly.Msg["VARIABLES_SET_SUBTITLE"] = "a";
481
+ Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Estableix el valor d’una variable";
482
+ Blockly.Msg["VARIABLES_NUMERIC_SET_TOOLTIP"] = "Estableix un valor numèric per a una variable";
483
+ Blockly.Msg["VARIABLES_INCREMENT_TITLE"] = "incrementa";
484
+ Blockly.Msg["VARIABLES_INCREMENT_SUBTITLE"] = "en";
485
+ Blockly.Msg["VARIABLES_INCREMENT_TOOLTIP"] = "Incrementa el valor d’una variable";
486
+ Blockly.Msg["NUMBER_TITLE"] = "Nombre";
487
+ Blockly.Msg["NUMBER_TOOLTIP"] = "Un nombre";
@@ -433,4 +433,55 @@ Blockly.Msg["VARIABLES_HUE"] = "330";
433
433
  Blockly.Msg["TEXTS_HUE"] = "160";
434
434
  Blockly.Msg["PROCEDURES_HUE"] = "290";
435
435
  Blockly.Msg["COLOUR_HUE"] = "20";
436
- Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310";
436
+ Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310";
437
+
438
+ Blockly.Msg["START_TITLE"] = "Start";
439
+ Blockly.Msg["START_TOOLTIP"] = "The beginning of the program"
440
+ Blockly.Msg["MOVE_FORWARDS_TITLE"] = "move forwards";
441
+ Blockly.Msg["MOVE_FORWARDS_TOOLTIP"] = "Move the van forwards";
442
+ Blockly.Msg["TURN_LEFT_TITLE"] = "turn left";
443
+ Blockly.Msg["TURN_LEFT_TOOLTIP"] = "Turn the van left";
444
+ Blockly.Msg["TURN_RIGHT_TITLE"] = "turn right";
445
+ Blockly.Msg["TURN_RIGHT_TOOLTIP"] = "Turn the van right";
446
+ Blockly.Msg["TURN_AROUND_TITLE"] = "turn around";
447
+ Blockly.Msg["TURN_AROUND_TOOLTIP"] = "Turn the van around";
448
+
449
+ Blockly.Msg["WAIT_TITLE"] = "wait";
450
+ Blockly.Msg["WAIT_TOOLTIP"] = "Keep the van stationary";
451
+ Blockly.Msg["DELIVER_TITLE"] = "deliver";
452
+ Blockly.Msg["DELIVER_TOOLTIP"] = "Deliver the goods from the van";
453
+ Blockly.Msg["SOUND_HORN_TITLE"] = "sound horn";
454
+ Blockly.Msg["SOUND_HORN_TOOLTIP"] = "Sound the horn to scare away the cows";
455
+
456
+ Blockly.Msg["ROAD_EXISTS_FORWARD_TITLE"] = "road exists forward";
457
+ Blockly.Msg["ROAD_EXISTS_LEFT_TITLE"] = "road exists left";
458
+ Blockly.Msg["ROAD_EXISTS_RIGHT_TITLE"] = "road exists right";
459
+ Blockly.Msg["TRAFFIC_LIGHT_RED_TITLE"] = "traffic light red";
460
+ Blockly.Msg["TRAFFIC_LIGHT_GREEN_TITLE"] = "traffic light green";
461
+ Blockly.Msg["DEAD_END_TITLE"] = "is dead end";
462
+ Blockly.Msg["AT_DESTINATION_TITLE"] = "at destination";
463
+ Blockly.Msg["COW_CROSSING_TITLE"] = "cows";
464
+ Blockly.Msg["PIGEON_CROSSING_TITLE"] = "pigeons";
465
+
466
+ Blockly.Msg["CALL_PROC_TITLE"] = "Call";
467
+ Blockly.Msg["CALL_PROC_TOOLTIP"] = "Calls a procedure";
468
+ Blockly.Msg["DECLARE_PROC_TITLE"] = "Define";
469
+ Blockly.Msg["DECLARE_PROC_SUBTITLE"] = "Do";
470
+ Blockly.Msg["DECLARE_PROC_TOOLTIP"] = "Declares a procedure";
471
+ Blockly.Msg["CONTROLS_REPEAT_WHILE_TITLE"] = "repeat while";
472
+ Blockly.Msg["CONTROLS_REPEAT_WHILE_SUBTITLE"] = "do";
473
+ Blockly.Msg["CONTROLS_REPEAT_WHILE_TOOLTIP"] = "While a value is true, do some statements";
474
+ Blockly.Msg["CONTROLS_REPEAT_UNTIL_TITLE"] = "repeat until";
475
+ Blockly.Msg["CONTROLS_REPEAT_UNTIL_SUBTITLE"] = "do";
476
+ Blockly.Msg["CONTROLS_REPEAT_UNTIL_TOOLTIP"] = "Until a value is true, do some statements";
477
+
478
+ Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "A variable";
479
+ Blockly.Msg["VARIABLES_SET_TITLE"] = "set";
480
+ Blockly.Msg["VARIABLES_SET_SUBTITLE"] = "to";
481
+ Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Set a variable";
482
+ Blockly.Msg["VARIABLES_NUMERIC_SET_TOOLTIP"] = "Set a variable to a number";
483
+ Blockly.Msg["VARIABLES_INCREMENT_TITLE"] = "increment";
484
+ Blockly.Msg["VARIABLES_INCREMENT_SUBTITLE"] = "by";
485
+ Blockly.Msg["VARIABLES_INCREMENT_TOOLTIP"] = "Increment a variable";
486
+ Blockly.Msg["NUMBER_TITLE"] = "Number";
487
+ Blockly.Msg["NUMBER_TOOLTIP"] = "A number";
@@ -433,4 +433,55 @@ Blockly.Msg["VARIABLES_HUE"] = "330";
433
433
  Blockly.Msg["TEXTS_HUE"] = "160";
434
434
  Blockly.Msg["PROCEDURES_HUE"] = "290";
435
435
  Blockly.Msg["COLOUR_HUE"] = "20";
436
- Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310";
436
+ Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310";
437
+
438
+ Blockly.Msg["START_TITLE"] = "Start";
439
+ Blockly.Msg["START_TOOLTIP"] = "The beginning of the program"
440
+ Blockly.Msg["MOVE_FORWARDS_TITLE"] = "move forwards";
441
+ Blockly.Msg["MOVE_FORWARDS_TOOLTIP"] = "Move the van forwards";
442
+ Blockly.Msg["TURN_LEFT_TITLE"] = "turn left";
443
+ Blockly.Msg["TURN_LEFT_TOOLTIP"] = "Turn the van left";
444
+ Blockly.Msg["TURN_RIGHT_TITLE"] = "turn right";
445
+ Blockly.Msg["TURN_RIGHT_TOOLTIP"] = "Turn the van right";
446
+ Blockly.Msg["TURN_AROUND_TITLE"] = "turn around";
447
+ Blockly.Msg["TURN_AROUND_TOOLTIP"] = "Turn the van around";
448
+
449
+ Blockly.Msg["WAIT_TITLE"] = "wait";
450
+ Blockly.Msg["WAIT_TOOLTIP"] = "Keep the van stationary";
451
+ Blockly.Msg["DELIVER_TITLE"] = "deliver";
452
+ Blockly.Msg["DELIVER_TOOLTIP"] = "Deliver the goods from the van";
453
+ Blockly.Msg["SOUND_HORN_TITLE"] = "sound horn";
454
+ Blockly.Msg["SOUND_HORN_TOOLTIP"] = "Sound the horn to scare away the cows";
455
+
456
+ Blockly.Msg["ROAD_EXISTS_FORWARD_TITLE"] = "road exists forward";
457
+ Blockly.Msg["ROAD_EXISTS_LEFT_TITLE"] = "road exists left";
458
+ Blockly.Msg["ROAD_EXISTS_RIGHT_TITLE"] = "road exists right";
459
+ Blockly.Msg["TRAFFIC_LIGHT_RED_TITLE"] = "traffic light red";
460
+ Blockly.Msg["TRAFFIC_LIGHT_GREEN_TITLE"] = "traffic light green";
461
+ Blockly.Msg["DEAD_END_TITLE"] = "is dead end";
462
+ Blockly.Msg["AT_DESTINATION_TITLE"] = "at destination";
463
+ Blockly.Msg["COW_CROSSING_TITLE"] = "cows";
464
+ Blockly.Msg["PIGEON_CROSSING_TITLE"] = "pigeons";
465
+
466
+ Blockly.Msg["CALL_PROC_TITLE"] = "Call";
467
+ Blockly.Msg["CALL_PROC_TOOLTIP"] = "Calls a procedure";
468
+ Blockly.Msg["DECLARE_PROC_TITLE"] = "Define";
469
+ Blockly.Msg["DECLARE_PROC_SUBTITLE"] = "Do";
470
+ Blockly.Msg["DECLARE_PROC_TOOLTIP"] = "Declares a procedure";
471
+ Blockly.Msg["CONTROLS_REPEAT_WHILE_TITLE"] = "repeat while";
472
+ Blockly.Msg["CONTROLS_REPEAT_WHILE_SUBTITLE"] = "do";
473
+ Blockly.Msg["CONTROLS_REPEAT_WHILE_TOOLTIP"] = "While a value is true, do some statements";
474
+ Blockly.Msg["CONTROLS_REPEAT_UNTIL_TITLE"] = "repeat until";
475
+ Blockly.Msg["CONTROLS_REPEAT_UNTIL_SUBTITLE"] = "do";
476
+ Blockly.Msg["CONTROLS_REPEAT_UNTIL_TOOLTIP"] = "Until a value is true, do some statements";
477
+
478
+ Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "A variable";
479
+ Blockly.Msg["VARIABLES_SET_TITLE"] = "set";
480
+ Blockly.Msg["VARIABLES_SET_SUBTITLE"] = "to";
481
+ Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Set a variable";
482
+ Blockly.Msg["VARIABLES_NUMERIC_SET_TOOLTIP"] = "Set a variable to a number";
483
+ Blockly.Msg["VARIABLES_INCREMENT_TITLE"] = "increment";
484
+ Blockly.Msg["VARIABLES_INCREMENT_SUBTITLE"] = "by";
485
+ Blockly.Msg["VARIABLES_INCREMENT_TOOLTIP"] = "Increment a variable";
486
+ Blockly.Msg["NUMBER_TITLE"] = "Number";
487
+ Blockly.Msg["NUMBER_TOOLTIP"] = "A number";
@@ -433,4 +433,55 @@ Blockly.Msg["VARIABLES_HUE"] = "330";
433
433
  Blockly.Msg["TEXTS_HUE"] = "160";
434
434
  Blockly.Msg["PROCEDURES_HUE"] = "290";
435
435
  Blockly.Msg["COLOUR_HUE"] = "20";
436
- Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310";
436
+ Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310";
437
+
438
+ Blockly.Msg["START_TITLE"] = "Comenzar";
439
+ Blockly.Msg["START_TOOLTIP"] = "El comienzo del programa"
440
+ Blockly.Msg["MOVE_FORWARDS_TITLE"] = "avanzar";
441
+ Blockly.Msg["MOVE_FORWARDS_TOOLTIP"] = "Mover la furgoneta hacia adelante";
442
+ Blockly.Msg["TURN_LEFT_TITLE"] = "girar a la izquierda";
443
+ Blockly.Msg["TURN_LEFT_TOOLTIP"] = "Girar la furgoneta a la izquierda";
444
+ Blockly.Msg["TURN_RIGHT_TITLE"] = "girar a la derecha";
445
+ Blockly.Msg["TURN_RIGHT_TOOLTIP"] = "Girar la furgoneta a la derecha";
446
+ Blockly.Msg["TURN_AROUND_TITLE"] = "dar la vuelta";
447
+ Blockly.Msg["TURN_AROUND_TOOLTIP"] = "Dar media vuelta con la furgoneta";
448
+
449
+ Blockly.Msg["WAIT_TITLE"] = "esperar";
450
+ Blockly.Msg["WAIT_TOOLTIP"] = "Mantener la furgoneta estacionaria";
451
+ Blockly.Msg["DELIVER_TITLE"] = "entregar";
452
+ Blockly.Msg["DELIVER_TOOLTIP"] = "Entregar la mercancía de la furgoneta";
453
+ Blockly.Msg["SOUND_HORN_TITLE"] = "tocar el claxon";
454
+ Blockly.Msg["SOUND_HORN_TOOLTIP"] = "Tocar el claxon para asustar a las vacas";
455
+
456
+ Blockly.Msg["ROAD_EXISTS_FORWARD_TITLE"] = "hay una carretera hacia delante";
457
+ Blockly.Msg["ROAD_EXISTS_LEFT_TITLE"] = "hay una carretera hacia la izquierda";
458
+ Blockly.Msg["ROAD_EXISTS_RIGHT_TITLE"] = "hay una carretera hacia la derecha";
459
+ Blockly.Msg["TRAFFIC_LIGHT_RED_TITLE"] = "semáforo en rojo";
460
+ Blockly.Msg["TRAFFIC_LIGHT_GREEN_TITLE"] = "semáforo en verde";
461
+ Blockly.Msg["DEAD_END_TITLE"] = "es un callejón sin salida";
462
+ Blockly.Msg["AT_DESTINATION_TITLE"] = "en destino";
463
+ Blockly.Msg["COW_CROSSING_TITLE"] = "vacas";
464
+ Blockly.Msg["PIGEON_CROSSING_TITLE"] = "palomas";
465
+
466
+ Blockly.Msg["CALL_PROC_TITLE"] = "Llamar";
467
+ Blockly.Msg["CALL_PROC_TOOLTIP"] = "Llamar a una función";
468
+ Blockly.Msg["DECLARE_PROC_TITLE"] = "Definir";
469
+ Blockly.Msg["DECLARE_PROC_SUBTITLE"] = "Hacer";
470
+ Blockly.Msg["DECLARE_PROC_TOOLTIP"] = "Declara una función";
471
+ Blockly.Msg["CONTROLS_REPEAT_WHILE_TITLE"] = "repetir mientras";
472
+ Blockly.Msg["CONTROLS_REPEAT_WHILE_SUBTITLE"] = "hacer";
473
+ Blockly.Msg["CONTROLS_REPEAT_WHILE_TOOLTIP"] = "Mientras un valor sea verdadero, realizar algunas instrucciones";
474
+ Blockly.Msg["CONTROLS_REPEAT_UNTIL_TITLE"] = "repetir hasta";
475
+ Blockly.Msg["CONTROLS_REPEAT_UNTIL_SUBTITLE"] = "hacer";
476
+ Blockly.Msg["CONTROLS_REPEAT_UNTIL_TOOLTIP"] = "Hasta que un valor sea verdadero, realizar algunas instrucciones";
477
+
478
+ Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Una variable";
479
+ Blockly.Msg["VARIABLES_SET_TITLE"] = "asignar";
480
+ Blockly.Msg["VARIABLES_SET_SUBTITLE"] = "a";
481
+ Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Asignar una variable";
482
+ Blockly.Msg["VARIABLES_NUMERIC_SET_TOOLTIP"] = "Asignar una variable a un número";
483
+ Blockly.Msg["VARIABLES_INCREMENT_TITLE"] = "incrementar";
484
+ Blockly.Msg["VARIABLES_INCREMENT_SUBTITLE"] = "en";
485
+ Blockly.Msg["VARIABLES_INCREMENT_TOOLTIP"] = "Incrementar una variable";
486
+ Blockly.Msg["NUMBER_TITLE"] = "Número";
487
+ Blockly.Msg["NUMBER_TOOLTIP"] = "Un número";
@@ -433,4 +433,55 @@ Blockly.Msg["VARIABLES_HUE"] = "330";
433
433
  Blockly.Msg["TEXTS_HUE"] = "160";
434
434
  Blockly.Msg["PROCEDURES_HUE"] = "290";
435
435
  Blockly.Msg["COLOUR_HUE"] = "20";
436
- Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310";
436
+ Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310";
437
+
438
+ Blockly.Msg["START_TITLE"] = "Départ";
439
+ Blockly.Msg["START_TOOLTIP"] = "Le début du programme"
440
+ Blockly.Msg["MOVE_FORWARDS_TITLE"] = "avancer";
441
+ Blockly.Msg["MOVE_FORWARDS_TOOLTIP"] = "Faire avancer le camion";
442
+ Blockly.Msg["TURN_LEFT_TITLE"] = "tourner à gauche";
443
+ Blockly.Msg["TURN_LEFT_TOOLTIP"] = "Faire tourner le camion à gauche";
444
+ Blockly.Msg["TURN_RIGHT_TITLE"] = "tourner à droite";
445
+ Blockly.Msg["TURN_RIGHT_TOOLTIP"] = "Faire tourner le camion à droite";
446
+ Blockly.Msg["TURN_AROUND_TITLE"] = "faire demi-tour";
447
+ Blockly.Msg["TURN_AROUND_TOOLTIP"] = "Faire demi-tour avec le camion";
448
+
449
+ Blockly.Msg["WAIT_TITLE"] = "attendre";
450
+ Blockly.Msg["WAIT_TOOLTIP"] = "Faire arrêter le camion pour attendre";
451
+ Blockly.Msg["DELIVER_TITLE"] = "livrer";
452
+ Blockly.Msg["DELIVER_TOOLTIP"] = "Livrer la commande du camion";
453
+ Blockly.Msg["SOUND_HORN_TITLE"] = "klaxonner";
454
+ Blockly.Msg["SOUND_HORN_TOOLTIP"] = "Klaxonner pour effrayer les vaches";
455
+
456
+ Blockly.Msg["ROAD_EXISTS_FORWARD_TITLE"] = "la route existe en face";
457
+ Blockly.Msg["ROAD_EXISTS_LEFT_TITLE"] = "la route existe à gauche";
458
+ Blockly.Msg["ROAD_EXISTS_RIGHT_TITLE"] = "la route existe à droite";
459
+ Blockly.Msg["TRAFFIC_LIGHT_RED_TITLE"] = "feu rouge";
460
+ Blockly.Msg["TRAFFIC_LIGHT_GREEN_TITLE"] = "feu vert";
461
+ Blockly.Msg["DEAD_END_TITLE"] = "cul-de-sac";
462
+ Blockly.Msg["AT_DESTINATION_TITLE"] = "arrivé à destination";
463
+ Blockly.Msg["COW_CROSSING_TITLE"] = "vaches";
464
+ Blockly.Msg["PIGEON_CROSSING_TITLE"] = "pigeons";
465
+
466
+ Blockly.Msg["CALL_PROC_TITLE"] = "Appeler";
467
+ Blockly.Msg["CALL_PROC_TOOLTIP"] = "Appeler une fonction";
468
+ Blockly.Msg["DECLARE_PROC_TITLE"] = "Définir";
469
+ Blockly.Msg["DECLARE_PROC_SUBTITLE"] = "Faire";
470
+ Blockly.Msg["DECLARE_PROC_TOOLTIP"] = "Déclarer une fonction";
471
+ Blockly.Msg["CONTROLS_REPEAT_WHILE_TITLE"] = "répéter tant que";
472
+ Blockly.Msg["CONTROLS_REPEAT_WHILE_SUBTITLE"] = "faire";
473
+ Blockly.Msg["CONTROLS_REPEAT_WHILE_TOOLTIP"] = "Tant qu’une valeur est vraie, faire des instructions";
474
+ Blockly.Msg["CONTROLS_REPEAT_UNTIL_TITLE"] = "répéter jusqu’à ce que";
475
+ Blockly.Msg["CONTROLS_REPEAT_UNTIL_SUBTITLE"] = "faire";
476
+ Blockly.Msg["CONTROLS_REPEAT_UNTIL_TOOLTIP"] = "Jusqu’à ce qu’une valeur soit vraie, faire des instructions";
477
+
478
+ Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Une variable";
479
+ Blockly.Msg["VARIABLES_SET_TITLE"] = "définir";
480
+ Blockly.Msg["VARIABLES_SET_SUBTITLE"] = "à";
481
+ Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Définir une variable";
482
+ Blockly.Msg["VARIABLES_NUMERIC_SET_TOOLTIP"] = "Définir une variable à un nombre";
483
+ Blockly.Msg["VARIABLES_INCREMENT_TITLE"] = "incrémenter";
484
+ Blockly.Msg["VARIABLES_INCREMENT_SUBTITLE"] = "de";
485
+ Blockly.Msg["VARIABLES_INCREMENT_TOOLTIP"] = "Incrémenter une variable";
486
+ Blockly.Msg["NUMBER_TITLE"] = "nombre";
487
+ Blockly.Msg["NUMBER_TOOLTIP"] = "Un nombre";
@@ -433,4 +433,55 @@ Blockly.Msg["VARIABLES_HUE"] = "330";
433
433
  Blockly.Msg["TEXTS_HUE"] = "160";
434
434
  Blockly.Msg["PROCEDURES_HUE"] = "290";
435
435
  Blockly.Msg["COLOUR_HUE"] = "20";
436
- Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310";
436
+ Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310";
437
+
438
+ Blockly.Msg["START_TITLE"] = "शुरू";
439
+ Blockly.Msg["START_TOOLTIP"] = "कार्यक्रम की शुरुआत";
440
+ Blockly.Msg["MOVE_FORWARDS_TITLE"] = "आगे बढ़ें";
441
+ Blockly.Msg["MOVE_FORWARDS_TOOLTIP"] = "वैन को आगे बढ़ाएं";
442
+ Blockly.Msg["TURN_LEFT_TITLE"] = "बाएँ मुड़ें";
443
+ Blockly.Msg["TURN_LEFT_TOOLTIP"] = "वैन को बाएँ मोड़ें";
444
+ Blockly.Msg["TURN_RIGHT_TITLE"] = "दाएं मुड़ें";
445
+ Blockly.Msg["TURN_RIGHT_TOOLTIP"] = "वैन को दाएं मोड़ें)";
446
+ Blockly.Msg["TURN_AROUND_TITLE"] = "मुड़ो";
447
+ Blockly.Msg["TURN_AROUND_TOOLTIP"] = "वैन को घुमाओ";
448
+
449
+ Blockly.Msg["WAIT_TITLE"] = "इंतज़ार";
450
+ Blockly.Msg["WAIT_TOOLTIP"] = "वैन को स्थिर रखें";
451
+ Blockly.Msg["DELIVER_TITLE"] = "बाँटना";
452
+ Blockly.Msg["DELIVER_TOOLTIP"] = "वैन से सामान पहुंचाएं";
453
+ Blockly.Msg["SOUND_HORN_TITLE"] = "हॉर्न बजाओ";
454
+ Blockly.Msg["SOUND_HORN_TOOLTIP"] = "गायों को डराने के लिए हॉर्न बजाएं";
455
+
456
+ Blockly.Msg["ROAD_EXISTS_FORWARD_TITLE"] = "सड़क आगे मौजूद है";
457
+ Blockly.Msg["ROAD_EXISTS_LEFT_TITLE"] = "सड़क बाएँ मौजूद है";
458
+ Blockly.Msg["ROAD_EXISTS_RIGHT_TITLE"] = "सड़क दाएँ मौजूद है";
459
+ Blockly.Msg["TRAFFIC_LIGHT_RED_TITLE"] = "ट्रैफिक लाइट लाल";
460
+ Blockly.Msg["TRAFFIC_LIGHT_GREEN_TITLE"] = "ट्रैफिक लाइट हरा";
461
+ Blockly.Msg["DEAD_END_TITLE"] = "आगे का रास्ता बंद है";
462
+ Blockly.Msg["AT_DESTINATION_TITLE"] = "मंजिल /गंतव्य पर";
463
+ Blockly.Msg["COW_CROSSING_TITLE"] = "गायों";
464
+ Blockly.Msg["PIGEON_CROSSING_TITLE"] = "कबूतरों";
465
+
466
+ Blockly.Msg["CALL_PROC_TITLE"] = "पुकारना";
467
+ Blockly.Msg["CALL_PROC_TOOLTIP"] = "एक प्रक्रिया बुलाना";
468
+ Blockly.Msg["DECLARE_PROC_TITLE"] = "परिभाषित करना";
469
+ Blockly.Msg["DECLARE_PROC_SUBTITLE"] = "करो";
470
+ Blockly.Msg["DECLARE_PROC_TOOLTIP"] = "प्रक्रिया की घोषणा करता है";
471
+ Blockly.Msg["CONTROLS_REPEAT_WHILE_TITLE"] = "दोहराएँ जबकि";
472
+ Blockly.Msg["CONTROLS_REPEAT_WHILE_SUBTITLE"] = "करो";
473
+ Blockly.Msg["CONTROLS_REPEAT_WHILE_TOOLTIP"] = "जबकि कोई मान सत्य है, कुछ कथन करें";
474
+ Blockly.Msg["CONTROLS_REPEAT_UNTIL_TITLE"] = "जब तक";
475
+ Blockly.Msg["CONTROLS_REPEAT_UNTIL_SUBTITLE"] = "न करें तब तक दोहराएँ";
476
+ Blockly.Msg["CONTROLS_REPEAT_UNTIL_TOOLTIP"] = "जब तक कोई मान सत्य न हो, कुछ कथन करें";
477
+
478
+ Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "एक परिवर्तनीय";
479
+ Blockly.Msg["VARIABLES_SET_TITLE"] = "तय करना";
480
+ Blockly.Msg["VARIABLES_SET_SUBTITLE"] = "को";
481
+ Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "एक परिवर्तनीय तय करना";
482
+ Blockly.Msg["VARIABLES_NUMERIC_SET_TOOLTIP"] = "एक परिवर्तनीय को एक संख्या पर तय करें";
483
+ Blockly.Msg["VARIABLES_INCREMENT_TITLE"] = "बढ़ाई";
484
+ Blockly.Msg["VARIABLES_INCREMENT_SUBTITLE"] = "द्वारा";
485
+ Blockly.Msg["VARIABLES_INCREMENT_TOOLTIP"] = "एक वेरिएबल बढ़ाएँ";
486
+ Blockly.Msg["NUMBER_TITLE"] = "संख्या";
487
+ Blockly.Msg["NUMBER_TOOLTIP"] = "एक संख्या";