WooCommerce Multilingual: How to Export and Import Product Translations (WPML)

NEW: WooCommerce Multilingual: Translate Products Using Generative AI

Transferring WooCommerce product translations between a CSV file and your store doesn’t need to be complicated. WooCommerce Multilingual’s built-in tools don’t include a direct method for importing translated product content from spreadsheets, and the default WooCommerce importer was built for single-language stores, not multilingual ones. This tutorial walks you through a practical workflow: export the products that need translation into a clean CSV, send that file to your translator, and import the completed translations back into WooCommerce using the WooCommerce Products Spreadsheet plugin. Your translator never needs to log into WordPress, and you skip the manual copy-paste work entirely.

Quick Summary

Goal Export WooCommerce product content to CSV, have a translator work on it offline, and import the translations back via WooCommerce Multilingual by WPML
Plugin needed WooCommerce Products Spreadsheet (WP Sheet Editor)
Prerequisites WooCommerce Multilingual (WPML) with secondary languages configured; product duplicates created in target languages (covered in step 1)
Key steps 1. Create translation duplicates, 2. Switch WooCommerce Multilingual to target language, 3. Export selected columns to CSV, 4. Translator edits the file, 5. Import CSV back into same language context, 6. Verify
CSV editors supported Excel, Google Sheets, LibreOffice Calc, or any CSV-compatible editor
What to protect in the CSV Product ID, SKU, prices, stock fields, image URLs, and internal slugs (instruct your translator not to modify these)

Why this workflow saves hours on translation projects

When you hire a translator for your WooCommerce catalog, the standard approach is frustrating: either you give them WordPress access (which most translators don’t want and introduces security considerations), or you copy and paste every product title and description by hand. A spreadsheet-based method removes both problems.

The workflow has three phases. First, you create copies of your original-language products in each target language using the bulk duplicate tool. Second, you export only the translatable columns (name, description, short description, URL slug) into a CSV file and send it to your translator. Third, once they return the file, you import it back and the plugin updates the correct language versions automatically by matching product IDs.

The key advantage is that the translator works entirely offline with familiar spreadsheet software. They don’t need to understand WordPress, WooCommerce Multilingual, or WooCommerce. You also keep full control over which fields are exposed: operational columns like SKUs, prices, and stock levels stay out of the file entirely if you choose not to export them.

What you’ll need before starting

Make sure these are in place before you begin the export-import process:

  • WPML is installed and configured with at least one secondary language active (for example, English as the default plus Spanish as a translation target).
  • WooCommerce Products Spreadsheet is installed and activated on your site.
  • Your original-language products exist in WooCommerce with complete content in the default language.
  • Product translation duplicates have been created in the target language(s). If you haven’t done this yet, continue to step 1 below.

Step 1. Create the product translations

Before you can export translations for editing, each product needs a corresponding post in the target language. These are duplicates of the original product that WPML recognizes as belonging to a specific language. You can generate these in bulk using the “Bulk Edit” tool inside the WooCommerce Products Spreadsheet plugin.

This step creates the structure WPML needs: a product post for each language, linked together by a shared translation group. Without this, there is nothing to import translations into.

Follow the first three steps of this tutorial:

That linked guide shows you how to select products in the spreadsheet, use the duplicate tool to copy them into another language, and verify that WPML recognizes the new language versions. Once you complete those steps, return here to continue with the export.

Step 2. Switch WooCommerce Multilingual to the target language you want to export

When you finish creating the translation duplicates, your store now contains product posts in multiple languages. The WooCommerce Products Spreadsheet displays products based on the currently active WPML language, so you need to tell it which language’s content to show and export.

In the WordPress admin bar at the top of the screen, locate the WPML language switcher. Select the language whose translations you want to export. For example, if your translator will be working on the Spanish versions, select Spanish.

WPML admin toolbar language switcher with Spanish selected as the active language for exporting product translations

This step is critical. If you leave WPML set to the default language, you will export your original products instead of the translation copies. Always double-check the active language before running any export or import operation.

Step 3. Export the product translations to a CSV file

With the correct language selected, open the WooCommerce Products Spreadsheet and click the Export button on the top toolbar.

Export button highlighted on the WordPress admin top toolbar within the WooCommerce Products Spreadsheet interface

The export tool opens with several configuration options. Set them as follows:

Export configuration screen showing column selection, checkbox confirmation, and optional export name field

  • What columns do you want to export: Select only the columns containing translatable content. The four essential ones are ID, Name, Short Description, Description, and URL Slug. Select additional columns if you also want translations for SEO metadata, custom fields, or attribute values.
  • I understand it will export all the rows from my current search: Tick this checkbox to confirm you want the full set.
  • Name of this export (optional): Give it a descriptive name such as “Spanish translations batch 1.” This lets you save and reuse the same export configuration later.
  • Click Start New Export to download the CSV file to your computer.

