The past few days I've been working on migrating content from a Drupal 10 site into another Drupal 10 site. For a few reasons I'm unable to do a complete site move where I would normally just copy the database and files over to the new server. I need to migrate the content over without copying the database.
My solution is to use the Feeds module, but I ran into trouble because the site content is in two languages: English and Spanish. It was tricky to figure out, so I'm documenting the process.
Some posts that helped me along:
https://www.drupal.org/project/feeds/issues/3256925
https://www.drupal.org/project/feeds/issues/3263803#comment-16008240
I'm testing this first with taxonomy terms, before I move on to node content.
Set up the Export View
- Create a view to export the data from source. You'll need to use the views data export module to do this.
- Views & feeds I'm using are set to export and import CSV data, although this should also work fine for JSON too.
- This is a taxonomy term view (of course).
- Fields in the view: term ID, Name, UUID
- Add filter criteria:
- published = true,
- vocabulary = [your vocab],
- translation language = English (or Spanish for 2nd run).
- On the view language setting, I have it set to “content language of view row".
- Create a URL for the feed. Mine is just "export/terms"
We will save this view first with the filter set to English, run the feed import, and then adjust the filter to Spanish and run it again.
Import to Target Site
Next go to target site to set up the feeds to import the data. Remember you'll need to install the Drupal language modules and create a new language for the target site before you import translated content. You'll also need to create the taxonomy vocabularies, either manually or using Drupal's configuration sync tools to import them from the source site. Once you've done that, you're ready to proceed with the feeds import.
You will first create a feed type, and then create the feed to actually run the data import.
Fetcher settings: Download from URL, Parser = CSV, Processor = Taxonomy Term (select your vocab). Note that the processor drop down is dynamic and additional fields will appear depending on what you choose. It took me a while to figure out I could change that to Taxonomy term and then select my vocabulary as an import target.

Also it seems that once you've set up this feed type, the Processor and Vocabulary are no longer changeable. To import another vocabulary, I had to create a completely new feed type. It would have been nice to run this once, and then be able to change the vocabulary to run it again. But I guess we have to make a new one for each vocabulary (and probably for each content type when we get there).
Processor settings:
First Run for English
- Language is set to English.
- Insert new taxonomy terms.
- Do not update existing taxonomy term
Second run for Spanish
- Language is set to Spanish.
- Do not insert new taxonomy terms.
- Update existing taxonomy term

Mapping:
Make sure you are using the CSV column sources under Source. On mine I was testing with JSON first and had some previously created custom source fields. It took a while to figure out that you cannot re-use JSON fields on CSV import. Also they cannot have the same machine names.
Also it took me a long time to realize that the configure column has a gear icon next to fields that can be set to language for the field. Match these to your view.
My fields:
- Term ID (tid)
- Name -- configure to set language
- UUID

Now that we've created the feed type, we need to add a new feed. Go to Content > Feeds and click "Add Feed". Select the Feed type that you just created. Give it a title and add the URL for the source data, then you can save and import the data.
Run the feed first for English -- assuming your source view is english content, and the feed type is set to english. Then for the Spanish content:
- adjust the source view filter to pull Spanish terms.
- adjust the feed to Spanish in the processor settings. Set to “do not insert new terms” & "update existing taxonomy terms"
- adjust mapping fields to Spanish
Run the import feed again for the Spanish terms. They should match up as translations of the English terms, and not appear as new terms.
Good Luck!
Still need help?
I'm available to help on any of your Drupal website projects. Feel free to contact me and let's talk about what you need!