1 gettext.inc | _locale_import_one_string_db(&$report, $langcode, $context, $source, $translation, $location, $mode, $plid = 0, $plural = 0) |
Imports one string into the database.
Parameters
$report: Report array summarizing the number of changes done in the form: array(inserts, updates, deletes).
$langcode: Language code to import string into.
$context: The context of this string.
$source: Source string.
$translation: Translation to language specified in $langcode.
$location: Location value to save with source string.
$mode: Import mode to use, LOCALE_IMPORT_KEEP or LOCALE_IMPORT_OVERWRITE.
$plid: Optional plural ID to use.
$plural: Optional plural value to use.
Return value
The string ID of the existing string modified or the new string added.:
Related topics
File
- core/
includes/ gettext.inc, line 491 - Gettext parsing and generating API.
Code
function _locale_import_one_string_db(&$report, $langcode, $context, $source, $translation, $location, $mode, $plid = 0, $plural = 0) {
$lid = db_query("SELECT lid FROM {locales_source} WHERE source = :source AND context = :context", array(':source' => $source, ':context' => $context))->fetchField();
if (!empty($translation)) {
// Skip this string unless it passes a check for dangerous code.
if (!locale_string_is_safe($translation)) {
watchdog('locale', 'Import of string "%string" was skipped because of disallowed or malformed HTML.', array('%string' => $translation), WATCHDOG_ERROR);
$report['skips']++;
$lid = 0;
}
elseif ($lid) {
// We have this source string saved already.
db_update('locales_source')
->fields(array(
'location' => $location,
))
->condition('lid', $lid)
->execute();
$exists = db_query("SELECT COUNT(lid) FROM {locales_target} WHERE lid = :lid AND language = :language", array(':lid' => $lid, ':language' => $langcode))->fetchField();
if (!$exists) {
// No translation in this language.
db_insert('locales_target')
->fields(array(
'lid' => $lid,
'language' => $langcode,
'translation' => $translation,
'plid' => $plid,
'plural' => $plural,
))
->execute();
$report['additions']++;
}
elseif ($mode == LOCALE_IMPORT_OVERWRITE) {
// Translation exists, only overwrite if instructed.
db_update('locales_target')
->fields(array(
'translation' => $translation,
'plid' => $plid,
'plural' => $plural,
))
->condition('language', $langcode)
->condition('lid', $lid)
->execute();
$report['updates']++;
}
}
else {
// No such source string in the database yet.
$lid = db_insert('locales_source')
->fields(array(
'location' => $location,
'source' => $source,
'context' => (string) $context,
))
->execute();
db_insert('locales_target')
->fields(array(
'lid' => $lid,
'language' => $langcode,
'translation' => $translation,
'plid' => $plid,
'plural' => $plural
))
->execute();
$report['additions']++;
}
}
elseif ($mode == LOCALE_IMPORT_OVERWRITE) {
// Empty translation, remove existing if instructed.
db_delete('locales_target')
->condition('language', $langcode)
->condition('lid', $lid)
->condition('plid', $plid)
->condition('plural', $plural)
->execute();
$report['deletes']++;
}
return $lid;
}