@windward/integrations 0.21.0 → 0.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (150) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/components/Content/Blocks/ActionPanel/TransformActivity.vue +386 -0
  3. package/components/Content/Blocks/ActionPanel/TransformBlock.vue +402 -59
  4. package/components/Content/Blocks/ExternalIntegration/LtiConsumer.vue +22 -2
  5. package/components/ExternalIntegration/Driver/Lti1p1/ManageConsumer.vue +8 -2
  6. package/components/ExternalIntegration/Driver/Lti1p1/ManageProvider.vue +4 -0
  7. package/components/ExternalIntegration/Driver/Lti1p3/ManageConsumer.vue +2 -2
  8. package/components/Integration/JobTable.vue +35 -3
  9. package/components/Integration/TranslateCourse.vue +574 -0
  10. package/components/Settings/ExternalIntegration/LtiConsumerSettings.vue +27 -0
  11. package/i18n/ar-SA/components/ai_agent/chat.ts +20 -0
  12. package/i18n/ar-SA/components/ai_agent/index.ts +5 -0
  13. package/i18n/ar-SA/components/content/blocks/action_panel/index.ts +5 -0
  14. package/i18n/ar-SA/components/content/blocks/action_panel/transform_block.ts +9 -0
  15. package/i18n/ar-SA/components/content/blocks/external_integration/index.ts +5 -0
  16. package/i18n/ar-SA/components/content/blocks/external_integration/lti_consumer.ts +17 -0
  17. package/i18n/ar-SA/components/content/blocks/index.ts +7 -0
  18. package/i18n/ar-SA/components/content/index.ts +5 -0
  19. package/i18n/ar-SA/components/external_integration/driver/lti1p1.ts +17 -0
  20. package/i18n/ar-SA/components/external_integration/driver/lti1p3.ts +25 -0
  21. package/i18n/ar-SA/components/external_integration/driver/scorm.ts +14 -0
  22. package/i18n/ar-SA/components/external_integration/index.ts +36 -0
  23. package/i18n/ar-SA/components/external_integration/provider_target.ts +9 -0
  24. package/i18n/ar-SA/components/file_import/index.ts +5 -0
  25. package/i18n/ar-SA/components/file_import/resourcespace.ts +4 -0
  26. package/i18n/ar-SA/components/index.ts +19 -0
  27. package/i18n/ar-SA/components/integration/driver.ts +67 -0
  28. package/i18n/ar-SA/components/integration/index.ts +9 -0
  29. package/i18n/ar-SA/components/integration/job.ts +25 -0
  30. package/i18n/ar-SA/components/integration/job_log.ts +24 -0
  31. package/i18n/ar-SA/components/llm/blooms.ts +15 -0
  32. package/i18n/ar-SA/components/llm/content_selector.ts +3 -0
  33. package/i18n/ar-SA/components/llm/generate_content/fake_text_stream.ts +62 -0
  34. package/i18n/ar-SA/components/llm/generate_content/generate_questions.ts +92 -0
  35. package/i18n/ar-SA/components/llm/generate_content/index.ts +8 -0
  36. package/i18n/ar-SA/components/llm/index.ts +10 -0
  37. package/i18n/ar-SA/components/navigation/index.ts +5 -0
  38. package/i18n/ar-SA/components/navigation/integrations.ts +9 -0
  39. package/i18n/ar-SA/components/settings/external_integration/index.ts +5 -0
  40. package/i18n/ar-SA/components/settings/external_integration/lti_consumer.ts +10 -0
  41. package/i18n/ar-SA/components/settings/index.ts +5 -0
  42. package/i18n/ar-SA/index.ts +16 -0
  43. package/i18n/ar-SA/modules/index.ts +5 -0
  44. package/i18n/ar-SA/pages/admin/index.ts +5 -0
  45. package/i18n/ar-SA/pages/admin/translateCourse.ts +68 -0
  46. package/i18n/ar-SA/pages/course/external_integration/index.ts +6 -0
  47. package/i18n/ar-SA/pages/course/index.ts +5 -0
  48. package/i18n/ar-SA/pages/importContent.ts +3 -0
  49. package/i18n/ar-SA/pages/importCourse.ts +13 -0
  50. package/i18n/ar-SA/pages/index.ts +15 -0
  51. package/i18n/ar-SA/pages/login/index.ts +9 -0
  52. package/i18n/ar-SA/pages/login/lti.ts +23 -0
  53. package/i18n/ar-SA/pages/login/saml.ts +7 -0
  54. package/i18n/ar-SA/pages/login/scorm.ts +28 -0
  55. package/i18n/ar-SA/pages/vendor.ts +11 -0
  56. package/i18n/ar-SA/shared/content_blocks.ts +9 -0
  57. package/i18n/ar-SA/shared/error.ts +9 -0
  58. package/i18n/ar-SA/shared/file.ts +5 -0
  59. package/i18n/ar-SA/shared/index.ts +17 -0
  60. package/i18n/ar-SA/shared/menu.ts +3 -0
  61. package/i18n/ar-SA/shared/notification.ts +14 -0
  62. package/i18n/ar-SA/shared/permission.ts +52 -0
  63. package/i18n/ar-SA/shared/settings.ts +9 -0
  64. package/i18n/en-US/components/content/blocks/action_panel/index.ts +2 -0
  65. package/i18n/en-US/components/content/blocks/action_panel/transform_activity.ts +8 -0
  66. package/i18n/en-US/components/content/blocks/action_panel/transform_block.ts +1 -1
  67. package/i18n/en-US/components/content/blocks/external_integration/lti_consumer.ts +1 -0
  68. package/i18n/en-US/components/integration/job.ts +2 -0
  69. package/i18n/en-US/components/navigation/integrations.ts +1 -0
  70. package/i18n/en-US/components/settings/external_integration/lti_consumer.ts +2 -0
  71. package/i18n/en-US/pages/admin/index.ts +5 -0
  72. package/i18n/en-US/pages/admin/translateCourse.ts +68 -0
  73. package/i18n/en-US/pages/index.ts +2 -0
  74. package/i18n/es-ES/components/content/blocks/action_panel/index.ts +2 -0
  75. package/i18n/es-ES/components/content/blocks/action_panel/transform_activity.ts +8 -0
  76. package/i18n/es-ES/components/content/blocks/action_panel/transform_block.ts +1 -1
  77. package/i18n/es-ES/components/content/blocks/external_integration/lti_consumer.ts +8 -7
  78. package/i18n/es-ES/components/integration/job.ts +2 -0
  79. package/i18n/es-ES/components/navigation/integrations.ts +1 -0
  80. package/i18n/es-ES/components/settings/external_integration/lti_consumer.ts +3 -0
  81. package/i18n/es-ES/pages/admin/index.ts +5 -0
  82. package/i18n/es-ES/pages/admin/translateCourse.ts +68 -0
  83. package/i18n/es-ES/pages/index.ts +2 -0
  84. package/i18n/fr-FR/components/ai_agent/chat.ts +20 -0
  85. package/i18n/fr-FR/components/ai_agent/index.ts +5 -0
  86. package/i18n/fr-FR/components/content/blocks/action_panel/index.ts +5 -0
  87. package/i18n/fr-FR/components/content/blocks/action_panel/transform_block.ts +9 -0
  88. package/i18n/fr-FR/components/content/blocks/external_integration/index.ts +5 -0
  89. package/i18n/fr-FR/components/content/blocks/external_integration/lti_consumer.ts +17 -0
  90. package/i18n/fr-FR/components/content/blocks/index.ts +7 -0
  91. package/i18n/fr-FR/components/content/index.ts +5 -0
  92. package/i18n/fr-FR/components/external_integration/driver/lti1p1.ts +17 -0
  93. package/i18n/fr-FR/components/external_integration/driver/lti1p3.ts +25 -0
  94. package/i18n/fr-FR/components/external_integration/driver/scorm.ts +14 -0
  95. package/i18n/fr-FR/components/external_integration/index.ts +36 -0
  96. package/i18n/fr-FR/components/external_integration/provider_target.ts +9 -0
  97. package/i18n/fr-FR/components/file_import/index.ts +5 -0
  98. package/i18n/fr-FR/components/file_import/resourcespace.ts +4 -0
  99. package/i18n/fr-FR/components/index.ts +19 -0
  100. package/i18n/fr-FR/components/integration/driver.ts +67 -0
  101. package/i18n/fr-FR/components/integration/index.ts +9 -0
  102. package/i18n/fr-FR/components/integration/job.ts +25 -0
  103. package/i18n/fr-FR/components/integration/job_log.ts +24 -0
  104. package/i18n/fr-FR/components/llm/blooms.ts +15 -0
  105. package/i18n/fr-FR/components/llm/content_selector.ts +3 -0
  106. package/i18n/fr-FR/components/llm/generate_content/fake_text_stream.ts +62 -0
  107. package/i18n/fr-FR/components/llm/generate_content/generate_questions.ts +92 -0
  108. package/i18n/fr-FR/components/llm/generate_content/index.ts +8 -0
  109. package/i18n/fr-FR/components/llm/index.ts +10 -0
  110. package/i18n/fr-FR/components/navigation/index.ts +5 -0
  111. package/i18n/fr-FR/components/navigation/integrations.ts +9 -0
  112. package/i18n/fr-FR/components/settings/external_integration/index.ts +5 -0
  113. package/i18n/fr-FR/components/settings/external_integration/lti_consumer.ts +10 -0
  114. package/i18n/fr-FR/components/settings/index.ts +5 -0
  115. package/i18n/fr-FR/index.ts +16 -0
  116. package/i18n/fr-FR/modules/index.ts +5 -0
  117. package/i18n/fr-FR/pages/admin/index.ts +5 -0
  118. package/i18n/fr-FR/pages/admin/translateCourse.ts +68 -0
  119. package/i18n/fr-FR/pages/course/external_integration/index.ts +6 -0
  120. package/i18n/fr-FR/pages/course/index.ts +5 -0
  121. package/i18n/fr-FR/pages/importContent.ts +3 -0
  122. package/i18n/fr-FR/pages/importCourse.ts +13 -0
  123. package/i18n/fr-FR/pages/index.ts +15 -0
  124. package/i18n/fr-FR/pages/login/index.ts +9 -0
  125. package/i18n/fr-FR/pages/login/lti.ts +23 -0
  126. package/i18n/fr-FR/pages/login/saml.ts +7 -0
  127. package/i18n/fr-FR/pages/login/scorm.ts +28 -0
  128. package/i18n/fr-FR/pages/vendor.ts +11 -0
  129. package/i18n/fr-FR/shared/content_blocks.ts +9 -0
  130. package/i18n/fr-FR/shared/error.ts +9 -0
  131. package/i18n/fr-FR/shared/file.ts +5 -0
  132. package/i18n/fr-FR/shared/index.ts +17 -0
  133. package/i18n/fr-FR/shared/menu.ts +3 -0
  134. package/i18n/fr-FR/shared/notification.ts +14 -0
  135. package/i18n/fr-FR/shared/permission.ts +52 -0
  136. package/i18n/fr-FR/shared/settings.ts +9 -0
  137. package/i18n/index.ts +4 -0
  138. package/i18n/sv-SE/components/content/blocks/action_panel/index.ts +2 -0
  139. package/i18n/sv-SE/components/content/blocks/action_panel/transform_activity.ts +8 -0
  140. package/i18n/sv-SE/components/content/blocks/action_panel/transform_block.ts +1 -1
  141. package/i18n/sv-SE/components/content/blocks/external_integration/lti_consumer.ts +9 -8
  142. package/i18n/sv-SE/components/integration/job.ts +6 -4
  143. package/i18n/sv-SE/components/navigation/integrations.ts +1 -0
  144. package/i18n/sv-SE/components/settings/external_integration/lti_consumer.ts +3 -0
  145. package/i18n/sv-SE/pages/admin/index.ts +5 -0
  146. package/i18n/sv-SE/pages/admin/translateCourse.ts +68 -0
  147. package/i18n/sv-SE/pages/index.ts +2 -0
  148. package/package.json +1 -1
  149. package/pages/admin/translateCourse.vue +81 -0
  150. package/plugin.js +32 -0
