Index: sites/all/modules/contrib/session_favorites/session_favorites.module
===================================================================
--- sites/all/modules/contrib/session_favorites/session_favorites.module	(revision 68)
+++ sites/all/modules/contrib/session_favorites/session_favorites.module	(revision 69)
@@ -51,7 +51,8 @@
   $items[variable_get('session_favorites_path', 'session-favorites')] = array(
     'page callback'    => '_session_favorites_page',
     'access arguments' => array('maintain a session favorites list'),
-    'title'            => variable_get('session_favorites_title', t('My Favorites')),
+    'title_callback'   => '_session_favorites_text',
+    'title arguments'  => array('title'),
     'type'             => MENU_NORMAL_ITEM,
   );
 
@@ -157,30 +158,38 @@
     '#collapsible' => TRUE,
     '#collapsed' => FALSE,
   );
-  $form['session_favorites_page']['session_favorites_title'] = array(
-    '#type' => 'textfield',
-    '#title' => t('Page Title'),
-    '#description' => t('The title for the favorite\'s page.'),
-    '#default_value' => variable_get('session_favorites_title', t('My Favorites')),
-  );
-  $form['session_favorites_page']['session_favorites_header'] = array(
-    '#type' => 'textarea',
-    '#title' => t('Header Content'),
-    '#description' => t('This content will be displayed at the top of every <a href="!url">Session Favorites</a> page', array('!url' => url(variable_get('session_favorites_path', 'session-favorites')))),
-    '#default_value' => variable_get('session_favorites_header', ''),
-  );
-  $form['session_favorites_page']['session_favorites_footer'] = array(
-    '#type' => 'textarea',
-    '#title' => t('Footer Content'),
-    '#description' => t('This content will be displayed at the bottom of every <a href="!url">Session Favorites</a> page', array('!url' => url(variable_get('session_favorites_path', 'session-favorites')))),
-    '#default_value' => variable_get('session_favorites_footer', ''),
-  );
-  $form['session_favorites_page']['session_favorites_empty'] = array(
-    '#type' => 'textarea',
-    '#title' => t('No Favorites Content'),
-    '#description' => t('This text will be displayed on lists that don\'t have any entries.'),
-    '#default_value' => variable_get('session_favorites_empty', t('You haven\'t added any items to your favorites list')),
-  );
+  foreach (language_list() as $langcode => $language) {
+    $form['session_favorites_page'][$langcode] = array(
+      '#type' => 'fieldset',
+      '#title' => $language->name,
+      '#collapsible' => TRUE,
+      '#collapsed' => FALSE,
+    );
+    $form['session_favorites_page'][$langcode]['session_favorites_title_' . $langcode] = array(
+      '#type' => 'textfield',
+      '#title' => t('Page Title'),
+      '#description' => t('The title for the favorite\'s page.'),
+      '#default_value' => _session_favorites_text('title'),
+    );
+    $form['session_favorites_page'][$langcode]['session_favorites_header_' . $langcode] = array(
+      '#type' => 'textarea',
+      '#title' => t('Header Content'),
+      '#description' => t('This content will be displayed at the top of every <a href="!url">Session Favorites</a> page', array('!url' => url(variable_get('session_favorites_path', 'session-favorites')))),
+      '#default_value' => _session_favorites_text('header'),
+    );
+    $form['session_favorites_page'][$langcode]['session_favorites_footer_' . $langcode] = array(
+      '#type' => 'textarea',
+      '#title' => t('Footer Content'),
+      '#description' => t('This content will be displayed at the bottom of every <a href="!url">Session Favorites</a> page', array('!url' => url(variable_get('session_favorites_path', 'session-favorites')))),
+      '#default_value' => _session_favorites_text('footer'),
+    );
+    $form['session_favorites_page'][$langcode]['session_favorites_empty_' . $langcode] = array(
+      '#type' => 'textarea',
+      '#title' => t('No Favorites Content'),
+      '#description' => t('This text will be displayed on lists that don\'t have any entries.'),
+      '#default_value' => _session_favorites_text('empty'),
+    );
+  }
 
   // These settings are for viewing other visitors lists
   $form['session_favorites_page_other'] = array(
@@ -190,27 +199,35 @@
     '#collapsible' => TRUE,
     '#collapsed' => TRUE,
   );
