diff --git a/metatag_views/metatag_views.module b/metatag_views/metatag_views.module index 64506ed..9d9355a 100644 --- a/metatag_views/metatag_views.module +++ b/metatag_views/metatag_views.module @@ -69,6 +69,8 @@ function metatag_views_page_alter(&$page) { // 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')) { @@ -79,6 +81,14 @@ function metatag_views_page_alter(&$page) { if (drupal_is_front_page() && metatag_config_is_enabled('global:frontpage')) { return; } + + // 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; + } // Load the meta tags for this view. $metatags = $view->display_handler->get_option('metatags'); @@ -91,11 +101,25 @@ function metatag_views_page_alter(&$page) { if (!empty($metatags) && !isset($metatags[LANGUAGE_NONE])) { $metatags = array(LANGUAGE_NONE => $metatags); } + + // Allow i18n translation. + if (function_exists('i18n_string_translate')) { + $translated_metatags = array(); + foreach ($metatags[LANGUAGE_NONE] as $field => $value) { + $name = "metatag:" . $instance . ":" . $field; + if (!empty($value['value']) && is_string($value['value']) && is_string($name)) { + $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; // The page region can be changed. $region = variable_get('metatag_page_region', 'content'); diff --git a/metatag_views/metatag_views_plugin_display_extender_metatags.inc b/metatag_views/metatag_views_plugin_display_extender_metatags.inc index 4a5d96d..0d0ee35 100644 --- a/metatag_views/metatag_views_plugin_display_extender_metatags.inc +++ b/metatag_views/metatag_views_plugin_display_extender_metatags.inc @@ -66,6 +66,23 @@ class metatag_views_plugin_display_extender_metatags extends views_plugin_displa } $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[LANGUAGE_NONE] as $field => $item) { + $name = "metatag:" . $instance . ":" . $field; + if (!empty($item['value']) && is_string($item['value']) && is_string($name)) { + i18n_string_update($name, $item['value']); + } + } + } } }