Rubik Combined Listings

Translations Rubik Combined Listings Swatch

← Back to documentation

If your Shopify store sells in more than one language, the swatches created by Rubik Combined Listings Swatch should speak those languages too. A French shopper should read "Bleu nuit", not "Midnight blue".

This page covers everything about translations: what can be translated, how to translate a single group by hand, and how to translate your entire store at once with a CSV file.

What gets translated

Three kinds of text belong to Rubik, and all three are translatable:

What Example Where shoppers see it
Option name Color, Size, Material The label above the swatch row, and the "Color: Midnight blue" selected value line
Option values Midnight blue, Sand, Espresso brown The swatch label and tooltip, one per linked product
Swatch categories Leather, Fabrics, Metallics The heading above each group of swatches, when you sort swatches into categories

Product titles, descriptions, and prices are not part of this. Those belong to Shopify and are translated wherever you already translate your products, whether that is Shopify's own Translate & Adapt app or a third-party translation app. Rubik only translates the three things above.

How it works underneath

Rubik stores translations in Shopify's own translation system, the same place every other translation app writes to. Your storefront then serves the right language automatically, with no theme changes and no extra script.

That has two useful consequences. Your translations survive if you ever uninstall and reinstall the app, because they live in your store rather than in ours. And they follow the same language rules as the rest of your storefront, so a shopper who switches to French sees French swatch labels at the same moment the rest of the page switches.

Before you start: add a language

Rubik translates into the languages your Shopify store already has. If you have not added a second language yet, do that first in your Shopify admin under Settings → Languages, or through Settings → Markets if you run different languages per market.

Once a language exists there, it appears in Rubik's language picker. If you open the Translate page and see "No additional languages are configured for this store", that is what is missing.

Translating one group

Best for a handful of groups, or for fixing a single word.

1 Open the Translate page

Go to Product groups and click the translate icon on any group in the list. You can also open the group and click Translate on its edit page.

2 Pick a language

Choose from the language picker at the top. Every language configured in your store is listed, and the page reloads its content for that language.

3 Fill in the translations

The page shows the original text on the left and an input for your translation on the right, in up to three sections: Option name, Option values, and Categories. Sections you do not use are hidden, so a group without categories shows only the first two.

Leaving a field empty is fine. The original text is used as a fallback anywhere a translation is missing, so shoppers never see a blank swatch.

4 Save

Click Save translations. The change reaches your storefront immediately.

Categories are shared. A category like "Leather" can be used by many groups. Translating it on one group's page translates it everywhere it is used, which is exactly what you want, but worth knowing before you wonder why another group changed too.

Translating everything at once with a CSV

Doing 40 groups in 5 languages by hand is a bad afternoon. The CSV route exports every translatable piece of text in your store into one spreadsheet, with a column per language and your existing translations already filled in. Fill in the gaps, or hand the file to a translator, then upload it back.

1 Export

On any group's Translate page, click Export all translations. Despite living on a single group's page, this exports the whole store.

The file is built in the background and emailed to you, because for a large catalog it takes a few minutes to gather. The email arrives with the CSV attached, named something like rubik-translations-export-your-store-08-06-2026.csv, and tells you how many items it contains and how many are still untranslated.

2 Fill in the language columns

Open the file in Excel, Numbers, Google Sheets, or hand it to a translator. There is one row per piece of text and one column per language. Type translations into the language columns and change nothing else.

3 Import

Back on the Translate page, click Import translations, choose your file, and click Start import.

The import also runs in the background. When it finishes you get a second email with exactly what happened: how many translations were applied, how many were already up to date, and anything that could not be saved.

What is in the CSV

Only the language columns are yours to edit. Everything to their left is context so you know what you are translating.

resource_id type original fr de
…/8123 option_name Color Couleur Farbe
…/9001 option_value Midnight blue Bleu nuit Nachtblau
…/5555 category Fabrics Tissus Stoffe

The shaded columns are the ones you fill in, one per language in your store. Shortened to fit: the real file also carries group_id, group_name, product_id and product_title between type and original, and full resource_id values. Every column is listed below.

Column What it is Edit it?
resource_id How the import knows which text a row belongs to. Long and ugly on purpose. Never
type option_name, option_value, or category. Handy for sorting the file. Never
group_id, group_name Which group the row belongs to. Blank on category rows, because categories are shared. No, context only
product_id, product_title Which product a swatch belongs to. This is what tells you whether "Sand" is a color or a material. No, context only
original The text in your store's main language. This is what you translate. No
fr, de, pt-BR, ... One column per language in your store, pre-filled with any translation you already have. Yes, this is your job

Rules worth knowing

An empty cell never erases a translation

Blank means "leave whatever is already there". You can safely import a file where you only filled in 12 cells out of 400. To remove a translation, clear it on the group's Translate page instead.

Re-importing the same file is safe

Nothing is duplicated and nothing breaks. Values that already match are recognised and skipped, and the email reports them as already up to date. So if you are unsure whether an import went through, just run it again.

Only the language columns are read

You can re-sort rows, delete rows you do not care about, hide columns, or add your own column of notes for a translator. None of it confuses the import, as long as resource_id and type stay intact. Any extra column you add is reported in the email and ignored.

Renaming a group between export and import is fine

The import matches on resource_id, never on names, so a group you renamed in the meantime still gets its translations.

Excel is handled

The export is written so Excel opens it with accents and non-Latin characters intact, and the import accepts files back from Excel in any region, including the versions that save with semicolons instead of commas.

If the original text changed after you exported

Say you export, then rename a swatch from "Midnight blue" to "Navy", then import your translations. Rubik still applies the translation you typed, but the completion email flags how many rows were in that situation so you can check whether the translation still fits.

The emails

Both actions run in the background and email you when they finish, so you can start an export and close the tab.

Both go to your store's contact email address.

Frequently asked questions

Do I need a translation app for this?

No. Rubik writes directly into Shopify's translation system, so all you need is a second language added in your Shopify settings. If you do use a translation app for your products, the two work side by side without conflict.

My translations do not show on the storefront

Check that the language is published in Settings → Languages. An unpublished language can be translated in advance but is not visible to shoppers yet. Also confirm you are viewing the storefront in that language, usually through your theme's language switcher or a market-specific domain.

What happens to swatches I have not translated?

They fall back to the original text. A half-translated store looks like a partly translated store, never a broken one.

The import email says rows were skipped

That means a resource_id in the file does not match anything in your store. The usual causes are a file from a different store, a row typed by hand, or a group that was deleted after the export. Everything else in the file still gets applied.

Can I import only some languages?

Yes. Delete the language columns you are not working on, or just leave them empty. Only the columns you filled in are applied.

Is there a size limit on the file?

Around 30,000 rows, which is far more than most stores ever reach. If you are past that, split the file and import the parts one at a time.

Can two people translate at once?

Split the file by language or by group and import each part separately. Imports are applied one at a time per store, so if you start a second one while the first is still running you will be asked to wait a moment.

Need help?

If you run into trouble, message us from inside the Rubik app and we'll take a look at your shop directly.