Active
Project:
Feeds
Version:
8.x-3.x-dev
Component:
Code
Priority:
Normal
Category:
Support request
Assigned:
Unassigned
Issue tags:
Reporter:
Created:
11 Feb 2022 at 08:33 UTC
Updated:
11 Mar 2025 at 00:53 UTC
Jump to comment: Most recent, Most recent file
Comments
Comment #2
anybodyComment #3
megachriz@Anybody
Yes, it is possible. And there are different ways to do it. But since I don't do multilingual imports myself often, I don't have a step by step explanation ready on how to do it. What I remember is the following:
Finally, I know that there are some issues with multilingual imports, these are noted on https://www.drupal.org/project/feeds/issues/1960800#feeds-i18n.
This is what I wrote about multilingual support on the release notes of 8.x-3.0-alpha7:
There is also an other issue open in which documentation is requested: #3256925: Document how to import multilingual content. So perhaps we should close this one as a duplicate?
Comment #4
megachriz@Anybody
If you can sort out all different possibilities and write a step-by-step guide, that would be great!
Comment #5
anybody@MegaChriz thank you very, very much for your detailed reply! Great as always!
I'll try to, but can't guarantee it currently, as I'm busy in many projects, so if anyone from the community (perhaps even a non-developer) could pick this up, that would be great.
Yes, we can close this as duplicate, but perhaps the information on the module page feature list should already be added?
Comment #6
megachrizTagging issue with "multilanguage", so I can find this issue back as soon as I plan to focus on Feeds multilingual issues again.
Comment #7
Leif_S commented@MegaChriz: Just wanted to add that I am also very interested in importing content to different languages/translation sets
Comment #8
marksmith commentedAfter many trials, I have found a way to import multilingual content by Feeds. Since it appeared to me pretty complex to achieve, I share this with everyone looking for a solution. I imported multilingual content between two Drupal sites via JSON (Feeds extensible parser and JSON API Include modules), but I suppose it should work for other use cases as well.
As suggested in #3 above under 1, I could achieve multilingual import in two steps, by creating 2 different feed types (eg., feed_type_se (default language, sweedish), feed_type_en (the translated language)).
1. For feed_type_se (default language) I configure the feed type as follows:
- Language: Sweedish
- Insert new content items
- Update existing content items
When creating the feed, I provide the feed source in the default language, something like this:
https://sourcesite.se/se/jsonapi/node/article?jsonapi_include=1&filter%5Bfield_issue_reference.id%5D=a7d6789c-a2af-4ee7-819a-8206b9ce25e2
(I want to import a list of articles belonging to a journal issue, identified by the uuid a7d6789c-a2af-4ee7-819a-8206b9ce25e2)
2. For importing the translated content, I used this configuration while creating the feed type feed_type_en.
- Language: English
- Do not insert new content items (!)
- Update existing content items
Configure the map so that the translated items are mapped to the translated target fields, like source "title" is mapped to "title" in English, etc.
When creating the second feed, I provide the feed source in the translated language (here English), something like this:
https://sourcesite.se/en/jsonapi/node/article?jsonapi_include=1&filter%5Bfield_issue_reference.id%5D=a7d6789c-a2af-4ee7-819a-8206b9ce25e2
As for the unique field for the import to be mapped, I created a custom JSON ID field (field_json_id) on the target content type to be fed from the source. The source that will be imported into this field is the UUID as above (in JSON this appears as id of the source site item).
The tricky part is that this field_json_id, which is used as the unique field has to be marked as a translatable field (Users may translate this field) on the content type field setting. (Otherwise you get the "this title already exists" error message). And you should choose the translation language for the unique field as well, as in the image below.
Comment #9
ptmkenny commentedI tried to follow @marksmith's instructions, but my experience was a little different, so I'm going to write down what I did here.
I'm using the latest dev version of Feeds on Drupal 11.1.
I have a site with a default language of English and an additional language of Japanese.
I have a custom entity type Dinner with two translated fields, Apples and Oranges, and a third non-translated field, Broccoli.
First, I created a Feed Type "Dinner English". On the settings page, under "Processor" -> "Language", I selected English. Then, on the mappings, for the fields Apples and Oranges, which can be translated, I set the language to "English". Then I created a feed of this feed type and tested import; everything worked as expected.
Next, I created a Feed Type "Dinner Japanese". On the settings page, under "Processor" -> "Language", I selected Japanese. Then, on the mappings, for the fields Apples and Oranges, which can be translated, I set the language to "Japanese". Then I created a feed of this feed type and tested import; everything worked as expected.
Differences from what @marksmith reported:
I would be happy to make a docs page about this, but first I'd like to know why @marksmith and I needed different settings.
Comment #10
erwindeclerck commentedHi everybody,
I think I found the reason for this strange error: #3126351: A translation already exists for the specified language
This is what I do: I import nodes from an old Drupal 7 site with 3 languages: default Enlish and Dutch and French as secondary and third language.
I use separate feeds to import each language..
In each feed I provide the langcode mapped from the language of the translation.
In each feed I provide the tranlation_id which I gave the same language as the language of the translation. (tranlation_id is the id that grouped the translations in the old Drupal 7 site.)
After importing the first language the node table gets a line extra for each imported node
Langcode is the default language of that node.
When I import the second language this langcode first is overwritten by the language in the mapping and you get: (fr in this case)
Further up in the code the processor tries to create the second language but then discovers that fr already exists as the default language and stops with the message A translation already exists for the specified language
When I remove the langcode mapping in the second feed, the import works like charm!
Kind regards and thanks for this marvelous module.
Erwin