5.x install.inc st($string, $args = array())
6.x install.inc st($string, $args = array())
7.x install.inc st($string, array $args = array(), array $options = array())

Translates a string when some systems are not available.

Used during the install process, when database, theme, and localization system is possibly not yet available.

Use t() if your code will never run during the Drupal installation phase. Use st() if your code will only run during installation and never any other time. Use get_t() if your code could run in either circumstance.

See also



Related topics

35 calls to st()
DatabaseTasks::checkEngineVersion in includes/install.inc
Check the engine version.
DatabaseTasks::getFormOptions in includes/install.inc
Return driver specific configuration options.
DatabaseTasks::runTestQuery in includes/install.inc
Run SQL tests to ensure the database can execute commands with the current user.
DatabaseTasks::validateDatabaseSettings in includes/install.inc
Validates driver specific configuration settings.
DatabaseTasks_mysql::name in includes/database/mysql/install.inc
Returns a human-readable name string for MySQL and equivalent databases.

... See full list

1 string reference to 'st'
get_t in includes/bootstrap.inc
Returns the name of the proper localization function.


includes/install.inc, line 1119
API functions for installing modules and themes.


function st($string, array $args = array(), array $options = array()) {
  static $locale_strings = NULL;
  global $install_state;
  if (empty($options['context'])) {
    $options['context'] = '';
  if (!isset($locale_strings)) {
    $locale_strings = array();
    if (isset($install_state['parameters']['profile']) && isset($install_state['parameters']['locale'])) {

      // If the given locale was selected, there should be at least one .po file
      // with its name ending in {$install_state['parameters']['locale']}.po
      // This might or might not be the entire filename. It is also possible
      // that multiple files end with the same extension, even if unlikely.
      $po_files = file_scan_directory('./profiles/' . $install_state['parameters']['profile'] . '/translations', '/' . $install_state['parameters']['locale'] . '\\.po$/', array(
        'recurse' => FALSE,
      if (count($po_files)) {
        require_once DRUPAL_ROOT . '/includes/locale.inc';
        foreach ($po_files as $po_file) {
          _locale_import_read_po('mem-store', $po_file);
        $locale_strings = _locale_import_one_string('mem-report');

  // Transform arguments before inserting them
  foreach ($args as $key => $value) {
    switch ($key[0]) {

      // Escaped only
      case '@':
        $args[$key] = check_plain($value);

        // Escaped and placeholder

      // Escaped and placeholder
      case '%':
        $args[$key] = '<em>' . check_plain($value) . '</em>';

        // Pass-through

      // Pass-through
      case '!':
  return strtr(!empty($locale_strings[$options['context']][$string]) ? $locale_strings[$options['context']][$string] : $string, $args);


Barrett’s picture

This has been removed in D8, just use t() instead. https://drupal.org/node/2021435