-  $form['session_favorites_page_other']['session_favorites_title_other'] = array(
-    '#type' => 'textfield',
-    '#title' => t('Page Title'),
-    '#description' => t('The following variables are available: <em>@name</em>, which will be replaced with the visitor\'s name, if available via the Session Favorites Email module.'),
-    '#default_value' => variable_get('session_favorites_title_other', t('@name\'s Favorites')),
-  );
-  $form['session_favorites_page_other']['session_favorites_header_other'] = array(
-    '#type' => 'textarea',
-    '#title' => t('Header Content'),
-    '#default_value' => variable_get('session_favorites_header_other', ''),
-  );
-  $form['session_favorites_page_other']['session_favorites_footer_other'] = array(
-    '#type' => 'textarea',
-    '#title' => t('Footer Content'),
-    '#default_value' => variable_get('session_favorites_footer_other', ''),
-  );
-  $form['session_favorites_page_other']['session_favorites_empty_other'] = array(
-    '#type' => 'textarea',
-    '#title' => t('No Favorites Content'),
-    '#default_value' => variable_get('session_favorites_empty_other', t('This list does not have any entries')),
-  );
+  foreach (language_list() as $langcode => $language) {
+    $form['session_favorites_page_other'][$langcode] = array(
+      '#type' => 'fieldset',
+      '#title' => $language->name,
+      '#collapsible' => TRUE,
+      '#collapsed' => FALSE,
+    );
+    $form['session_favorites_page_other'][$langcode]['session_favorites_title_other_' . $langcode] = array(
+      '#type' => 'textfield',
+      '#title' => t('Page Title'),
+      '#description' => t('The following variables are available: <em>@name</em>, which will be replaced with the visitor\'s name, if available via the Session Favorites Email module.'),
+      '#default_value' => _session_favorites_text('title_other'),
+    );
+    $form['session_favorites_page_other'][$langcode]['session_favorites_header_other_' . $langcode] = array(
+      '#type' => 'textarea',
+      '#title' => t('Header Content'),
+      '#default_value' => _session_favorites_text('header_other'),
+    );
+    $form['session_favorites_page_other'][$langcode]['session_favorites_footer_other_' . $langcode] = array(
+      '#type' => 'textarea',
+      '#title' => t('Footer Content'),
+      '#default_value' => _session_favorites_text('footer_other'),
+    );
+    $form['session_favorites_page_other'][$langcode]['session_favorites_empty_other_' . $langcode] = array(
+      '#type' => 'textarea',
+      '#title' => t('No Favorites Content'),
+      '#default_value' => _session_favorites_text('empty_other'),
+    );
+  }
 
   $form['session_favorites_types'] = array(
     '#type' => 'fieldset',
@@ -281,8 +298,8 @@
   $list = session_favorites_get_list($sid);
   if (empty($list)) {
     return $own_list 
-      ? variable_get('session_favorites_empty', t('You haven\'t added any items to your favorites list'))
-      : variable_get('session_favorites_empty_other', t('This list does not have any entries'));
+      ? _session_favorites_text('empty')
+      : _session_favorites_text('empty_other');
   }
 
   // load nodes, if user has access
@@ -312,8 +329,8 @@
     $formatted[] = l($node->title, 'node/' . $node->nid) . $remove_link;
   }
 
-  $header = $own_list ? variable_get('session_favorites_header', '') : variable_get('session_favorites_header_other', '');
-  $footer = $own_list ? variable_get('session_favorites_footer', '') : variable_get('session_favorites_footer_other', '');
+  $header = $own_list ? _session_favorites_text('header') : _session_favorites_text('header_other');
+  $footer = $own_list ? _session_favorites_text('footer') : _session_favorites_text('footer_other');
 
   if (user_access('administer session favorites')) {
     $footer .= '<div class="admin-edit-link">' . l(t('Edit header/footer'), 'admin/settings/session-favorites') . '</div>';
@@ -321,8 +338,8 @@
 
   if (empty($formatted)) {
     $content = $own_list 
-      ? variable_get('session_favorites_empty', t("You haven't added any items to your favorites list"))
-      : variable_get('session_favorites_empty_other', t('This list does not have any entries'));
+      ? _session_favorites_text('empty')
+      : _session_favorites_text('empty_other');
   }
   else {
     $content = theme('item_list', $formatted);
@@ -533,15 +550,42 @@
  */
 function session_favorites_page_title($sid, $own_list = FALSE) {
   if ($own_list) {
-    return variable_get('session_favorites_title', t('My Favorites'));
+    return _session_favorites_text('title');
   }
   if (module_exists('session_favorites_email')) {
     // try to find a name
     $name = db_result(db_query("SELECT name FROM {session_favorites_email} WHERE sid = %d", $sid));
     if ($name) {
-      return t(variable_get('session_favorites_title_other', t("@name's Favorites")), array('@name' => $name));
+      return _session_favorites_text('title_other', NULL, array('@name' => $name));
     }
   }
 
   return t('Favorites list #@num', array('@num' => $sid));
 }
+
+function _session_favorites_text($key, $langcode = NULL, $variables = array()) {
+  if (!$langcode) {
+    global $language;
+    $langcode = $language->language;
+  }
+
+  if ($admin_setting = variable_get('session_favorites_' . $key . '_' . $langcode, FALSE)) {
+    // An admin setting overrides the default string.
+    return strtr($admin_setting, $variables);
+  }
+  else {
+    // No override, return default string.
+    switch ($key) {
+      case 'title':
+        return t('My Favorites', $variables, $langcode);
+      case 'title_other':
+        return t("@name's Favorites", $variables, $langcode);
+      case 'empty':
+        return t("You haven't added any items to your favorites list", $variables, $langcode);
+      case 'empty_other':
+        return t('This list does not have any entries', $variables, $langcode);
+      default:
+        return '';
+    }
+  }
+}