Which columns to include (and which to leave out)

The columns you export determine what your translator sees and can edit. Be deliberate about this:

Include these columns for translation:

  • record_id (ID): This is essential for the import step. Tell your translator not to modify this column under any circumstances. It is the unique identifier that links each CSV row back to the correct product in your database.
  • Name: The product title.
  • Short Description: The brief excerpt shown in product listings and category pages.
  • Description: The full product description, which may include HTML formatting.
  • URL Slug: The product’s URL segment. If you want translated slugs (recommended for SEO), include this column.

Leave these columns out of the export:

  • SKU, Regular Price, Sale Price, Stock, Stock Status, Tax Status, Tax Class, Shipping Class, Images, Product Type, Published status, and any plugin-specific metadata columns that are not customer-facing text.

By keeping non-translatable columns out of the file, you eliminate the risk of a translator accidentally modifying a price, breaking an image URL, or changing a SKU that your inventory system depends on.

Here is an example of how the exported CSV file looks when opened in Excel, with only the selected columns present:

CSV file opened in Microsoft Excel showing product ID, name, short description, description, and URL slug columns ready for translation editing

Preparing the CSV for your translator

Before sending the file to your translator, take a moment to add clear instructions:

  • Highlight or lock the ID column and tell them not to edit it. Changing an ID will cause the import to fail or update the wrong product.
  • If you included the URL Slug column, let them know to translate it using lowercase letters and hyphens instead of spaces (for example, “red-running-shoes” not “Red Running Shoes”).
  • Ask them to preserve any HTML tags that appear in the Description column (such as <ul>, <li>, <strong>, and <br> tags). These control the formatting on your product pages and should not be altered or removed.
  • Specify the character encoding. CSV files should be saved as UTF-8 to handle accented characters and special symbols correctly. Most modern spreadsheet applications default to UTF-8, but it’s worth confirming.

Step 4. Translate categories and tags before importing products

Before you import the translated product CSV, you need to make sure the product categories and tags exist in the target language. When the import runs, it assigns categories by name. If the translated category name doesn’t match an existing term in that language, the product may end up uncategorized or assigned incorrectly.

Here is a tutorial that walks through the category and tag translation process:

Once your categories and tags are translated in WooCommerce Multilingual, continue with the product import below.

Step 5. Import the translated CSV back into WooCommerce

With the translated CSV file in hand and your categories prepared, you are ready to bring the translations into your store.

First, confirm that WPML is still set to the correct language. Since you are importing Spanish translations, the WPML language switcher should show Spanish. If you import while set to the wrong language, the content will be assigned to that language and your translation links will break.

WPML language switcher set to Spanish before importing translated product CSV back into WooCommerce

Now open the Import tool by clicking its button on the top toolbar of the WooCommerce Products Spreadsheet.

Upload the CSV file

In the import setup screen, configure the source:

  • Source: Select “CSV file from my computer.”
  • Click Choose File and locate the translated CSV on your computer.
  • Click Next to proceed.

Import tool source selection screen with CSV file from computer option selected and Choose File button visible

Select columns to import

On the next screen, click Import all the columns. This tells the plugin to process every column present in your CSV file. Since you exported only the columns you need in step 3, there is no need to filter here.

Import all columns button on the column selection screen of the WP Sheet Editor import wizard

Configure the update behavior

This is the most important configuration screen in the import process. You need to tell the plugin to update existing products (the translation duplicates you created in step 1) rather than creating new ones. You also need to specify that the matching should be done by product ID.

  • Do you want to update or create items: Select “Update existing items, ignore new items.” This ensures only products that already exist in the database are modified. If a row in your CSV doesn’t match any product, it is skipped rather than creating an unintended duplicate.
  • CSV Field: Choose “record_id” (this is the ID column from your export).
  • WordPress Field: Choose “ID.”
  • Click Next to continue.

Import update configuration showing Update existing items selected with record_id mapped to ID for matching existing WooCommerce products

Why matching by ID matters: each product in your store has a unique ID number that never changes. When you created translation duplicates in step 1, those duplicates received their own IDs. By matching on ID, the import updates the exact product post that WPML expects to contain the translated content. Matching on SKU would be problematic here because the same SKU can appear across multiple language versions of a product.

Preview and finalize the import