@@ -0,0 +1,13 @@
1
+ export default {
2
+ title: 'Import Course',
3
+ recent_import_title: 'Recent Imports',
4
+ select_vendor: 'Select a vendor',
5
+ select_remote_organization: 'Select a remote organization',
6
+ select_remote_course: 'Select a remote course',
7
+ select_remote_content: 'Select individual content pages',
8
+ start_import: 'Start Import',
9
+ import_started: 'Import Started',
10
+ notify: 'Notify me when completed',
11
+ no_vendors:
12
+ 'There are no configured vendors. Please go back and configure an integration vendor',
13
+ }
@@ -0,0 +1,15 @@
1
+ import vendor from './vendor'
2
+ import importCourse from './importCourse'
3
+ import importContent from './importContent'
4
+ import login from './login'
5
+ import admin from './admin'
6
+ import course from './course'
7
+
8
+ export default {
9
+ vendor,
10
+ import_course: importCourse,
11
+ import_content: importContent,
12
+ login,
13
+ course,
14
+ admin,
15
+ }
@@ -0,0 +1,9 @@
1
+ import lti from './lti'
2
+ import saml from './saml'
3
+ import scorm from './scorm'
4
+
5
+ export default {
6
+ lti,
7
+ saml,
8
+ scorm,
9
+ }
@@ -0,0 +1,23 @@
1
+ export default {
2
+ lti_error: 'LTI Errors',
3
+ launch_error: 'LTI link failed to launch',
4
+ missing_title: 'The below fields are missing:',
5
+ error_title: 'The below errors occurred:',
6
+ error: {
7
+ invalid_launch_request: 'The launch request was invalid',
8
+ tool_disabled: 'This LTI package is disabled',
9
+ unknown: 'An unknown communication error occurred',
10
+ organization: 'Invalid organization',
11
+ tool: 'Invalid tool id',
12
+ tool_organization: 'This tool does not belong to this organization',
13
+ oauth: 'Invalid OAuth. Check your key and secret.',
14
+ },
15
+ missing: {
16
+ context_label:
17
+ 'The context label field `context_label` is missing or invalid.',
18
+ resource_link_title:
19
+ 'The resource link title `resource_link_title` is missing or invalid.',
20
+ lis_person_contact_email_primary:
21
+ 'The users email is missing and an anonymous email could not be generated.',
22
+ },
23
+ }
@@ -0,0 +1,7 @@
1
+ export default {
2
+ or: 'OR',
3
+ processing: 'Processing SSO login...',
4
+ success: 'Login successful! Redirecting...',
5
+ failed: 'SSO login failed',
6
+ failed_description: 'SSO login failed. Please try again.',
7
+ }
@@ -0,0 +1,28 @@
1
+ export default {
2
+ scorm_error: 'SCORM Errors',
3
+ email_required: 'Email required to continue',
4
+ launch_error: 'SCORM package failed to launch',
5
+ missing_title: 'The below fields are missing:',
6
+ error_title: 'The below errors occurred:',
7
+ enter_email:
8
+ 'Please enter your email address below to complete your account setup. Your email address will only be used to facilitate course-related communication, such as course content questions and technical support.',
9
+ privacy_policy: 'For more information, please see our privacy policy.',
10
+ error: {
11
+ missing_data:
12
+ 'Could not load due to missing data. Missing student id and/or student name.',
13
+ missing_api: 'Could not access the LMS SCORM API.',
14
+ invalid_launch_request: 'The launch request was invalid',
15
+ tool_disabled: 'This SCORM package is disabled',
16
+ unknown: 'An unknown communication error occurred',
17
+ organization: 'Invalid organization',
18
+ tool: 'Invalid tool id',
19
+ tool_organization: 'This tool does not belong to this organization',
20
+ oauth: 'Invalid OAuth. Check your key and secret.',
21
+ },
22
+ missing: {
23
+ course_id: 'The course id is missing or invalid.',
24
+ course_name: 'The course name is missing.',
25
+ callback: 'The SCORM callback is missing.',
26
+ state: 'The SCORM verification state is missing.',
27
+ },
28
+ }
@@ -0,0 +1,11 @@
1
+ export default {
2
+ title: 'Integrations',
3
+ vendor_disabled: 'This vendor is not available for integrations',
4
+ vendor_not_configured: 'This integration vendor is not configured',
5
+ organization_integration_disabled:
6
+ 'This organization integration is disabled',
7
+ vendor_name: 'Vendor Name',
8
+ configured: 'Integration Configured',
9
+ enabled: 'Integration Enabled',
10
+ manage: 'Manage Integration',
11
+ }
@@ -0,0 +1,9 @@
1
+ export default {
2
+ title: {
3
+ lti_consumer: 'LTI Link',
4
+ scorm_consumer: 'SCORM Package',
5
+ },
6
+ grouping: {
7
+ integrations: 'Integrations',
8
+ },
9
+ }
@@ -0,0 +1,9 @@
1
+ export default {
2
+ save_failed: 'Could not save this configuration',
3
+ load_remote_organization_failed: 'Could not load remote organizations',
4
+ load_remote_course_failed: 'Could not load remote courses',
5
+ load_remote_content_failed: 'Could not load remote content',
6
+ connect_success: 'Successfully connected',
7
+ connect_fail: 'Failed to connect',
8
+ unknown: 'An unknown error occurred when trying to connect',
9
+ }
@@ -0,0 +1,5 @@
1
+ export default {
2
+ import_resourcespace: 'Import from Resourcespace',
3
+ import_google_drive: 'Import from Google Drive',
4
+ import_dropbox: 'Import from Dropbox',
5
+ }
@@ -0,0 +1,17 @@
1
+ import contentBlocks from './content_blocks'
2
+ import settings from './settings'
3
+ import menu from './menu'
4
+ import notification from './notification'
5
+ import permission from './permission'
6
+ import file from './file'
7
+ import error from './error'
8
+
9
+ export default {
10
+ content_blocks: contentBlocks,
11
+ settings,
12
+ menu,
13
+ notification,
14
+ permission,
15
+ file,
16
+ error,
17
+ }
@@ -0,0 +1,3 @@
1
+ export default {
2
+ integrations: 'Integrations',
3
+ }
@@ -0,0 +1,14 @@
1
+ export default {
2
+ event: {
3
+ type_title: {
4
+ 'windward-integrations-import-complete':
5
+ '3rd Party Import Complete',
6
+ 'windward-integrations-import-fail': '3rd Party Import Failed',
7
+ },
8
+
9
+ type_description: {
10
+ 'windward-core-ask-the-expert': '3rd Party Import Complete',
11
+ 'windward-core-contact-support': '3rd Party Import Failed',
12
+ },
13
+ },
14
+ }
@@ -0,0 +1,52 @@
1
+ export default {
2
+ type_title: {
3
+ 'plugin->windward->integrations->vendor': 'Integration Vendors',
4
+ 'plugin->windward->integrations->jobs': 'Integration Jobs',
5
+ 'plugin->windward->integrations->organization->jobs':
6
+ 'Organization Integration Jobs',
7
+ 'plugin->windward->integrations->organization->integration':
8
+ 'Organization Integrations (Read Access Required to use enabled integrations)',
9
+ 'plugin->windward->integrations->organization':
10
+ 'Remote Organization Access',
11
+ 'plugin->windward->integrations->course': 'Remote Course Access',
12
+ 'plugin->windward->integrations->content': 'Remote Content Access',
13
+ 'plugin->windward->integrations->file':
14
+ 'File Integrations View / Manage Remote Files',
15
+ 'plugin->windward->integrations->course->file':
16
+ 'File Integrations Import to Course (Write Access Required to import)',
17
+ 'plugin->windward->integrations->course->externalIntegration':
18
+ 'External Integrations (LTI / SCORM / etc)',
19
+ 'plugin->windward->integrations->ai':
20
+ 'Global Generative AI permissions ',
21
+ 'plugin->windward->integrations->ai->integration':
22
+ 'AI Prompt changing permissions',
23
+ 'plugin->windward->integrations->organization->ai':
24
+ 'Generative AI Permissions in only the users current org',
25
+ 'plugin->windward->integrations->organization->aiAgentChat':
26
+ 'Allow Access To AI Agent',
27
+ 'plugin->windward->integrations->organization->course->ai':
28
+ 'Generative AI Permissions in only the users current org and course for content generation',
29
+ },
30
+
31
+ type_description: {
32
+ 'plugin->windward->integrations->vendor':
33
+ 'Access all integration vendors across the whole system',
34
+ 'plugin->windward->integrations->jobs': 'Access integration jobs',
35
+ 'plugin->windward->integrations->organization->jobs':
36
+ 'Access integration jobs in the current organization',
37
+ 'plugin->windward->integrations->organization->integration':
38
+ 'Access and manage integrations in the current organization',
39
+ 'plugin->windward->integrations->organization':
40
+ 'Access and manage remote organizations for imports',
41
+ 'plugin->windward->integrations->course':
42
+ 'Access and manage course imports',
43
+ 'plugin->windward->integrations->content':
44
+ 'Access and manage content imports',
45
+ 'plugin->windward->integrations->file':
46
+ 'Access and manage remote files via their integration. This permission lets you see the available files on remote services like Google Drive, Dropbox, ResourceSpace, etc.',
47
+ 'plugin->windward->integrations->course->file':
48
+ 'Import files from a remote file integration into a specific course',
49
+ 'plugin->windward->integrations->course->externalIntegration':
50
+ 'Access and manage external integrations such as LTI and SCORM',
51
+ },
52
+ }
@@ -0,0 +1,9 @@
1
+ export default {
2
+ title: {
3
+ block_builder: 'Block Builder',
4
+ ai_chat: 'AI Chat',
5
+ },
6
+ errors: {
7
+ input_limitations: 'Must be less than {0} characters.',
8
+ },
9
+ }
@@ -1,5 +1,7 @@
1
1
  import transformBlock from './transform_block'
