function _locale_import_po in Drupal 6
Same name and namespace in other branches
- 4 includes/locale.inc \_locale_import_po()
- 5 includes/locale.inc \_locale_import_po()
- 7 includes/locale.inc \_locale_import_po()
Parses Gettext Portable Object file information and inserts into database
Parameters
$file: Drupal file object corresponding to the PO file to import
$langcode: Language code
$mode: Should existing translations be replaced LOCALE_IMPORT_KEEP or LOCALE_IMPORT_OVERWRITE
$group: Text group to import PO file into (eg. 'default' for interface translations)
Related topics
1 call to _locale_import_po()
- locale_translate_import_form_submit in includes/
locale.inc - Process the locale import form submission.
File
- includes/
locale.inc, line 1038 - Administration functions for locale.module.
Code
function _locale_import_po($file, $langcode, $mode, $group = NULL) {
// Try to allocate enough time to parse and import the data.
if (function_exists('set_time_limit')) {
@set_time_limit(240);
}
// Check if we have the language already in the database.
if (!db_fetch_object(db_query("SELECT language FROM {languages} WHERE language = '%s'", $langcode))) {
drupal_set_message(t('The language selected for import is not supported.'), 'error');
return FALSE;
}
// Get strings from file (returns on failure after a partial import, or on success)
$status = _locale_import_read_po('db-store', $file, $mode, $langcode, $group);
if ($status === FALSE) {
// Error messages are set in _locale_import_read_po().
return FALSE;
}
// Get status information on import process.
list($headerdone, $additions, $updates, $deletes, $skips) = _locale_import_one_string('db-report');
if (!$headerdone) {
drupal_set_message(t('The translation file %filename appears to have a missing or malformed header.', array(
'%filename' => $file->filename,
)), 'error');
}
// Clear cache and force refresh of JavaScript translations.
_locale_invalidate_js($langcode);
cache_clear_all('locale:', 'cache', TRUE);
// Rebuild the menu, strings may have changed.
menu_rebuild();
drupal_set_message(t('The translation was successfully imported. There are %number newly created translated strings, %update strings were updated and %delete strings were removed.', array(
'%number' => $additions,
'%update' => $updates,
'%delete' => $deletes,
)));
watchdog('locale', 'Imported %file into %locale: %number new strings added, %update updated and %delete removed.', array(
'%file' => $file->filename,
'%locale' => $langcode,
'%number' => $additions,
'%update' => $updates,
'%delete' => $deletes,
));
if ($skips) {
$skip_message = format_plural($skips, 'One translation string was skipped because it contains disallowed HTML.', '@count translation strings were skipped because they contain disallowed HTML.');
drupal_set_message($skip_message);
watchdog('locale', $skip_message, NULL, WATCHDOG_WARNING);
}
return TRUE;
}