The final screen shows a preview of how the imported data will look. Review it briefly to confirm the translated content appears in the correct columns and the product IDs match what you expect. When you’re satisfied, click The preview is fine, start import.

Import preview screen showing translated product data before final confirmation and execution of the import

The import runs immediately. Depending on how many products you are processing, it may take a few seconds to a minute.

Step 6. Verify the imported translations

Once the import finishes, your translations appear in the spreadsheet. Scroll through a few products to confirm the translated content is present in the Name, Short Description, and Description columns.

WooCommerce Products Spreadsheet displaying successfully imported Spanish product translations with translated names and descriptions visible

What to check after every import

A quick verification routine catches problems before customers see them:

  • Spot-check the front end: Switch your site to the target language using the front-end language switcher and visit a few product pages. Confirm the translated title, description, and slug appear correctly.
  • Check category assignments: Make sure each product appears in the correct translated category, not the default-language one.
  • Check the WPML translation status: In the WordPress admin, go to WooCommerce Multilingual and verify that products show as translated (pencil icon) rather than untranslated (plus icon).
  • Test variable products separately: If you have variable products, open a translated variable product and confirm the attribute dropdowns show translated values and that variations are selectable.
  • Watch for encoding issues: Look for garbled characters (like “ñ” instead of “ñ”). If you see these, the CSV was likely saved in a non-UTF-8 encoding. Re-save the file as UTF-8 and import again.

Handling multiple languages efficiently

If your store supports three or more languages, repeat steps 2 through 6 for each language individually. The workflow is the same each time:

  1. Switch WPML to the next language.
  2. Export the translation duplicates in that language.
  3. Send the CSV to your translator for that language.
  4. Import the completed file.
  5. Verify.

You can run exports for multiple languages at the same time and send them to different translators in parallel. Each CSV is independent, and the imports won’t conflict with each other because each one targets products in a specific language.

What to do if something goes wrong

Problems during translation imports usually fall into a few predictable categories. Here is how to handle them:

  • Translations don’t appear after import: Confirm you had WPML set to the correct language before importing. If you imported while set to the default language, the translated content was written into the default-language products. Re-import with the correct language selected.
  • Duplicate products were created: This happens when the import is set to “Create new items” instead of “Update existing items.” Delete the duplicates and re-import with the correct setting.
  • Products are no longer linked as translations: If you accidentally changed product IDs in the CSV or imported into the wrong language context, WPML loses the translation relationship. The safest fix is to delete the affected language versions, re-create the duplicates using the bulk duplicate tool from step 1, and import again.
  • Special characters display incorrectly: This is always an encoding problem. Open the CSV in a text editor (not Excel) and check that accents, umlauts, and other special characters appear correctly. If they don’t, the file was saved in a legacy encoding. Convert it to UTF-8 and re-import.

Frequently Asked Questions

Can I import translations for multiple languages from a single CSV file?

No, the workflow described here uses one CSV per language. Each file contains only the products that belong to a specific language, and you import each one with WooCommerce Multilingual set to the matching language. This keeps the process simple and reduces the chance of cross-language contamination. If you need to manage a large number of languages, run the exports in parallel and give each translator their own language-specific file.

Which columns should I tell my translator not to modify?

The record_id column must never be changed because the import uses it to identify which product to update. Beyond that, any operational columns you accidentally included (SKU, price, stock, image URLs, product type) should also be left untouched. A good practice is to export only the text columns that need translation (Name, Short Description, Description, URL Slug) so the translator never encounters fields they shouldn’t touch.

Do I need to translate categories and tags before importing the product CSV?

Yes. The product import assigns categories by their translated names. If a category doesn’t exist in the target language when the import runs, the product may end up with no category assignment or get linked to a default-language category. Translate your categories and tags first, then import the product translations.

Does this method work for variable products with multiple variations?

Yes. When you create translation duplicates in step 1, the bulk duplicate tool copies the parent variable product and all its variations into the target language. The CSV export includes the parent product’s translatable fields. The variations themselves (with their attributes and prices) are preserved from the duplicate step. After importing the translated parent product content, the variations remain intact and correctly linked.

Can I include SEO metadata in the export for translation?

Yes. If you use an SEO plugin such as Yoast SEO or Rank Math, you can include the SEO title and meta description columns in your export. Select them alongside the standard Name, Description, and Short Description columns during the export configuration in step 3. The translator can localize these fields, and they will be imported back the same way as any other column.

Click here to read other tutorials on how to manage WPML and WooCommerce Multilingual translations with WP Sheet Editor

Do you need help?

You can receive instant help in the live chat during business hours, or you can contact us and we will help you via email.