From 1bb921708386e79240dca562290c98ae4cf9dec6 Mon Sep 17 00:00:00 2001 From: Michael Hawkins Date: Fri, 27 Sep 2024 18:44:39 +0800 Subject: [PATCH] MDL-82900 AI: Update language strings --- admin/settings/ai.php | 4 +- .../table/aiplacement_management_table.php | 2 +- .../aiprovider_action_management_table.php | 2 +- .../table/aiprovider_management_table.php | 2 +- ai/provider/azureai/classes/provider.php | 2 +- .../azureai/lang/en/aiprovider_azureai.php | 23 ++++++------ ai/provider/azureai/settings.php | 4 +- ai/provider/openai/classes/provider.php | 4 +- .../openai/lang/en/aiprovider_openai.php | 33 ++++++++--------- ai/provider/openai/settings.php | 4 +- ai/tests/behat/admin.feature | 16 ++++---- lang/en/ai.php | 37 ++++++++----------- lib/classes/plugininfo/aiprovider.php | 12 ++++-- .../aiplacement/lang/en/tiny_aiplacement.php | 2 +- 14 files changed, 71 insertions(+), 76 deletions(-) diff --git a/admin/settings/ai.php b/admin/settings/ai.php index 7a01b95be32b7..9f41f6e3ab6bd 100644 --- a/admin/settings/ai.php +++ b/admin/settings/ai.php @@ -28,7 +28,7 @@ if ($hassiteconfig) { // Add settings page for AI provider settings. - $providers = new admin_settingpage('aiprovider', new lang_string('aiprovidersettings', 'ai')); + $providers = new admin_settingpage('aiprovider', new lang_string('aiproviders', 'ai')); $providers->add(new admin_setting_heading('availableproviders', get_string('availableproviders', 'core_ai'), get_string('availableproviders_desc', 'core_ai'))); @@ -48,7 +48,7 @@ } // Add settings page for AI placement settings. - $placements = new admin_settingpage('aiplacement', new lang_string('aiplacementsettings', 'ai')); + $placements = new admin_settingpage('aiplacement', new lang_string('aiplacements', 'ai')); $placements->add(new admin_setting_heading('availableplacements', get_string('availableplacements', 'core_ai'), get_string('availableplacements_desc', 'core_ai'))); diff --git a/ai/classes/table/aiplacement_management_table.php b/ai/classes/table/aiplacement_management_table.php index 103648b72d1ae..fd79979938c15 100644 --- a/ai/classes/table/aiplacement_management_table.php +++ b/ai/classes/table/aiplacement_management_table.php @@ -40,7 +40,7 @@ protected function get_action_url(array $params = []): moodle_url { #[\Override] protected function get_column_list(): array { $columns = [ - 'name' => get_string('name', 'core'), + 'name' => get_string('placement', 'core_ai'), ]; if ($this->supports_disabling()) { diff --git a/ai/classes/table/aiprovider_action_management_table.php b/ai/classes/table/aiprovider_action_management_table.php index f342e5ea4ef6f..6560febcd8590 100644 --- a/ai/classes/table/aiprovider_action_management_table.php +++ b/ai/classes/table/aiprovider_action_management_table.php @@ -113,7 +113,7 @@ protected function get_dynamic_table_html_end(): string { */ protected function get_column_list(): array { return [ - 'namedesc' => get_string('name', 'core'), + 'namedesc' => get_string('action', 'core_ai'), 'enabled' => get_string('pluginenabled', 'core_plugin'), 'settings' => get_string('settings', 'core'), ]; diff --git a/ai/classes/table/aiprovider_management_table.php b/ai/classes/table/aiprovider_management_table.php index 853e85a8440b6..d1d85a50d167b 100644 --- a/ai/classes/table/aiprovider_management_table.php +++ b/ai/classes/table/aiprovider_management_table.php @@ -39,7 +39,7 @@ protected function get_action_url(array $params = []): moodle_url { #[\Override] protected function get_column_list(): array { $columns = [ - 'name' => get_string('name', 'core'), + 'name' => get_string('provider', 'core_ai'), ]; if ($this->supports_disabling()) { diff --git a/ai/provider/azureai/classes/provider.php b/ai/provider/azureai/classes/provider.php index aebd51e142413..4d05d825bb4cf 100644 --- a/ai/provider/azureai/classes/provider.php +++ b/ai/provider/azureai/classes/provider.php @@ -171,7 +171,7 @@ public function get_action_settings( $settings[] = new \admin_setting_configtext( "aiprovider_azureai/action_{$actionname}_apiversion", new \lang_string("action_apiversion", 'aiprovider_azureai'), - new \lang_string("action_apiversion_desc", 'aiprovider_azureai'), + '', '2024-06-01', PARAM_ALPHANUMEXT, ); diff --git a/ai/provider/azureai/lang/en/aiprovider_azureai.php b/ai/provider/azureai/lang/en/aiprovider_azureai.php index 832193b6cab9f..2000aa0f6d033 100644 --- a/ai/provider/azureai/lang/en/aiprovider_azureai.php +++ b/ai/provider/azureai/lang/en/aiprovider_azureai.php @@ -22,24 +22,23 @@ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ -$string['action_apiversion'] = 'Azure AI API version'; -$string['action_apiversion_desc'] = 'Enter the version number for your Azure AI API.'; +$string['action_apiversion'] = 'API version'; $string['action_deployment'] = 'Deployment ID'; $string['action_deployment_desc'] = 'The deployment ID that relates to the API endpoint the provider uses for this action.'; $string['action_systeminstruction'] = 'System Instruction'; -$string['action_systeminstruction_desc'] = 'The instruction is used provided along with the user request for this action. It provides information to the AI model on how to generate the response.'; +$string['action_systeminstruction_desc'] = 'This instruction is sent to the AI model along with the user\'s prompt. Editing this instruction is not recommended unless absolutely required.'; $string['apikey'] = 'Azure AI API key'; $string['apikey_desc'] = 'Enter your Azure AI API key.'; $string['deployment'] = 'Azure AI API deployment name'; $string['deployment_desc'] = 'Enter the deployment name for your Azure AI API.'; -$string['enableglobalratelimit'] = 'Enable global rate limiting'; -$string['enableglobalratelimit_desc'] = 'Enable global rate limiting for the Azure AI API provider.'; -$string['enableuserratelimit'] = 'Enable user rate limiting'; -$string['enableuserratelimit_desc'] = 'Enable user rate limiting for the Azure AI API provider.'; +$string['enableglobalratelimit'] = 'Set site-wide rate limit'; +$string['enableglobalratelimit_desc'] = 'Limit the number of requests that the Azure AI API provider can receive across the entire site every hour.'; +$string['enableuserratelimit'] = 'Set user rate limit'; +$string['enableuserratelimit_desc'] = 'Limit the number of requests each user can make to the Azure AI API provider every hour.'; $string['endpoint'] = 'Azure AI API endpoint'; -$string['endpoint_desc'] = 'Enter the endpoint URL for your Azure AI API. In the form of: https://YOUR_RESOURCE_NAME.azureai.azure.com/azureai/deployments'; -$string['globalratelimit'] = 'Global rate limit'; -$string['globalratelimit_desc'] = 'Set the number of requests per hour allowed for the global rate limit.'; +$string['endpoint_desc'] = 'Enter the endpoint URL for your Azure AI API, in the following format: https://YOUR_RESOURCE_NAME.azureai.azure.com/azureai/deployments'; +$string['globalratelimit'] = 'Maximum number of site-wide requests'; +$string['globalratelimit_desc'] = 'The number of site-wide requests allowed per hour.'; $string['pluginname'] = 'Azure AI API Provider'; $string['privacy:metadata'] = 'The Azure Ai API provider plugin does not store any personal data.'; $string['privacy:metadata:aiprovider_azureai:externalpurpose'] = 'This information is sent to the Azure API in order for a response to be generated. Your Azure AI account settings may change how Microsoft stores and retains this data. No user data is explicitly sent to Microsoft or stored in Moodle LMS by this plugin.'; @@ -47,5 +46,5 @@ $string['privacy:metadata:aiprovider_azureai:numberimages'] = 'The number of images used in the response. When generating images.'; $string['privacy:metadata:aiprovider_azureai:prompttext'] = 'The user entered text prompt used to generate the response.'; $string['privacy:metadata:aiprovider_azureai:responseformat'] = 'The format of the response. When generating images.'; -$string['userratelimit'] = 'User rate limit'; -$string['userratelimit_desc'] = 'Set the number of requests per hour allowed for the user rate limit.'; +$string['userratelimit'] = 'Maximum number of requests per user'; +$string['userratelimit_desc'] = 'The number of requests allowed per hour, per user.'; diff --git a/ai/provider/azureai/settings.php b/ai/provider/azureai/settings.php index 8716d7f3140f9..869907368a1f6 100644 --- a/ai/provider/azureai/settings.php +++ b/ai/provider/azureai/settings.php @@ -37,8 +37,8 @@ $settings->add(new admin_setting_heading( 'aiprovider_azureai/general', - new lang_string('providersettings', 'core_ai'), - new lang_string('providersettings_desc', 'core_ai') + new lang_string('settings', 'core'), + '', )); // Setting to store AzureAI API key. diff --git a/ai/provider/openai/classes/provider.php b/ai/provider/openai/classes/provider.php index 5a7c0f89025f9..07847687136f8 100644 --- a/ai/provider/openai/classes/provider.php +++ b/ai/provider/openai/classes/provider.php @@ -174,7 +174,7 @@ public function get_action_settings( $settings[] = new \admin_setting_configtext( "aiprovider_openai/action_{$actionname}_endpoint", new \lang_string("action:{$actionname}:endpoint", 'aiprovider_openai'), - new \lang_string("action:{$actionname}:endpoint_desc", 'aiprovider_openai'), + '', 'https://api.openai.com/v1/chat/completions', PARAM_URL, ); @@ -199,7 +199,7 @@ public function get_action_settings( $settings[] = new \admin_setting_configtext( "aiprovider_openai/action_{$actionname}_endpoint", new \lang_string("action:{$actionname}:endpoint", 'aiprovider_openai'), - new \lang_string("action:{$actionname}:endpoint_desc", 'aiprovider_openai'), + '', 'https://api.openai.com/v1/images/generations', PARAM_URL, ); diff --git a/ai/provider/openai/lang/en/aiprovider_openai.php b/ai/provider/openai/lang/en/aiprovider_openai.php index 9e4937003de9c..719977f372d31 100644 --- a/ai/provider/openai/lang/en/aiprovider_openai.php +++ b/ai/provider/openai/lang/en/aiprovider_openai.php @@ -23,31 +23,28 @@ */ $string['action:generate_image:endpoint'] = 'API endpoint'; -$string['action:generate_image:endpoint_desc'] = 'The API endpoint the provider uses for this action.'; -$string['action:generate_image:model'] = 'Image generation model'; +$string['action:generate_image:model'] = 'AI model'; $string['action:generate_image:model_desc'] = 'The model used to generate images from user prompts.'; $string['action:generate_text:endpoint'] = 'API endpoint'; -$string['action:generate_text:endpoint_desc'] = 'The API endpoint for the provider uses for this action.'; -$string['action:generate_text:model'] = 'Text generation model'; +$string['action:generate_text:model'] = 'AI model'; $string['action:generate_text:model_desc'] = 'The model used to generate the text response.'; $string['action:generate_text:systeminstruction'] = 'System instruction'; -$string['action:generate_text:systeminstruction_desc'] = 'This instruction is provided together with the user prompt for this action. It provides information to the AI model on how to generate the response.'; +$string['action:generate_text:systeminstruction_desc'] = 'This instruction is sent to the AI model along with the user\'s prompt. Editing this instruction is not recommended unless absolutely required.'; $string['action:summarise_text:endpoint'] = 'API endpoint'; -$string['action:summarise_text:endpoint_desc'] = 'The API endpoint the provider uses for this action.'; -$string['action:summarise_text:model'] = 'Text summarisation model'; +$string['action:summarise_text:model'] = 'AI model'; $string['action:summarise_text:model_desc'] = 'The model used to summarise the provided text.'; $string['action:summarise_text:systeminstruction'] = 'System instruction'; -$string['action:summarise_text:systeminstruction_desc'] = 'This instruction is provided together with the user prompt for this action. It provides information to the AI model on how to generate the response.'; +$string['action:summarise_text:systeminstruction_desc'] = 'This instruction is sent to the AI model along with the user\'s prompt. Editing this instruction is not recommended unless absolutely required.'; $string['apikey'] = 'OpenAI API key'; -$string['apikey_desc'] = 'Enter your OpenAI API key. You can get one from here'; -$string['enableglobalratelimit'] = 'Enable global rate limiting'; -$string['enableglobalratelimit_desc'] = 'Enable global rate limiting for the OpenAI API provider.'; -$string['enableuserratelimit'] = 'Enable user rate limiting'; -$string['enableuserratelimit_desc'] = 'Enable user rate limiting for the OpenAI API provider.'; -$string['globalratelimit'] = 'Global rate limit'; -$string['globalratelimit_desc'] = 'Set the number of requests per hour allowed for the global rate limit.'; +$string['apikey_desc'] = 'Get a key from your OpenAI API keys.'; +$string['enableglobalratelimit'] = 'Set site-wide rate limit'; +$string['enableglobalratelimit_desc'] = 'Limit the number of requests that the OpenAI API provider can receive across the entire site every hour.'; +$string['enableuserratelimit'] = 'Set user rate limit'; +$string['enableuserratelimit_desc'] = 'Limit the number of requests each user can make to the OpenAI API provider every hour.'; +$string['globalratelimit'] = 'Maximum number of site-wide requests'; +$string['globalratelimit_desc'] = 'The number of site-wide requests allowed per hour.'; $string['orgid'] = 'OpenAI organization ID'; -$string['orgid_desc'] = 'Enter your OpenAI organization ID. You can get one from here'; +$string['orgid_desc'] = 'Get your OpenAI organisation ID from your OpenAI account.'; $string['pluginname'] = 'OpenAI API Provider'; $string['privacy:metadata'] = 'The OpenAI API provider plugin does not store any personal data.'; $string['privacy:metadata:aiprovider_openai:externalpurpose'] = 'This information is sent to the OpenAI API in order for a response to be generated. Your OpenAI account settings may change how OpenAI stores and retains this data. No user data is explicitly sent to OpenAI or stored in Moodle LMS by this plugin.'; @@ -55,5 +52,5 @@ $string['privacy:metadata:aiprovider_openai:numberimages'] = 'The number of images used in the response. When generating images.'; $string['privacy:metadata:aiprovider_openai:prompttext'] = 'The user entered text prompt used to generate the response.'; $string['privacy:metadata:aiprovider_openai:responseformat'] = 'The format of the response. When generating images.'; -$string['userratelimit'] = 'User rate limit'; -$string['userratelimit_desc'] = 'Set the number of requests per hour allowed for the user rate limit.'; +$string['userratelimit'] = 'Maximum number of requests per user'; +$string['userratelimit_desc'] = 'The number of requests allowed per hour, per user.'; diff --git a/ai/provider/openai/settings.php b/ai/provider/openai/settings.php index dbeeb3cac5011..c7bd2b37df311 100644 --- a/ai/provider/openai/settings.php +++ b/ai/provider/openai/settings.php @@ -37,8 +37,8 @@ $settings->add(new admin_setting_heading( 'aiprovider_openai/general', - new lang_string('providersettings', 'core_ai'), - new lang_string('providersettings_desc', 'core_ai'), + new lang_string('settings', 'core'), + '', )); // Setting to store OpenAI API key. diff --git a/ai/tests/behat/admin.feature b/ai/tests/behat/admin.feature index 725640bac874c..acc657a3e7f0b 100644 --- a/ai/tests/behat/admin.feature +++ b/ai/tests/behat/admin.feature @@ -7,7 +7,7 @@ Feature: An administrator can manage AI subsystem settings @javascript Scenario: An administrator can control the enabled state of AI Provider plugins using JavaScript Given I am logged in as "admin" - And I navigate to "AI > Manage settings for AI providers" in site administration + And I navigate to "AI > AI providers" in site administration When I toggle the "Enable OpenAI API Provider" admin switch "on" And I should see "OpenAI API Provider enabled." And I reload the page @@ -18,7 +18,7 @@ Feature: An administrator can manage AI subsystem settings @javascript Scenario: An administrator can control the enabled state of AI Placement plugins using JavaScript Given I am logged in as "admin" - And I navigate to "AI > Manage settings for AI placements" in site administration + And I navigate to "AI > AI placements" in site administration When I toggle the "Enable HTML Text Editor Placement" admin switch "on" And I should see "HTML Text Editor Placement enabled." And I reload the page @@ -29,19 +29,19 @@ Feature: An administrator can manage AI subsystem settings @javascript Scenario: Placement actions should be available when an Administrator enables AI Providers using JavaScript Given I am logged in as "admin" - And I navigate to "AI > Manage settings for AI providers" in site administration + And I navigate to "AI > AI providers" in site administration When I toggle the "Enable OpenAI API Provider" admin switch "on" And I should see "OpenAI API Provider enabled." - And I navigate to "AI > Manage settings for AI placements" in site administration + And I navigate to "AI > AI placements" in site administration And I click on the "Settings" link in the table row containing "HTML Text Editor Placement" Then I should not see "This action is unavailable." @javascript Scenario: Placement actions should not be available when an Administrator disables AI Providers using JavaScript Given I am logged in as "admin" - And I navigate to "AI > Manage settings for AI providers" in site administration + And I navigate to "AI > AI providers" in site administration When I toggle the "Enable OpenAI API Provider" admin switch "off" - And I navigate to "AI > Manage settings for AI placements" in site administration + And I navigate to "AI > AI placements" in site administration And I click on the "Settings" link in the table row containing "HTML Text Editor Placement" And I should see "This action is unavailable." in the table row containing "Generate text" Then I should see "This action is unavailable." in the table row containing "Generate image" @@ -49,12 +49,12 @@ Feature: An administrator can manage AI subsystem settings @javascript Scenario: Placement actions should not be available for enabled Providers when an Administrator disables an Action using JavaScript Given I am logged in as "admin" - And I navigate to "AI > Manage settings for AI providers" in site administration + And I navigate to "AI > AI providers" in site administration When I toggle the "Enable OpenAI API Provider" admin switch "on" And I should see "OpenAI API Provider enabled." And I click on the "Settings" link in the table row containing "OpenAI API Provider" And I toggle the "Generate text" admin switch "off" - And I navigate to "AI > Manage settings for AI placements" in site administration + And I navigate to "AI > AI placements" in site administration And I click on the "Settings" link in the table row containing "HTML Text Editor Placement" And I should see "This action is unavailable." in the table row containing "Generate text" Then I should not see "This action is unavailable." in the table row containing "Generate image" diff --git a/lang/en/ai.php b/lang/en/ai.php index 5a1a841966d60..1c12cc3d8b6ac 100644 --- a/lang/en/ai.php +++ b/lang/en/ai.php @@ -32,7 +32,7 @@ 1. Return the summary in plain text only. 2. Do not include any markdown formatting, greetings, or platitudes.'; $string['action_summarise_text'] = 'Summarise text'; -$string['action_summarise_text_desc'] = 'Summarises text based on provided input text.'; +$string['action_summarise_text_desc'] = 'Summarises the text content on a course page.'; $string['action_summarise_text_instruction'] = 'You will receive a text input from the user. Your task is to summarize the provided text. Follow these guidelines: 1. Condense: Shorten long passages into key points. 2. Simplify: Make complex information easier to understand, especially for learners. @@ -46,28 +46,24 @@ $string['action_translate_text'] = 'Translate text'; $string['action_translate_text_desc'] = 'Translate provided text from one language to another.'; $string['actionsettingprovider'] = '{$a} action settings'; -$string['actionsettingprovider_desc'] = 'These settings are specifc to this action for this provider.
-They are used to control how the action is processed by the provider.'; +$string['actionsettingprovider_desc'] = 'These settings control how the {$a->providername} performs the action {$a->actionname}.'; $string['ai'] = 'AI'; -$string['aiplacementsettings'] = 'Manage settings for AI placements'; -$string['aiprovidersettings'] = 'Manage settings for AI providers'; +$string['aiplacements'] = 'AI placements'; +$string['aiproviders'] = 'AI providers'; $string['aiusagepolicy'] = 'AI usage policy'; -$string['availableplacements'] = 'Available AI placements'; -$string['availableplacements_desc'] = 'Select an AI placement to manage its settings.
-AI placements are responsible for determining where and how AI services are used within the Moodle interface.
-Each enabled placement uses one or more "AI Actions". Actions can be enabled or disabled for each provider in the provider plugin settings.'; -$string['availableproviders'] = 'Available AI providers'; -$string['availableproviders_desc'] = 'Select an AI provider to manage its settings.
-AI providers are responsible for providing the AI services used by the AI subsystem.
-Each enabled provider makes available one or more "AI Actions". Actions can be enabled or disabled for each provider in the provider plugin settings.'; +$string['availableplacements'] = 'Choose where AI actions are available'; +$string['availableplacements_desc'] = 'Placements define how and where AI actions can be used in your site. You can choose which actions are available in each placement through the settings.'; +$string['availableproviders'] = 'Manage the AI providers connected to your LMS'; +$string['availableproviders_desc'] = 'AI providers add AI functionality to your site through \'actions\' like text summarisation or image generation.
+You can manage the actions for each provider in their settings.'; $string['contentwatermark'] = 'Generated by AI'; $string['declineaipolicy'] = 'Decline'; $string['manageaiplacements'] = 'Manage AI placements'; $string['manageaiproviders'] = 'Manage AI providers'; $string['noproviders'] = 'This action is unavailable. No providers are configured for this action'; -$string['placementactionsettings'] = 'Placement actions'; -$string['placementactionsettings_desc'] = 'These are the actions that are supported by this AI placement.
-Each action can be enabled or disabled for this placement.'; +$string['placement'] = 'Placement'; +$string['placementactionsettings'] = 'Actions'; +$string['placementactionsettings_desc'] = 'The AI actions available for this placement.'; $string['placementsettings'] = 'Placement specific settings'; $string['placementsettings_desc'] = 'These settings control various aspects of this AI placement.
They control how the placement connects to the AI service, and related operations'; @@ -105,12 +101,11 @@ $string['privacy:metadata:ai_policy_register:contextid'] = 'The ID of the context whose data was saved.'; $string['privacy:metadata:ai_policy_register:timeaccepted'] = 'The time the user accepted the AI policy.'; $string['privacy:metadata:ai_policy_register:userid'] = 'The ID of the user whose data was saved.'; -$string['provideractionsettings'] = 'Provider actions'; -$string['provideractionsettings_desc'] = 'These settings are for the actions that are supported by this AI provider.
-Each action can be enabled or disabled for this provider.
-Each action can also have its own settings that can be configured here.'; +$string['provideractionsettings'] = 'Actions'; +$string['provideractionsettings_desc'] = 'Choose and configure the actions that the {$a} can perform on your site.'; +$string['provider'] = 'Provider'; $string['providers'] = 'Providers'; -$string['providersettings'] = 'Provider specific settings'; +$string['providersettings'] = 'Settings'; $string['providersettings_desc'] = 'These settings control various aspects of this AI provider.
They control how the provider connects to the AI service, and related operations'; $string['userpolicy'] = 'Welcome to the new AI feature! diff --git a/lib/classes/plugininfo/aiprovider.php b/lib/classes/plugininfo/aiprovider.php index 1f443358b6793..e644b47675677 100644 --- a/lib/classes/plugininfo/aiprovider.php +++ b/lib/classes/plugininfo/aiprovider.php @@ -97,13 +97,15 @@ public function load_settings( } // Load the actions table. + $providerclass = "\\{$section}\\provider"; + $provider = new $providerclass(); if (file_exists($this->full_path('setting_actions.php'))) { include($this->full_path('setting_actions.php')); // This may also set $settings to null. } else { // Provider action settings heading. $settings->add(new \admin_setting_heading("{$section}/generals", new \lang_string('provideractionsettings', 'core_ai'), - new \lang_string('provideractionsettings_desc', 'core_ai'))); + new \lang_string('provideractionsettings_desc', 'core_ai', $provider->get_name()))); // Load the setting table of actions that this provider supports. $settings->add(new \core_ai\admin\admin_setting_action_manager( $section, @@ -114,17 +116,19 @@ public function load_settings( } $ADMIN->add($parentnodename, $settings); // Load any action settings for this provider. - $providerclass = "\\{$section}\\provider"; - $provider = new $providerclass(); $actionlist = $provider->get_action_list(); foreach ($actionlist as $action) { $actionsettings = $provider->get_action_settings($action, $ADMIN, $section, $hassiteconfig); if (!empty($actionsettings)) { $actionname = substr($action, (strrpos($action, '\\') + 1)); $settings = new \admin_settingpage($section . '_' . $actionname, $action::get_name(), 'moodle/site:config', true); + $descplaceholder = [ + 'providername' => $provider->get_name(), + 'actionname' => $action::get_name(), + ]; $setting = new \admin_setting_heading("{$section}_actions/heading", new \lang_string('actionsettingprovider', 'core_ai', $provider->get_name()), - new \lang_string('actionsettingprovider_desc', 'core_ai')); + new \lang_string('actionsettingprovider_desc', 'core_ai', $descplaceholder)); $settings->add($setting); foreach ($actionsettings as $setting) { $settings->add($setting); diff --git a/lib/editor/tiny/plugins/aiplacement/lang/en/tiny_aiplacement.php b/lib/editor/tiny/plugins/aiplacement/lang/en/tiny_aiplacement.php index 7de4ab1f6f90d..f05e3a7db509f 100644 --- a/lib/editor/tiny/plugins/aiplacement/lang/en/tiny_aiplacement.php +++ b/lib/editor/tiny/plugins/aiplacement/lang/en/tiny_aiplacement.php @@ -54,6 +54,6 @@ $string['privacy:metadata'] = 'The AI Placement plugin does not store any personal data.'; $string['regenerate'] = 'Regenerate'; $string['textmodaltitle'] = 'Generate text using AI'; -$string['textprompt_label'] = 'Describe the text you want AI to create'; +$string['textprompt_label'] = 'Describe the text you want AI to create. You can include details like topic, length, audience, or tone.'; $string['textresponse_label'] = 'AI generated text'; $string['textresponse_placeholder'] = 'Generated text will appear here, and can be edited before inserting into the editor.';