wxrks Figma Plugin
The wxrks plugin for Figma lets you send text from a Figma design file to wxrks for translation, then pull the finished translations back into Figma as new pages — one per target language — without leaving Figma.
💡 Who is this for? This guide is for Account Admins who need to configure the Figma connector in wxrks, and for any Figma user who needs to install the plugin and request translations.
1. Install the plugin in Figma
These steps happen entirely inside Figma:
Log in to your Figma account and open the design file you want to translate.
Open the Plugins menu and select Manage plugins….
Use Search all plugins to find the wxrks plugin.
Click the wxrks plugin, then Save to install it, then Run to open it.
On first run, the plugin asks you to connect it to your wxrks account with an API ID, API Secret, and region:
Generate that pair from the wxrks side: open your avatar menu (top right), go to Profile → Security, and click Generate under API Token. The secret is shown only once, so copy both values into the plugin (or somewhere safe) right away.
Once connected, the plugin's features are available directly inside your Figma file.
2. Configure Figma in wxrks
Before the plugin can create projects, set up at least one Figma configuration in wxrks: go to Integrations → Figma.
Figma Configuration
Click Add Configuration on the Figma Configurations tab:
Give it a Name and pick the Organizational Unit that projects created through this configuration should belong to, then click Create. You can rename it or change its Organizational Unit later from the same list.
Configuration Group
A Configuration Group lets the plugin split one translation request across more than one Organizational Unit at once. Switch to the Configuration Group tab and click Add Configuration:
Give the group a Name and select the Figma Configurations (each tied to its own Organizational Unit) to include.
When a project is created against a Configuration Group, wxrks splits the target languages you request across the group's Organizational Units by each unit's own configured target languages — any requested language left over after that filtering is added to the last Organizational Unit in the group. In practice: if Organizational Unit A's configured languages include French and Organizational Unit B's include German and Spanish, requesting all three from the plugin creates two projects — one for A with French, one for B with German and Spanish — each with the languages relevant to that unit's stakeholders.
3. Create a project from Figma
ℹ️ Fonts for Chinese, Japanese, and Korean: Your source Figma page is never changed. If its font doesn't include Chinese, Japanese, or Korean characters, Figma shows the translated text as blank. To prevent this, the plugin can switch the translated layers to a font that includes those characters when you fetch translations. See Replace fonts by target language in the next section.
With the plugin running and connected, request a translation directly from Figma by filling in:
Configuration (or Configuration Group) — set up in wxrks per the previous section.
Contact person — someone associated with the Organizational Unit tied to that configuration.
Source language
Target language(s)
Workflows the project should go through.
Project name
Send the request to wxrks, and the project (or projects, if a Configuration Group split it across Organizational Units) is created immediately:
Each page in your Figma file becomes its own work unit for every target language in the wxrks project.
4. Pull translations back into Figma
Once translation is finished, open the plugin on the source page you sent to wxrks. Before you click Fetch translations, check the font settings below the button, described in Replace fonts by target language below. The defaults work for most files.
Click Fetch translations and wait for it to complete:
Each source page you sent gets a new page per target language:
ℹ️ Mixed styling within a text node: wxrks translates and re-applies formatting at the level of the whole text node, not per character. If a text node combines a node-wide style — for example, Bold applied to the entire node — with a character-level override on only part of the text — for example, a different fill color on a single word — only the node-wide style carries over to the translated text; the character-level override does not. This is expected: the plugin round-trips each node's own style, not Figma's internal per-character style ranges, so the translated node keeps the formatting that belongs to it as a whole and drops whatever was layered on top of just a few characters within it.
In the example below, the source text node "Hello, world!" (1) has Bold applied to the entire node (2) — a node-wide style — plus a red fill applied only to the word "world," which Figma tracks separately as a character-level override. That's visible in the Fill panel reporting mixed content (3) and the Selection colors panel listing both FF0000 and FFFFFF (4). After translation, the resulting node "Olá, mundo!" (5) keeps the Bold style, but its Fill panel now shows a single FFFFFF color (6) — the word-level red override was not carried over.
Source text node, before translation.
Typography → Bold — the node-wide style, applied to the whole node.
Fill reporting "Click + to replace mixed content" — Figma's own indicator that the node has more than one fill color.
Selection colors — the two colors actually in use:
FF0000(the "world" override) andFFFFFF(the rest of the node).Translated text node, after translation.
Fill after translation — a single
FFFFFF, confirming theFF0000word-level override did not carry over.
If part of a text node needs distinct styling after translation, reapply it manually in Figma once translations are pulled back, or split that portion into its own text node before requesting translation, so its style travels as that node's own (global) style instead of a character-level override.
Replace fonts by target language
Many fonts don't include Chinese, Japanese, or Korean characters. When the source font is one of them, Figma shows the translated text as blank, and the plugin can't make Figma pick a fallback font automatically. To avoid blank text, the plugin switches the translated layers to a font that includes these characters while it creates the translated pages.
The font settings appear below Fetch translations on the plugin's fetch screen:
Enable font replacement by target language is selected by default. Clear it to keep the source font for every language.
Each target language in the project has a dropdown that lists the fonts available in your Figma. To use a different font for a language, type its name in the dropdown and select it. To keep the source font for a language, choose Same as source.
Click Fetch translations.
The default font depends on the target language:
Target language | Default font |
Chinese (Simplified), including Singapore | Noto Sans SC |
Chinese (Traditional), including Taiwan | Noto Sans TC |
Chinese (Hong Kong, Macau) | Noto Sans HK, or Noto Sans TC if Noto Sans HK isn't available |
Japanese | Noto Sans JP |
Korean | Noto Sans KR |
Any other language | Same as source |
The Noto Sans fonts come with Figma, so you don't have to install anything.
The plugin saves your choices for that Figma page and uses them the next time you fetch translations for it.
What changes on the translated pages:
Only translated text layers get the new font. Layers that weren't translated keep their original font, and your source page doesn't change at all.
Each replaced layer keeps the source text's weight. For example, Bold text uses the Bold style of Noto Sans JP. The Noto Sans CJK fonts have no italic styles, so italic text becomes upright.
Text styles on replaced layers are detached, so the layer no longer follows its shared text style.
The new font has different character widths and line heights, which can change the layout. Review the translated pages for text that overflows or wraps differently.
ℹ️ Other languages with their own scripts: The plugin only picks a font automatically for Chinese, Japanese, and Korean. Other languages, such as Thai, Bengali, Tamil, or Telugu, use Same as source by default. If the source font doesn't support one of them, choose a font for that language in its dropdown before you fetch translations.
Troubleshooting Fetch translations
Message | What it means | What to do |
Missing font: … No pages were created. Install the font, or choose a replacement font for … | Your Figma can't load the source font, and at least one language listed in the message uses Same as source. The plugin stops before it creates any page. | Install the missing font, or choose a replacement font for each language the message lists, then fetch again. |
Font "…" is not available; using "…" for … | The font saved for that language isn't available in this Figma, for example on another computer. The plugin used the default Noto Sans font for that language. | No action needed. To use a different font, choose it in the language's dropdown. |
Font "…" is not available; keeping the source font for … | The saved font isn't available, and that language has no default replacement font. | Choose an available font for that language, or install the saved font. |
Could not load the available fonts. Translations will keep the source fonts. | The plugin couldn't read the list of fonts in your Figma, so the language dropdowns don't appear. | Close and reopen the plugin. If you fetch translations anyway, translated text keeps the source font. |
No translated files were returned for this project, so no pages were created. | wxrks returned no translations for the project. | Check in wxrks that the project's translations are finished, then fetch again. |
No translation was returned for …, so no page was created for it. | The other languages were fetched, but the languages listed in the message had no translation. | Finish those languages in wxrks, then fetch again. |















