You are here

function i18n_panels_i18n_string_list in Panels 7.3

Implements hook_i18n_string_list().

@todo Figure out a generic solution to fetch exported displays.

File

i18n_panels/i18n_panels.module, line 303
Internationalization (i18n) submodule: Panels translation.

Code

function i18n_panels_i18n_string_list($group) {
  $strings = array();
  if ($group == 'panels') {

    // Fetch all available displays.
    $displays = _18n_panels_fetch_all_panel_displays();
    foreach ($displays as $display) {
      if (empty($display->uuid)) {
        drupal_set_message(t('The display %display has no uuid, please resave or re-export it.', array(
          '%display' => $display->did,
        )), 'warning');
        continue;
      }

      // Avoid duplicated runs _18n_panels_fetch_all_panel_displays() probably
      // returns the same display twice, one for the db based and one for the
      // exported one.
      if (isset($strings['panels']['display_configuration'][$display->uuid])) {
        continue;
      }
      $strings['panels']['display_configuration'][$display->uuid]['title']['string'] = $display->title;
      foreach ($display->content as $pane) {
        if (empty($pane->uuid)) {

          // Fetch exported uuid and validate it.
          $uuid = str_replace('new-', '', $pane->pid);
          if (!ctools_uuid_is_valid($uuid)) {
            drupal_set_message(t('The pane %pane has no uuid, please resave or re-export it.', array(
              '%pane' => $pane->pid,
            )), 'warning');
            continue;
          }
          $pane->uuid = $uuid;
        }
        if ($translation_object = i18n_panels_get_i18n_translation_object($pane)) {

          // Split up all strings and add them to the list.
          $pane_strings = (array) $translation_object;
          unset($pane_strings['panels_i18n_settings']);
          foreach ($pane_strings as $key => $pane_string) {
            $strings['panels']['pane_configuration'][$pane->uuid][$key] = $pane_string;
          }
        }
      }
    }
  }
  return $strings;
}