diff --git a/i18nviews.i18n.inc b/i18nviews.i18n.inc
new file mode 100644
index 0000000..7b27b72
--- /dev/null
+++ b/i18nviews.i18n.inc
@@ -0,0 +1,52 @@
+<?php
+/**
+ * @file
+ * Internationalization (i18n) hooks
+ */
+
+/**
+ * Implements hook_i18n_object_info().
+ */
+function i18nviews_i18n_object_info() {
+  $info['views'] = array(
+    'title' => t('Views'),
+    'class' => 'i18nviews',
+    'key' => 'name',
+    'string translation' => array(
+      'textgroup' => 'views',
+      'type' => 'views',
+    ),
+    // List of all known objects of this type
+    'list callback' => 'views_get_all_views',
+  );
+  return $info;
+}
+
+/**
+ * Implements hook_i18n_string_info().
+ */
+function i18nviews_i18n_string_info() {
+  $groups['views'] = array(
+    'title' => t('Views'),
+    'description' => t('Views translation.'),
+    'format' => FALSE,
+    'list' => TRUE,
+  );
+  return $groups;
+}
+
+/**
+ * Implements hook_i18n_string_list().
+ */
+/*
+function i18nviews_i18n_string_list($group) {
+  $strings = array();
+  if ($group == 'views') {
+    $views = views_get_all_views();
+    foreach ($views as $view) {
+      $strings[$view->name] = i18nviews_views_properties($view);
+    }
+    return array($group => $strings);
+  }
+}
+*/
\ No newline at end of file
diff --git a/i18nviews.inc b/i18nviews.inc
index 343a4c0..c512286 100644
--- a/i18nviews.inc
+++ b/i18nviews.inc
@@ -5,16 +5,29 @@ class i18nviews extends i18n_string_object_wrapper {
    * Get string context
    */
   public function get_string_context() {
-    return array($this->object->name, '*');
+    return array('views', $this->object->name);
   }
 
   /**
    * Get translatable properties
    */
   protected function build_properties() {
-    $properties = parent::build_properties();
-    $properties[$this->get_textgroup()][$this->object->name] = i18nviews_views_properties($this->object);
-    return $properties;
+    $strings = parent::build_properties();
+    $properties = array();
+    $this->object->init_display();
+    foreach ($this->object->display as $display_id => $display) {
+      $translatables = array();
+      $display->handler->unpack_translatables($translatables);
+      foreach ($translatables as $translatable) {
+        $key = implode(':', $translatable['keys']);
+        $properties[$display_id][$key] = array(
+          'title' => $display_id . ' ' . $key,
+          'string' => $translatable['value'],
+        );
+      }
+    }
+    $strings[$this->get_textgroup()][$this->object->name] = $properties;
+    return $strings;
   }
 
   /**
diff --git a/i18nviews.info b/i18nviews.info
index f851cb5..5a755f1 100644
--- a/i18nviews.info
+++ b/i18nviews.info
@@ -7,6 +7,8 @@ core = 7.x
 
 ; i18n translation class
 files[] = i18nviews.inc
+; i18n hooks
+files[] = i18nviews.i18n.inc
 
 ; Handlers, Plugins
 files[] = includes/i18nviews_handler_argument_taxonomy_index_tid.inc
diff --git a/i18nviews.module b/i18nviews.module
index c222ef2..f45bffa 100644
--- a/i18nviews.module
+++ b/i18nviews.module
@@ -31,43 +31,6 @@ function i18nviews_localization_plugin_enabled() {
 }
 
 /**
- * Implements hook_i18n_string_list().
- */
-function i18nviews_i18n_string_list($group) {
-  $strings = array();
-  if ($group == 'views') {
-    $views = views_get_all_views();
-    foreach ($views as $view) {
-      $strings[$view->name] = i18nviews_views_properties($view);
-    }
-    return array($group => $strings);
-  }
-}
-
-/**
- * Get all translatable properties from a view.
- *
- * @param $view
- *  An view object.
- */
-function i18nviews_views_properties($view) {
-  $properties = array();
-  $view->init_display();
-  foreach ($view->display as $display_id => $display) {
-    $translatables = array();
-    $display->handler->unpack_translatables($translatables);
-    foreach ($translatables as $translatable) {
-      $key = implode(':', $translatable['keys']);
-      $properties[$display_id][$key] = array(
-        'title' => $display_id . ' ' . $key,
-        'string' => $translatable['value'],
-      );
-    }
-  }
-  return $properties;
-}
-
-/**
  * Field handler for taxonomy term fields.
  *
  * Remake of views_handler_field_allterms with term name translation.
@@ -158,33 +121,6 @@ function i18nviews_locale_source($translation, $textgroup, $language = NULL) {
 }
 
 /**
- * Implements hook_i18n_string_info().
- */
-function i18nviews_i18n_string_info() {
-  $groups['views'] = array(
-    'title' => t('Views'),
-    'description' => t('Views translation.'),
-    'format' => FALSE,
-    'list' => TRUE,
-  );
-  return $groups;
-}
-
-/**
- * Implements hook_i18n_object_info().
- */
-function i18nviews_i18n_object_info() {
-  $info['views'] = array(
-    'title' => t('Views'),
-    'class' => 'i18nviews',
-    'string translation' => array(
-      'textgroup' => 'views',
-    ),
-  );
-  return $info;
-}
-
-/**
  * Implements hook_ctools_plugin_post_alter
  *
  * Register Translate operation in ctools export ui.
