function locale_translate_batch_import_files

Prepare a batch to import all translations.

@todo Integrate with update status to identify projects needed and integrate l10n_update functionality to feed in translation files alike. See http://drupal.org/node/1191488.

Parameters

array $options: An array with options that can have the following elements:

  • 'langcode': The language code. Optional, defaults to NULL, which means that the language will be detected from the name of the files.
  • 'overwrite_options': Overwrite options array as defined in Drupal\locale\PoDatabaseWriter. Optional, defaults to an empty array.
  • 'customized': Flag indicating whether the strings imported from $file are customized translations or come from a community source. Use LOCALE_CUSTOMIZED or LOCALE_NOT_CUSTOMIZED. Optional, defaults to LOCALE_NOT_CUSTOMIZED.
  • 'finish_feedback': Whether or not to give feedback to the user when the batch is finished. Optional, defaults to TRUE.

$force: (optional) Import all available files, even if they were imported before.

File

drupal/core/modules/locale/locale.bulk.inc, line 292
Mass import-export and batch import functionality for Gettext .po files.

Code

function locale_translate_batch_import_files($options, $force = FALSE) {
  $options += array(
    'overwrite_options' => array(),
    'customized' => LOCALE_NOT_CUSTOMIZED,
    'finish_feedback' => TRUE,
  );
  if (!empty($options['langcode'])) {
    $langcodes = array(
      $options['langcode'],
    );
  }
  else {

    // If langcode was not provided, make sure to only import files for the
    // languages we have enabled.
    $langcodes = array_keys(language_list());
  }
  $files = locale_translate_get_interface_translation_files(array(), $langcodes);
  if (!$force) {
    $result = db_select('locale_file', 'lf')
      ->fields('lf', array(
      'langcode',
      'uri',
      'timestamp',
    ))
      ->condition('langcode', $langcodes)
      ->execute()
      ->fetchAllAssoc('uri');
    foreach ($result as $uri => $info) {
      if (isset($files[$uri]) && filemtime($uri) <= $info->timestamp) {

        // The file is already imported and not changed since the last import.
        // Remove it from file list and don't import it again.
        unset($files[$uri]);
      }
    }
  }
  return locale_translate_batch_build($files, $options);
}