diff --git a/contrib/current_search/current_search.block.inc b/contrib/current_search/current_search.block.inc
index ce89346..9be537d 100644
--- a/contrib/current_search/current_search.block.inc
+++ b/contrib/current_search/current_search.block.inc
@@ -111,7 +111,7 @@ function current_search_block_view($delta = '') {
     // Iterates over configs and executes the plugins.
     foreach ($config->settings as $name => $settings) {
       if ($class = ctools_plugin_load_class('current_search', 'items', $settings['id'], 'handler')) {
-        $plugin = new $class($name, $settings);
+        $plugin = new $class($name, $config);
         if ($return = $plugin->execute($adapter)) {
           $build[$name] = $return;
           $build[$name]['#theme_wrappers'][] = 'current_search_item_wrapper';
diff --git a/contrib/current_search/plugins/current_search/item.inc b/contrib/current_search/plugins/current_search/item.inc
index 934f964..d6e9fe9 100644
--- a/contrib/current_search/plugins/current_search/item.inc
+++ b/contrib/current_search/plugins/current_search/item.inc
@@ -11,6 +11,13 @@
 abstract class CurrentSearchItem {
 
   /**
+   * The machine readable name of the current search block configuration.
+   *
+   * @var string
+   */
+  protected $configName;
+
+  /**
    * The machine readable name of the item this instance is associated with.
    *
    * @var string
@@ -29,12 +36,18 @@ abstract class CurrentSearchItem {
    *
    * @param string $name
    *   The machine readable name of the item this instance is associated with.
-   * @param stdClass $settings
-   *   An array containing the settings for the instance of the class.
+   * @param stdClass $confug
+   *   The full current search block configuration.
    */
-  public function __construct($name, array $settings = array()) {
+  public function __construct($name, $config = NULL) {
     $this->name = $name;
-    $this->settings = $settings + $this->getDefaultSettings();
+    if (isset($config->settings[$name])) {
+      $this->configName = $config->name;
+      $this->settings = $config->settings[$name] + $this->getDefaultSettings();
+    }
+    else {
+      $this->settings = $this->getDefaultSettings();
+    }
   }
 
   /**
@@ -63,6 +76,25 @@ abstract class CurrentSearchItem {
   }
 
   /**
+   * Helper function for translating strings.
+   *
+   * @param string $key
+   *   The array key of the element being translated.
+   * @param string $string
+   *   The string being translated.
+   * @param array $options
+   *   An associative array of options passed to the translator module's string
+   *   translation function.
+   *
+   * @return
+   *   The translated string.
+   */
+  public function translate($key, $string, array $options = array()) {
+    $name = 'current_search:' . $this->configName . ':' . $this->name . ':' . $key;
+    return facetapi_translate_string($name, $string, $options);
+  }
+
+  /**
    * Returns "wrapper HTML" form elements.
    */
   public function wrapperForm(&$form, &$form_state) {
diff --git a/contrib/current_search/plugins/current_search/item_active.inc b/contrib/current_search/plugins/current_search/item_active.inc
index e85eb35..b39f9b4 100644
--- a/contrib/current_search/plugins/current_search/item_active.inc
+++ b/contrib/current_search/plugins/current_search/item_active.inc
@@ -34,8 +34,10 @@ class CurrentSearchItemActive extends CurrentSearchItem {
       $item['adapter'] = $adapter;
 
       // Builds variables to pass to theme function.
+      $text = $this->translate('pattern', $this->settings['pattern']);
+      $data = array('facetapi_active_item' => $item);
       $variables = array(
-        'text' => token_replace($this->settings['pattern'], array('facetapi_active_item' => $item)),
+        'text' => token_replace($text, $data),
         'path' => current_path(),
         'options' => array(
           'attributes' => $attributes,
diff --git a/contrib/current_search/plugins/current_search/item_group.inc b/contrib/current_search/plugins/current_search/item_group.inc
index 034fee3..8a322bc 100644
--- a/contrib/current_search/plugins/current_search/item_group.inc
+++ b/contrib/current_search/plugins/current_search/item_group.inc
@@ -61,8 +61,9 @@ class CurrentSearchGroup extends CurrentSearchItem {
         $build[$facet_name]['#theme_wrappers'] = array('current_search_group_wrapper');
 
         // Performs token replacemenets and themes the group title.
-        $facet = facetapi_facet_load($facet_name, $searcher);
-        $title = filter_xss(token_replace($this->settings['field_pattern'], array('facetapi_facet' => $facet)));
+        $text = $this->translate('field_pattern', $this->settings['field_pattern']);
+        $data = array('facetapi_facet' => facetapi_facet_load($facet_name, $searcher));
+        $title = filter_xss(token_replace($text, $data));
         $build[$facet_name]['title']['#markup'] = theme('current_search_group_title', array('title' => $title));
 
         // Builds the list.
diff --git a/contrib/current_search/plugins/current_search/item_text.inc b/contrib/current_search/plugins/current_search/item_text.inc
index b652ee4..f6ae312 100644
--- a/contrib/current_search/plugins/current_search/item_text.inc
+++ b/contrib/current_search/plugins/current_search/item_text.inc
@@ -14,9 +14,10 @@ class CurrentSearchItemText extends CurrentSearchItem {
    * Implements CurrentSearchItem::execute().
    */
   public function execute(FacetapiAdapter $adapter) {
+    $text = $this->translate('text', $this->settings['text']);
     $data = array('facetapi_adapter' => $adapter);
     $variables = array(
-      'text' => filter_xss(token_replace($this->settings['text'], $data)),
+      'text' => filter_xss(token_replace($text, $data)),
       'wrapper' => $this->settings['wrapper'],
       'element' => $this->settings['element'],
       'css' => $this->settings['css'],
diff --git a/contrib/current_search/plugins/export_ui/current_search_export_ui.class.php b/contrib/current_search/plugins/export_ui/current_search_export_ui.class.php
index 70541c4..8f0f380 100644
--- a/contrib/current_search/plugins/export_ui/current_search_export_ui.class.php
+++ b/contrib/current_search/plugins/export_ui/current_search_export_ui.class.php
@@ -387,7 +387,7 @@ function current_search_settings_form(&$form, &$form_state) {
   $has_settings = FALSE;
   foreach ($item->settings as $name => $settings) {
     if ($class = ctools_plugin_load_class('current_search', 'items', $settings['id'], 'handler')) {
-      $plugin = new $class($name, $settings);
+      $plugin = new $class($name, $item);
 
       // Initializes vertical tab for the item's settings.
       $form['plugin_settings'][$name] = array(
diff --git a/facetapi.module b/facetapi.module
index 4b1e342..fe5113f 100644
--- a/facetapi.module
+++ b/facetapi.module
@@ -991,6 +991,31 @@ function facetapi_facetapi_url_processors() {
 ////
 
 /**
+ * Translates a string via the translator module.
+ *
+ * @param $name
+ *   The name of the string in "textgroup:object_type:object_key:property_name"
+ *   format.
+ * @param $string
+ *   The string being translated.
+ * @param $options
+ *   An associative array of options passed to the translator module's string
+ *   translation function.
+ *
+ * @return
+ *   The translated string.
+ */
+function facetapi_translate_string($name, $string, array $options = array()) {
+  if ($module = variable_get('facetapi:translator_module', NULL)) {
+    $function = $module . '_facetapi_translate_string';
+    if (function_exists($function)) {
+      $string = $function($name, $string, $options);
+    }
+  }
+  return $string;
+}
+
+/**
  * Tests whether a searcher is active or not.
  *
  * @param $searcher
diff --git a/plugins/facetapi/empty_behavior.inc b/plugins/facetapi/empty_behavior.inc
index 2ef9034..065bf8e 100644
--- a/plugins/facetapi/empty_behavior.inc
+++ b/plugins/facetapi/empty_behavior.inc
@@ -11,6 +11,13 @@
 abstract class FacetapiEmptyBehavior {
 
   /**
+   * The machine readable name of facet configuration.
+   *
+   * @var string
+   */
+  protected $configName;
+
+  /**
    * An array of facet settings.
    *
    * @var array
@@ -21,6 +28,7 @@ abstract class FacetapiEmptyBehavior {
    * Initializes settings.
    */
   public function __construct(stdClass $settings) {
+    $this->configName = $settings->name;
     $this->settings = $settings->settings;
     $this->settings += $this->getDefaultSettings();
   }
@@ -46,6 +54,26 @@ abstract class FacetapiEmptyBehavior {
   public function getDefaultSettings() {
     return array();
   }
+
+  /**
+   * Helper function for translating strings.
+   *
+   * @param string $key
+   *   The array key of the element being translated.
+   * @param string $string
+   *   The string being translated.
+   * @param array $options
+   *   An associative array of options passed to the translator module's string
+   *   translation function.
+   *
+   * @return
+   *   The translated string.
+   */
+  public function translate($key, $string, array $options = array()) {
+    $config_name = preg_replace('@[^a-zA-Z0-9]@', '_', $this->configName);
+    $name = 'facetapi:' . $config_name . ':empty_text:' . $key;
+    return facetapi_translate_string($name, $string, $options);
+  }
 }
 
 /**
diff --git a/plugins/facetapi/empty_behavior_text.inc b/plugins/facetapi/empty_behavior_text.inc
index a50969d..04e159a 100644
--- a/plugins/facetapi/empty_behavior_text.inc
+++ b/plugins/facetapi/empty_behavior_text.inc
@@ -30,9 +30,9 @@ class FacetapiEmptyBehaviorText extends FacetapiEmptyBehavior {
    * Returns an empty array.
    */
   public function execute() {
-    $text = $this->settings['empty_text']['value'];
-    $format_id = $this->settings['empty_text']['format'];
-    return array('#markup' => check_markup($text, $format_id));
+    $options = array('format' => $this->settings['empty_text']['format']);
+    $text = $this->translate('empty_text', $this->settings['empty_text']['value'], $options);
+    return array('#markup' => check_markup($text, $options['format']));
   }
 
   /**
