You are here

function _locale_import_one_string in Drupal 6

Same name and namespace in other branches
  1. 4 includes/locale.inc \_locale_import_one_string()
  2. 5 includes/locale.inc \_locale_import_one_string()
  3. 7 includes/locale.inc \_locale_import_one_string()

Imports a string into the database

Parameters

$op: Operation to perform: 'db-store', 'db-report', 'mem-store' or 'mem-report'

$value: Details of the string stored

$mode: Should existing translations be replaced LOCALE_IMPORT_KEEP or LOCALE_IMPORT_OVERWRITE

$lang: Language to store the string in

$file: Object representation of file being imported, only required when op is 'db-store'

$group: Text group to import PO file into (eg. 'default' for interface translations)

Related topics

3 calls to _locale_import_one_string()
st in includes/install.inc
Hardcoded function for doing the equivalent of t() during the install process, when database, theme, and localization system is possibly not yet available.
_locale_import_po in includes/locale.inc
Parses Gettext Portable Object file information and inserts into database
_locale_import_read_po in includes/locale.inc
Parses Gettext Portable Object file into an array

File

includes/locale.inc, line 1266
Administration functions for locale.module.

Code

function _locale_import_one_string($op, $value = NULL, $mode = NULL, $lang = NULL, $file = NULL, $group = 'default') {
  static $report = array(
    'additions' => 0,
    'updates' => 0,
    'deletes' => 0,
    'skips' => 0,
  );
  static $headerdone = FALSE;
  static $strings = array();
  switch ($op) {

    // Return stored strings
    case 'mem-report':
      return $strings;

    // Store string in memory (only supports single strings)
    case 'mem-store':
      $strings[$value['msgid']] = $value['msgstr'];
      return;

    // Called at end of import to inform the user
    case 'db-report':
      return array(
        $headerdone,
        $report['additions'],
        $report['updates'],
        $report['deletes'],
        $report['skips'],
      );

    // Store the string we got in the database.
    case 'db-store':

      // We got header information.
      if ($value['msgid'] == '') {
        $languages = language_list();
        if ($mode != LOCALE_IMPORT_KEEP || empty($languages[$lang]->plurals)) {

          // Since we only need to parse the header if we ought to update the
          // plural formula, only run this if we don't need to keep existing
          // data untouched or if we don't have an existing plural formula.
          $header = _locale_import_parse_header($value['msgstr']);

          // Get and store the plural formula if available.
          if (isset($header["Plural-Forms"]) && ($p = _locale_import_parse_plural_forms($header["Plural-Forms"], $file->filename))) {
            list($nplurals, $plural) = $p;
            db_query("UPDATE {languages} SET plurals = %d, formula = '%s' WHERE language = '%s'", $nplurals, $plural, $lang);
          }
        }
        $headerdone = TRUE;
      }
      else {

        // Some real string to import.
        $comments = _locale_import_shorten_comments(empty($value['#']) ? array() : $value['#']);
        if (strpos($value['msgid'], "\0")) {

          // This string has plural versions.
          $english = explode("\0", $value['msgid'], 2);
          $entries = array_keys($value['msgstr']);
          for ($i = 3; $i <= count($entries); $i++) {
            $english[] = $english[1];
          }
          $translation = array_map('_locale_import_append_plural', $value['msgstr'], $entries);
          $english = array_map('_locale_import_append_plural', $english, $entries);
          foreach ($translation as $key => $trans) {
            if ($key == 0) {
              $plid = 0;
            }
            $plid = _locale_import_one_string_db($report, $lang, $english[$key], $trans, $group, $comments, $mode, $plid, $key);
          }
        }
        else {

          // A simple string to import.
          $english = $value['msgid'];
          $translation = $value['msgstr'];
          _locale_import_one_string_db($report, $lang, $english, $translation, $group, $comments, $mode);
        }
      }
  }

  // end of db-store operation
}