diff -u b/feeds.module b/feeds.module --- b/feeds.module +++ b/feeds.module @@ -919,7 +919,7 @@ list($field_name) = explode(':', $mapping['target']); $info = field_info_field($field_name); if ($info['translatable']) { - $language_options = array(LANGUAGE_NONE => t('All languages')) + locale_language_list('name'); + $language_options = feeds_mapper_options_language(); if (empty($mapping['language'])) { return t('Language: @search', array('@search' => $language_options[LANGUAGE_NONE])); } @@ -954,12 +954,12 @@ list($field_name) = explode(':', $mapping['target']); $info = field_info_field($field_name); if ($info['translatable']) { - $language_options = array(LANGUAGE_NONE => t('All languages')) + locale_language_list('name'); $form['language'] = array( '#type' => 'select', '#title' => t('Language'), - '#options' => $language_options, + '#options' => feeds_mapper_options_language(), '#default_value' => !empty($mapping['language']) ? $mapping['language'] : LANGUAGE_NONE, + '#description' => t('You can select particular field language (or language nautral) or use language code saved in entity\'s language property (e.g. $node->language) you set by some mapper above.'), ); } } @@ -967,6 +967,16 @@ } /** + * Return options list of language options for target configuration. + */ +function feeds_mapper_options_language() { + return array( + 'from_property' => t('Use language property'), + LANGUAGE_NONE => t('Language neutral'), + ) + locale_language_list('name'); +} + +/** * @} */ diff -u b/mappers/file.inc b/mappers/file.inc --- b/mappers/file.inc +++ b/mappers/file.inc @@ -61,6 +61,7 @@ // Set the language of the field depending on the mapping configuration. $langcode = isset($mapping['language']) ? $mapping['language'] : LANGUAGE_NONE; + if ($langcode == 'from_property') $langcode = $entity->language; if ($sub_field == 'uri') { diff -u b/mappers/link.inc b/mappers/link.inc --- b/mappers/link.inc +++ b/mappers/link.inc @@ -53,6 +53,7 @@ // Set the language of the field depending on the mapping configuration. $langcode = isset($mapping['language']) ? $mapping['language'] : LANGUAGE_NONE; + if ($langcode == 'from_property') $langcode = $entity->language; foreach ($values as $value) { if (is_object($value) && ($value instanceof FeedsElement)) { diff -u b/mappers/number.inc b/mappers/number.inc --- b/mappers/number.inc +++ b/mappers/number.inc @@ -42,6 +42,7 @@ function number_feeds_set_target($source, $entity, $target, array $values, $mapping = array()) { // Set the language of the field depending on the mapping configuration. $langcode = isset($mapping['language']) ? $mapping['language'] : LANGUAGE_NONE; + if ($langcode == 'from_property') $langcode = $entity->language; // Iterate over all values. $field = isset($entity->$target) ? $entity->$target : array($langcode => array()); diff -u b/mappers/taxonomy.inc b/mappers/taxonomy.inc --- b/mappers/taxonomy.inc +++ b/mappers/taxonomy.inc @@ -91,6 +91,7 @@ ); // Grab the language for convenience $langcode = $mapping['language']; + if ($langcode == 'from_property') $langcode = $entity->language; $info = field_info_field($target); diff -u b/mappers/text.inc b/mappers/text.inc --- b/mappers/text.inc +++ b/mappers/text.inc @@ -62,6 +62,7 @@ // Set the language of the field depending on the mapping configuration. $langcode = isset($mapping['language']) ? $mapping['language'] : LANGUAGE_NONE; + if ($langcode == 'from_property') $langcode = $entity->language; $field = isset($entity->$target) ? $entity->$target : array($langcode => array());