diff --git a/feeds_ui/feeds_ui.admin.inc b/feeds_ui/feeds_ui.admin.inc
index a8e1bfb..099da27 100644
--- a/feeds_ui/feeds_ui.admin.inc
+++ b/feeds_ui/feeds_ui.admin.inc
@@ -560,6 +560,14 @@ function feeds_ui_mapping_form($form, &$form_state, $importer) {
'#type' => 'select',
'#options' => array('' => t('Select a target')) + $target_options,
);
+
+ if (module_exists('locale')) {
+ $form['language'] = array(
+ '#type' => 'select',
+ '#options' => array(LANGUAGE_NONE => t('All languages')) + locale_language_list('name'),
+ );
+ }
+
$form['add'] = array(
'#type' => 'submit',
'#value' => t('Add'),
@@ -570,6 +578,7 @@ function feeds_ui_mapping_form($form, &$form_state, $importer) {
'#value' => t('Save'),
'#attributes' => array('class' => array('feeds-ui-hidden-submit')),
);
+
return $form;
}
@@ -584,6 +593,7 @@ function feeds_ui_mapping_form_add_submit($form, &$form_state) {
'source' => $form_state['values']['source'],
'target' => $form_state['values']['target'],
'unique' => FALSE,
+ 'language' => isset($form_state['values']['language']) ? $form_state['values']['language'] : LANGUAGE_NONE,
);
$importer->processor->addConfig(array('mappings' => $mappings));
$importer->processor->save();
@@ -778,6 +788,7 @@ function theme_feeds_ui_mapping_form($variables) {
$header = array(
t('Source'),
t('Target'),
+ t('Language'),
t('Unique target'),
' ',
);
@@ -787,9 +798,11 @@ function theme_feeds_ui_mapping_form($variables) {
// Some parsers do not define source options.
$source = isset($form['source']['#options'][$mapping['source']]) ? $form['source']['#options'][$mapping['source']] : $mapping['source'];
$target = isset($form['target']['#options'][$mapping['target']]) ? check_plain($form['target']['#options'][$mapping['target']]) : '' . t('Missing') . '';
+ $language = isset($form['language']['#options'][$mapping['language']]) ? check_plain($form['language']['#options'][$mapping['language']]) : '' . t('All languages') . '';
$rows[] = array(
check_plain($source),
$target,
+ $language,
drupal_render($form['unique_flags'][$i]),
drupal_render($form['remove_flags'][$i]),
);
@@ -798,7 +811,7 @@ function theme_feeds_ui_mapping_form($variables) {
if (!count($rows)) {
$rows[] = array(
array(
- 'colspan' => 4,
+ 'colspan' => 5,
'data' => t('No mappings defined.'),
),
);
@@ -806,6 +819,7 @@ function theme_feeds_ui_mapping_form($variables) {
$rows[] = array(
drupal_render($form['source']),
drupal_render($form['target']),
+ drupal_render($form['language']),
'',
drupal_render($form['add']),
);
diff --git a/mappers/field.inc b/mappers/field.inc
index c6cf999..fe98da4 100644
--- a/mappers/field.inc
+++ b/mappers/field.inc
@@ -106,16 +106,21 @@ function _field_feeds_set_target($source, $entity, $target, $value, $input_forma
$info = field_info_field($target);
+ // Set the language of the field depending on the mapping.
+ $language = isset($mapping['language']) ? $mapping['language'] : LANGUAGE_NONE;
+
// Iterate over all values.
$i = 0;
$field = isset($entity->$target) ? $entity->$target : array();
foreach ($value as $v) {
if (!is_array($v) && !is_object($v)) {
$field['und'][$i]['value'] = $v;
+ $field[$language][$i]['value'] = $v;
}
if ($input_format) {
if (isset($format)) {
$field['und'][$i]['format'] = $format;
+ $field[$language][$i]['format'] = $format;
}
}
if ($info['cardinality'] == 1) {