diff --git a/metatag_context/metatag_context.admin.inc b/metatag_context/metatag_context.admin.inc index becb101..1a6240c 100644 --- a/metatag_context/metatag_context.admin.inc +++ b/metatag_context/metatag_context.admin.inc @@ -85,6 +85,13 @@ function metatag_context_config_add_form_submit($form, &$form_state) { $context = metatag_context_load_default_context(); $context->name = $form_state['values']['name']; context_save($context); + // Update the i18n string + if (function_exists('i18n_string_update')) { + foreach ($context->reactions['metatag_context_reaction']['metatags'] as $field => $item) { + $name = "metatag:context:" . $context->name . ":" . $field; + i18n_string_update($name, $item['value']); + } + } $form_state['redirect'] = 'admin/config/search/metatags/context/' . $context->name; } @@ -168,6 +175,13 @@ function metatag_context_config_edit_form_submit($form, &$form_state) { $paths = array_combine($paths, $paths); $context->conditions['path']['values'] = $paths; context_save($context); + // Update the i18n string + if (function_exists('i18n_string_update')) { + foreach ($context->reactions['metatag_context_reaction']['metatags'] as $field => $item) { + $name = "metatag:context:" . $context->name . ":" . $field; + i18n_string_update($name, $item['value']); + } + } $form_state['redirect'] = 'admin/config/search/metatags/context'; } diff --git a/metatag_context/metatag_context.context.inc b/metatag_context/metatag_context.context.inc index fb36ace..137d0a2 100644 --- a/metatag_context/metatag_context.context.inc +++ b/metatag_context/metatag_context.context.inc @@ -101,7 +101,9 @@ class metatag_context_reaction extends context_reaction { $metadata_array = $context->reactions['metatag_context_reaction']['metatags']; foreach ($metadata_array as $key => $data) { if (!empty($data['value'])) { - $metatags[$key] = $data;//t(check_plain($data['value'])); + $name = 'metatag:context:' . $context->name . ':' . $key; + $data['value'] = metatag_translate($name, $data['value']); + $metatags[$key] = $data; } } diff --git a/metatag_panels/metatag_panels.module b/metatag_panels/metatag_panels.module index 016f715..ebfd2f1 100644 --- a/metatag_panels/metatag_panels.module +++ b/metatag_panels/metatag_panels.module @@ -85,6 +85,14 @@ function metatag_panels_form_submit($form, $form_state) { ); $form_state['handler']->conf['metatag_panels'] = $conf; + if ($conf['enabled'] && function_exists('i18n_string_update')) { + $handler = $form_state['handler']; + $instance = 'panels:' . $handler->task . ':' . $handler->subtask . ':' . $handler->name; + foreach ($conf['metatags'] as $field => $item) { + $name = "metatag:" . $instance . ":" . $field; + i18n_string_update($name, $item['value']); + } + } } /** @@ -118,8 +126,9 @@ function metatag_panels_ctools_render_alter($info, $page, $context) { } // Build the Metatag. + $instance = 'panels:' . $handler->task . ':' . $handler->subtask . ':' . $handler->name; $options = array( - 'instance' => 'panels:' . $handler->name, + 'instance' => $instance, 'token data' => $tokens, ); foreach ($metatags as $metatag => $data) { @@ -146,3 +155,42 @@ function metatag_panels_page_build(&$page) { $page['content']['metatags']['global'] = $metatags; } } + + +/** + * Implements hook_panels_delete_display(). + * + * Remove saved i18n translations of meta-tags. + * + * @param integer $did + * Id of the display to delete. + */ +function metatag_panels_panels_delete_display($did) { + if (function_exists('i18n_string_remove')) { + // We need the task, sub-task, handler names to create the metatag instance, and conf to get the actual meta-tags. + $info = db_select('page_manager_handlers') + ->fields('page_manager_handlers', array('did', 'name', 'task', 'subtask', 'handler', 'conf')) + ->condition('did', $did) + ->execute() + ->fetchAssoc(); + + if (!empty($info)) { + $conf = unserialize($info['conf']); + if (!empty($conf['metatag_panels']['metatags'])) { + $task = $info['task']; + $sub_task = $info['subtask']; + $handler_name = $info['name']; + + // Construct the instance. + $conf = $conf['metatag_panels']; + $instance = 'panels:' . $task . ':' . $sub_task . ':' . $handler_name; + + // For each metatag, remove the i18n string. + foreach ($conf['metatags'] as $field => $item) { + $name = "metatag:" . $instance . ":" . $field; + i18n_string_remove($name, $item['value']); + } + } + } + } +} diff --git a/metatag_views/metatag_views.module b/metatag_views/metatag_views.module index 943b3ff..383949c 100644 --- a/metatag_views/metatag_views.module +++ b/metatag_views/metatag_views.module @@ -60,6 +60,7 @@ function metatag_views_page_alter(&$page) { $view = views_get_page_view(); // Check if Views metatags are enabled. if (!empty($view) && metatag_config_is_enabled('view')) { + global $language; // The following is taken from views_get_page_view(). // If a module is still putting in the display like we used to, catch that. if (is_subclass_of($view, 'views_plugin_display')) { @@ -75,14 +76,28 @@ function metatag_views_page_alter(&$page) { if (metatag_views_views_display_has_metatags($view->display_handler)) { $saved_metatags = $view->display_handler->get_option('metatags'); $metatags = array(); + // Include only view name by default + $instance = 'view:' . $view->name; + // Include display name if option is overridden + if (!$view->display_handler->is_defaulted('metatags')) { + $instance = 'view:' . $view->name . ':' . $view->current_display; + } if (!empty($saved_metatags)) { $metatags[LANGUAGE_NONE] = $saved_metatags; + $translated_metatags = array(); + foreach ($saved_metatags as $field => $value) { + $name = "metatag:" . $instance . ":" . $field; + $translated_metatags[$field] = array( + 'value' => i18n_string_translate($name, $value['value']), + ); + } + $metatags[$language->language] = $translated_metatags; } // Build options for meta tag rendering. - $instance = 'view:' . $view->name; $options = array(); $options['token data']['view'] = $view; + $options['language'] = $language->language; // Add the metatags. $page['content']['metatags'][$instance] = metatag_metatags_view($instance, $metatags, $options); diff --git a/metatag_views/metatag_views_plugin_display_extender_metatags.inc b/metatag_views/metatag_views_plugin_display_extender_metatags.inc index 7c142f1..61ac258 100644 --- a/metatag_views/metatag_views_plugin_display_extender_metatags.inc +++ b/metatag_views/metatag_views_plugin_display_extender_metatags.inc @@ -47,6 +47,19 @@ class metatag_views_plugin_display_extender_metatags extends views_plugin_displa $metatags = $form_state['values']['metatags']; metatag_filter_values_from_defaults($metatags); $this->display->set_option('metatags', $metatags); + if ($this->definition['enabled'] && function_exists('i18n_string_update')) { + // Include only view name by default + $instance = 'view:' . $this->view->name; + // Include display name if option is overridden + if (!$this->display->is_defaulted('metatags')) { + $instance = 'view:' . $this->view->name . ':' . $this->view->current_display; + } + foreach ($metatags as $field => $item) { + $name = "metatag:" . $instance . ":" . $field; + i18n_string_update($name, $item['value']); + } + } } } + }