2
+ import transformActivity from './transform_activity'
2
3
 
3
4
  export default {
4
5
  transform_block: transformBlock,
6
+ transform_activity: transformActivity,
5
7
  }
@@ -0,0 +1,8 @@
1
+ export default {
2
+ change_block_type: 'Change block type',
3
+ change_block_type_insufficient_items:
4
+ 'Change block type is available when the activity has at least two items.',
5
+ change_block_type_error:
6
+ 'Unable to change block type. Try again or edit manually.',
7
+ }
8
+
@@ -1,7 +1,7 @@
1
1
  export default {
2
2
  change_block_type: 'Change block type',
3
3
  change_block_type_insufficient_paragraphs:
4
- 'Change block type is available when the text has at least two paragraphs.',
4
+ 'Change block type is available when the text has at least four sentences.',
5
5
  change_block_type_insufficient_items:
6
6
  'Change block type is available when the block has at least two items.',
7
7
  change_block_type_error:
@@ -14,4 +14,5 @@ export default {
14
14
  missing_tool: 'The tool id {0} is missing',
15
15
  unknown_error: 'Something went wrong! Could not launch this link!',
16
16
  link_disabled: 'Link disabled',
17
+ try_again: 'Try again',
17
18
  }
@@ -4,6 +4,7 @@ export default {
4
4
  no_recent_jobs: 'No recent jobs',
5
5
  job_id: 'Job Id',
6
6
  vendor_name: 'Vendor Name',
7
+ vendor_name_translation: 'Translation',
7
8
  status: 'Status',
8
9
  progress: 'Progress',
9
10
  created: 'Created',
@@ -12,6 +13,7 @@ export default {
12
13
  job_details: {
13
14
  none: 'No details available',
14
15
  import_course: "Importing Course Id {0} '{1}'",
16
+ translate_course: 'Translating course {0} to locale {1}',
15
17
  },
16
18
  job_status: {
17
19
  not_started: 'Not Started',
@@ -2,6 +2,7 @@ export default {
2
2
  title: 'Integrations',
3
3
  manage_integrations: 'Manage Integration Vendors',
4
4
  import_course: 'Import Courses',
5
+ translate_course: 'Translate Course',
5
6
  import_content: 'Import Content & Files',
6
7
  manage_lti: 'Manage LTI Connections',
7
8
  manage_lti_links: 'Manage LTI Links',
@@ -7,4 +7,6 @@ export default {
7
7
  launch_type_modal: 'Modal',
8
8
  link_select: 'Select a Link:',
9
9
  link_disabled: 'Link Disabled',
10
+ no_links: 'No links available.',
11
+ create_link: 'Go to external integrations page to create links.',
10
12
  }
@@ -0,0 +1,5 @@
1
+ import translateCourse from './translateCourse'
2
+
3
+ export default {
4
+ translateCourse,
5
+ }
@@ -0,0 +1,68 @@
1
+ export default {
2
+ tab_title: 'Translate Course',
3
+ recent_jobs_tab_title: 'Recent Translation Jobs',
4
+ title: 'Translate Course',
5
+ subtitle: 'Select a source language, course, and target language to create a translated version',
6
+ source_language: 'Source Language',
7
+ course: 'Course',
8
+ target_language: 'Target Language',
9
+ send_email_notification: 'Send email notification on completion',
10
+ summary_title: 'Translation Summary',
11
+ source_course: 'Source Course:',
12
+ source_language_label: 'Source Language:',
13
+ target_language_label: 'Target Language:',
14
+ reset_button: 'Reset',
15
+ start_translation_button: 'Start Translation',
16
+ no_courses_found: 'No courses found in {0}',
17
+ no_owner: 'No owner',
18
+
19
+ // Success/Error messages
20
+ translation_queued: 'Translation job queued! Check Recent Translations for progress.',
21
+ translation_failed: 'Failed to start translation. Please try again.',
22
+ locale_load_failed: 'Failed to load available languages',
23
+ courses_load_failed: 'Failed to load courses for selected language',
24
+
25
+ // Retranslation Mode Dialog
26
+ retranslation_dialog: {
27
+ title: 'Translation Already Exists',
28
+ existing_translation_info: 'A translation for <strong>{0}</strong> already exists.',
29
+ choose_how_to_proceed: 'Choose how to proceed:',
30
+
31
+ // Incremental mode
32
+ incremental_title: '✓ Update Changed Blocks Only',
33
+ incremental_subtitle: '(Recommended)',
34
+ incremental_description: 'Only retranslate blocks that have been modified since the last translation.',
35
+ incremental_safe_note: 'Safe: Preserves existing course and translations.',
36
+
37
+ // Full mode
38
+ full_title: '⚠️ Delete & Retranslate Everything',
39
+ full_warning: 'Warning:',
40
+ full_description: 'This will permanently delete the existing translated course. Use only if you have made major restructuring changes.',
41
+
42
+ cancel_button: 'Cancel',
43
+ continue_button: 'Continue',
44
+ },
45
+
46
+ // Delete Confirmation Dialog
47
+ delete_confirm_dialog: {
48
+ title: 'Confirm Course Deletion',
49
+ cannot_undo: 'This action cannot be undone!',
50
+ about_to_delete: 'You are about to permanently delete the following course:',
51
+ course_id: 'Course ID:',
52
+ will_delete_title: 'This will delete:',
53
+ will_delete_content: 'All course content and blocks',
54
+ will_delete_assessments: 'All assessments and questions',
55
+ will_delete_files: 'File assets and media',
56
+ will_delete_progress: 'User progress and state data',
57
+ are_you_sure: 'Are you absolutely sure you want to proceed?',
58
+ type_delete_to_confirm: "Type 'DELETE' to confirm",
59
+ type_exactly_delete: 'Type exactly: DELETE',
60
+ cancel_button: 'Cancel',
61
+ confirm_button: 'Yes, Delete & Retranslate',
62
+ },
63
+
64
+ // Success messages for retranslation
65
+ full_retranslation_queued: 'Full retranslation queued! Existing translation will be deleted and recreated. Check Recent Translations for progress.',
66
+ incremental_retranslation_queued: 'Incremental retranslation queued! Only changed blocks will be updated. Check Recent Translations for progress.',
67
+ retranslation_failed: 'Failed to start retranslation. Please try again.',
68
+ }
@@ -3,6 +3,7 @@ import importCourse from './importCourse'
3
3
  import importContent from './importContent'
4
4
  import login from './login'
5
5
  import course from './course'
6
+ import admin from './admin'
6
7
 
7
8
  export default {
8
9
  vendor,
@@ -10,4 +11,5 @@ export default {
10
11
  import_content: importContent,
11
12
  login,
12
13
  course,
14
+ admin,
13
15
  }
@@ -1,5 +1,7 @@
1
1
  import transformBlock from './transform_block'
2
+ import transformActivity from './transform_activity'
2
3
 
3
4
  export default {
4
5
  transform_block: transformBlock,
6
+ transform_activity: transformActivity,
5
7
  }
@@ -0,0 +1,8 @@
1
+ export default {
2
+ change_block_type: 'Cambiar tipo de bloque',
3
+ change_block_type_insufficient_items:
4
+ 'Cambiar el tipo de bloque está disponible cuando la actividad tiene al menos dos elementos.',
5
+ change_block_type_error:
6
+ 'No se puede cambiar el tipo de bloque. Inténtalo de nuevo o edítalo manualmente.',
7
+ }
8
+
@@ -1,7 +1,7 @@
1
1
  export default {
2
2
  change_block_type: 'Cambiar tipo de bloque',
3
3
  change_block_type_insufficient_paragraphs:
4
- 'Cambiar el tipo de bloque está disponible cuando el texto tiene al menos dos párrafos.',
4
+ 'Cambiar el tipo de bloque está disponible cuando el texto tiene al menos cuatro oraciones.',
5
5
  change_block_type_insufficient_items:
6
6
  'Cambiar el tipo de bloque está disponible cuando el bloque tiene al menos dos elementos.',
7
7
  change_block_type_error:
@@ -3,15 +3,16 @@ export default {
3
3
  instructions:
4
4
  'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam fringilla ipsum eget ante tempus blandit. Maecenas vel massa\n' +
5
5
  'nec tellus vestibulum porttitor non a enim.',
6
- launch: 'Launch',
6
+ launch: 'Lanzamiento',
7
7
  goodbye: 'adjö',
8
- launch_in_new_window: 'lansera {0} i ny flik',
9
- launch_in_modal: 'lansera {0} i modal',
8
+ launch_in_new_window: 'Abrir {0} en una nueva pestaña',
9
+ launch_in_modal: 'iniciar {0} en una ventana modal',
10
10
  configure_warning:
11
11
  'Seleccione un enlace LTI disponible para comenzar. Luego, configure el tipo de lanzamiento deseado.',
12
12
  no_access:
13
- 'Du har inte behörighet att starta den här länken. Kontakta din systemadministratör.',
14
- missing_tool: 'Verktygs-ID {0} saknas',
15
- unknown_error: 'Något gick fel! Kunde inte starta den här länken!',
16
- link_disabled: 'Länk inaktiverad',
13
+ 'No tiene permisos para acceder a este enlace. Póngase en contacto con el administrador del sistema.',
14
+ missing_tool: 'Falta la identificación de la herramienta {0}.',
15
+ unknown_error: '¡Algo salió mal! No se pudo abrir este enlace.',
16
+ link_disabled: 'Enlace deshabilitado',
17
+ try_again: 'Intentar otra vez',
17
18
  }
@@ -4,6 +4,7 @@ export default {
4
4
  no_recent_jobs: 'No hay trabajos recientes',
5
5
  job_id: 'Identificación del trabajo',
6
6
  vendor_name: 'Nombre del proveedor',
7
+ vendor_name_translation: 'Traducción',
7
8
  status: 'Estado',
8
9
  progress: 'Progreso',
9
10
  created: 'Creado',
@@ -12,6 +13,7 @@ export default {
12
13
  job_details: {
13
14
  none: 'No hay detalles disponibles',
14
15
  import_course: "Importando ID del curso {0} '{1}'",
16
+ translate_course: 'Traduciendo curso {0} al idioma {1}',
15
17
  },
16
18
  job_status: {
17
19
  not_started: 'No iniciado',
@@ -2,6 +2,7 @@ export default {
2
2
  title: 'Integraciones',
3
3
  manage_integrations: 'Administrar proveedores de integración',
4
4
  import_course: 'Importar cursos',
5
+ translate_course: 'Traducir Curso',
5
6
  import_content: 'Importar contenido y archivos',
6
7
  manage_lti: 'Administrar conexiones LTI',
7
8
  manage_lti_links: 'Administrar enlaces LTI',
@@ -7,4 +7,7 @@ export default {
7
7
  launch_type_modal: 'Modal',
8
8
  link_select: 'Seleccione un enlace:',
9
9
  link_disabled: 'Enlace deshabilitado',
10
+ no_links: 'No hay enlaces disponibles.',
11
+ create_link:
12
+ 'Vaya a la página de integraciones externas para crear enlaces.',
10
13
  }
@@ -0,0 +1,5 @@
1
+ import translateCourse from './translateCourse'
2
+
3
+ export default {
4
+ translateCourse,
5
+ }
@@ -0,0 +1,68 @@
1
+ export default {
2
+ tab_title: 'Translate Course',
3
+ recent_jobs_tab_title: 'Recent Translation Jobs',
4
+ title: 'Translate Course',
5
+ subtitle: 'Select a source language, course, and target language to create a translated version',
6
+ source_language: 'Source Language',
7
+ course: 'Course',
8
+ target_language: 'Target Language',
9
+ send_email_notification: 'Send email notification on completion',
10
+ summary_title: 'Translation Summary',
11
+ source_course: 'Source Course:',
12
+ source_language_label: 'Source Language:',
13
+ target_language_label: 'Target Language:',
14
+ reset_button: 'Reset',
15
+ start_translation_button: 'Start Translation',
16
+ no_courses_found: 'No courses found in {0}',
17
+ no_owner: 'No owner',
18
+
19
+ // Success/Error messages
20
+ translation_queued: 'Translation job queued! Check Recent Translations for progress.',
21
+ translation_failed: 'Failed to start translation. Please try again.',
22
+ locale_load_failed: 'Failed to load available languages',
23
+ courses_load_failed: 'Failed to load courses for selected language',
24
+
25
+ // Retranslation Mode Dialog
26
+ retranslation_dialog: {
27
+ title: 'Translation Already Exists',
28
+ existing_translation_info: 'A translation for <strong>{0}</strong> already exists.',
29
+ choose_how_to_proceed: 'Choose how to proceed:',
30
+
31
+ // Incremental mode
32
+ incremental_title: '✓ Update Changed Blocks Only',
33
+ incremental_subtitle: '(Recommended)',
34
+ incremental_description: 'Only retranslate blocks that have been modified since the last translation.',
35
+ incremental_safe_note: 'Safe: Preserves existing course and translations.',
36
+
37
+ // Full mode
38
+ full_title: '⚠️ Delete & Retranslate Everything',
39
+ full_warning: 'Warning:',
40
+ full_description: 'This will permanently delete the existing translated course. Use only if you have made major restructuring changes.',
41
+
42
+ cancel_button: 'Cancel',
43
+ continue_button: 'Continue',
44
+ },
45
+
46
+ // Delete Confirmation Dialog
47
+ delete_confirm_dialog: {
48
+ title: 'Confirm Course Deletion',
49
+ cannot_undo: 'This action cannot be undone!',
50
+ about_to_delete: 'You are about to permanently delete the following course:',
51
+ course_id: 'Course ID:',
52
+ will_delete_title: 'This will delete:',
53
+ will_delete_content: 'All course content and blocks',
54
+ will_delete_assessments: 'All assessments and questions',
55
+ will_delete_files: 'File assets and media',
56
+ will_delete_progress: 'User progress and state data',
57
+ are_you_sure: 'Are you absolutely sure you want to proceed?',
58
+ type_delete_to_confirm: "Type 'DELETE' to confirm",
59
+ type_exactly_delete: 'Type exactly: DELETE',
60
+ cancel_button: 'Cancel',
61
+ confirm_button: 'Yes, Delete & Retranslate',
62
+ },
63
+
64
+ // Success messages for retranslation
65
+ full_retranslation_queued: 'Full retranslation queued! Existing translation will be deleted and recreated. Check Recent Translations for progress.',
66
+ incremental_retranslation_queued: 'Incremental retranslation queued! Only changed blocks will be updated. Check Recent Translations for progress.',
67
+ retranslation_failed: 'Failed to start retranslation. Please try again.',
68
+ }
@@ -2,6 +2,7 @@ import vendor from './vendor'
2
2
  import importCourse from './importCourse'
3
3
  import importContent from './importContent'
4
4
  import login from './login'
5
+ import admin from './admin'
5
6
  import course from './course'
6
7
 
7
8
  export default {
@@ -10,4 +11,5 @@ export default {
10
11
  import_content: importContent,
11
12
  login,
12
13
  course,
14
+ admin,
13
15
  }
@@ -0,0 +1,20 @@
1
+ export default {
2
+ new_chat: 'New Chat',
3
+ recent_chats: 'Recent chats',
4
+ untitled_chat: 'Untitled chat',
5
+ no_history: 'No recent chats',
6
+ system_tip:
7
+ "Hi! I'm here to help with your course. Try asking about learning objectives, content structure, or best practices.",
8
+ placeholder: 'Ask about your course content...',
9
+ hint: 'Press Enter to send, Shift+Enter for new line',
10
+ error_generic: 'Something went wrong. Please try again.',
11
+ error_with_status:
12
+ 'Something went wrong. Please try again. (Error {status})',
13
+ action_try_again: 'Try again',
14
+ action_dismiss: 'Dismiss',
15
+ sender_you: 'You',
16
+ sender_agent: 'Assistant',
17
+ limit_reached:
18
+ 'You have reached the maximum number of messages allowed in this chat. Please start a new chat to continue.',
19
+ aria_open_history: 'Open chat history',
20
+ }
@@ -0,0 +1,5 @@
1
+ import chat from './chat'
2
+
3
+ export default {
4
+ chat,
5
+ }
@@ -0,0 +1,5 @@
1
+ import transformBlock from './transform_block'
2
+
3
+ export default {
4
+ transform_block: transformBlock,
5
+ }
@@ -0,0 +1,9 @@
1
+ export default {
2
+ change_block_type: 'Change block type',
3
+ change_block_type_insufficient_paragraphs:
4
+ 'Change block type is available when the text has at least two paragraphs.',
5
+ change_block_type_insufficient_items:
6
+ 'Change block type is available when the block has at least two items.',
7
+ change_block_type_error:
8
+ 'Unable to change block type. Try again or edit manually.',
9
+ }
@@ -0,0 +1,5 @@
1
+ import ltiConsumer from './lti_consumer'
2
+
3
+ export default {
4
+ lti_consumer: ltiConsumer,
5
+ }