Implements \Drupal\Core\TypedData\TranslatableInterface::getTranslationLanguages().
Overrides Entity::getTranslationLanguages
public function getTranslationLanguages($include_default = TRUE) {
$translations = array();
$definitions = $this
->getPropertyDefinitions();
// Build an array with the translation langcodes set as keys. Empty
// translations should not be included and must be skipped.
foreach ($this
->getProperties() as $name => $property) {
foreach ($this->fields[$name] as $langcode => $field) {
if (!$field
->isEmpty()) {
$translations[$langcode] = TRUE;
}
if (isset($this->values[$name])) {
foreach ($this->values[$name] as $langcode => $values) {
// If a value is there but the field object is empty, it has been
// unset, so we need to skip the field also.
if ($values && !empty($definitions[$name]['translatable']) && !(isset($this->fields[$name][$langcode]) && $this->fields[$name][$langcode]
->isEmpty())) {
$translations[$langcode] = TRUE;
}
}
}
}
}
// We include the default language code instead of the
// Language::LANGCODE_DEFAULT constant.
unset($translations[Language::LANGCODE_DEFAULT]);
if ($include_default) {
$translations[$this
->language()->langcode] = TRUE;
}
// Now load language objects based upon translation langcodes.
return array_intersect_key(language_list(Language::STATE_ALL), $translations);
}