function LocaleConfigSubscriber::saveCustomizedTranslation
Same name in other branches
- 9 core/modules/locale/src/LocaleConfigSubscriber.php \Drupal\locale\LocaleConfigSubscriber::saveCustomizedTranslation()
- 8.9.x core/modules/locale/src/LocaleConfigSubscriber.php \Drupal\locale\LocaleConfigSubscriber::saveCustomizedTranslation()
- 11.x core/modules/locale/src/LocaleConfigSubscriber.php \Drupal\locale\LocaleConfigSubscriber::saveCustomizedTranslation()
Saves a translation string and marks it as customized.
Parameters
string $name: The configuration name.
string $source: The source string value.
string $context: The source string context.
string $new_translation: The translation string.
string $langcode: The language code of the translation.
2 calls to LocaleConfigSubscriber::saveCustomizedTranslation()
- LocaleConfigSubscriber::processTranslatableData in core/
modules/ locale/ src/ LocaleConfigSubscriber.php - Process the translatable data array with a given language.
- LocaleConfigSubscriber::resetExistingTranslations in core/
modules/ locale/ src/ LocaleConfigSubscriber.php - Reset existing locale translations to their source values.
File
-
core/
modules/ locale/ src/ LocaleConfigSubscriber.php, line 216
Class
- LocaleConfigSubscriber
- Updates strings translation when configuration translations change.
Namespace
Drupal\localeCode
protected function saveCustomizedTranslation($name, $source, $context, $new_translation, $langcode) {
$locale_translation = $this->localeConfigManager
->getStringTranslation($name, $langcode, $source, $context);
if (!empty($locale_translation)) {
// If this code is triggered during installation never set the translation
// to the source string.
if (InstallerKernel::installationAttempted() && $source === $new_translation) {
return;
}
// Save this translation as custom if it was a new translation and not the
// same as the source. (The interface prefills translation values with the
// source). Or if there was an existing (non-empty) translation and the
// user changed it (even if it was changed back to the original value).
// Otherwise the translation file would be overwritten with the locale
// copy again later.
$existing_translation = $locale_translation->getString();
if ($locale_translation->isNew() && $source != $new_translation || !$locale_translation->isNew() && (empty($existing_translation) && $source != $new_translation || !empty($existing_translation) && $new_translation != $existing_translation)) {
$locale_translation->setString($new_translation)
->setCustomized(TRUE)
->save();
}
}
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.