diff --git a/xmlsitemap.module b/xmlsitemap.module index 49e5f80..e70f8fc 100644 --- a/xmlsitemap.module +++ b/xmlsitemap.module @@ -1623,7 +1623,6 @@ function xmlsitemap_link_enqueue($type, $ids) { * * If entity_translation is available the languages are determined by using the * translation handler, otherwise it falls back to the default language. - * Only the language of published translations are returned. * * @param string $entity_type * The type of entity. @@ -1646,17 +1645,14 @@ function xmlsitemap_get_entity_languages($entity_type, $entity, $default_languag $languages = array(); $translations = $handler->getTranslations(); foreach ($translations->data as $translation_lang => $translation_data) { - if (!empty($translation_data['status'])) { - $languages[$translation_lang] = $translation_lang; - } - } - // Also for languages for entities not yet translated. - if (variable_get('locale_field_language_fallback', TRUE) && variable_get('xmlsitemap_language_fallback', TRUE)) { - // Retrieve all active languages in the site. - $available_languages = locale_language_list('language'); - // Add languages for entities not yet translated. - $languages += array_diff_key($available_languages, $languages); + $languages[$translation_lang] = (int) $translation_data['status']; } + // Detect allowing fallback for languages for entities not yet translated. + $fallback = (int) (variable_get('locale_field_language_fallback', TRUE) && variable_get('xmlsitemap_language_fallback', TRUE)); + // Retrieve all active languages in the site. + $available_languages = locale_language_list('language'); + // Add languages for entities not yet translated. + $languages += array_fill_keys(array_diff_key($available_languages, $languages), $fallback); return $languages; } } diff --git a/xmlsitemap_node/xmlsitemap_node.module b/xmlsitemap_node/xmlsitemap_node.module index f95cde7..e7c8035 100644 --- a/xmlsitemap_node/xmlsitemap_node.module +++ b/xmlsitemap_node/xmlsitemap_node.module @@ -56,9 +56,11 @@ function xmlsitemap_node_node_insert(stdClass $node) { function xmlsitemap_node_node_update(stdClass $node) { $link = xmlsitemap_node_create_link($node); if (!empty($link['languages'])) { - foreach ($link['languages'] as $lang) { + $link_status = (int) $link['status']; + foreach ($link['languages'] as $lang => $lang_status) { $lang_link = $link; $lang_link['language'] = $lang; + $lang_link['status'] = (int) ($link_status && $lang_status); xmlsitemap_link_save($lang_link, array($link['type'] => $node)); } } diff --git a/xmlsitemap_taxonomy/xmlsitemap_taxonomy.module b/xmlsitemap_taxonomy/xmlsitemap_taxonomy.module index 7a24ce8..8baaa61 100644 --- a/xmlsitemap_taxonomy/xmlsitemap_taxonomy.module +++ b/xmlsitemap_taxonomy/xmlsitemap_taxonomy.module @@ -114,9 +114,11 @@ function xmlsitemap_taxonomy_term_insert(stdClass $term) { function xmlsitemap_taxonomy_term_update(stdClass $term) { $link = xmlsitemap_taxonomy_create_link($term); if (!empty($link['languages'])) { - foreach ($link['languages'] as $lang) { + $link_status = (int) $link['status']; + foreach ($link['languages'] as $lang => $lang_status) { $lang_link = $link; $lang_link['language'] = $lang; + $lang_link['status'] = (int) ($link_status && $lang_status); xmlsitemap_link_save($lang_link, array($link['type'] => $term)); } }