Polylang > Support > Guides > How to manage language capabilities in Polylang Pro 

How to manage language capabilities in Polylang Pro 

Polylang Pro

🎯 Objective: Learn how to assign capabilities to specific user roles in order to control access and responsibilities in a multilingual site.

What you need

  • Polylang Pro (minimum version 3.8)
  • The User Role Editor plugin (available from the WordPress repository) 

What are the language capabilities in Polylang Pro?

A role defines what a user can do, and capabilities are the permissions assigned to that specific role. You can combine several capabilities within a single role to build a workflow that fits your multilingual team structure. 

Important: We recommend using the role “Editor” when creating new capabilities. 

CapabilityWhat it doesWhat it controls
translate_{language_slug}Restricts a role to one specific languageEditing rights for pages, posts, taxonomies, synchronisation tools, and bulk translation for that language only
manage_translationsGrants access to the String Translations tableEditing and importing translation strings (Languages > Translations), limited to authorised languages
machine_translationsAllows a role to trigger DeepL automatic translationAccess to automatic translation features (requires PLL_ENABLE_MACHINE_TRANSLATION_CAPABILITIES set to true)
manage_languagesGrants access to language management toolsAccess to the languages table and the Languages REST API (add, edit, delete languages)

Where can language capabilities be applied?

Once assigned to a role, language capabilities can be applied to the following content:

  • Pages
  • Posts
  • Categories and other taxonomies
  • String translations (Translations panel)

Note: Capabilities cannot be assigned inside the Site Editor (patterns, navigation, templates, etc.). 

Restricting users to a specific language only

Capability name: language_{language_slug} (e.g for Italian: language_it)

What it does: It gives permission to edit contents that are in this language, or translate contents from other languages into this language. If a user does not have permission for a specific language, they will not be able to edit it in any of these areas. 

Good to know: 

In this documentation, we are creating capabilities for Gianni, an Italian translator who needs access only to Italian content. You do not need to create a new role to create and assign capabilities; you can assign them to an existing one if you prefer.

  1. Make sure you have installed and activated the free User Role Editor plugin.
  2. Go to Users > User Roles Editor > Add Role.  Give your role a name, such as “Italian Translator”. 
create a new role which is copy of editor
Adding a new role (Italian translator based on Editor role)
  1. Make sure you select Editor in the “Make copy of” dropdown menu so the translator can have the same rights as an Editor. 
add a new role
Editor role 
  1. Click on Add capability and add the language capability name of your choice using the following structure: Translate_language_slug.
    In our case, to give access only to the Italian language, the capability looks like this: language_it.
create italian language capability
Adding a new language capability for the Italian language
  • If you want to allow the user to access only Italian content, put: translate_it
  • If you want to allow the user to access only French content, put: translate_fr
  1. Select the right role from the drop-down menu and choose the language capability to assign to this role. In our case, the translator will have access only to the Italian content with the translate_it capability.  
assign a language capability to a role
Giving access to the Italian language only
  1. Click Update, then press Yes to confirm your action.
confirm and press the yes button
Update and confirm the capability
  1. From Users, assign the “Italian translator” role to the user of your choice. 
step to add a role to wordpress user
Assign the role to a user
  1. When Gianni logs in to this site:
  • Only Italian content can be created or edited.
  • Edit icons (pencils or + buttons) and synchronisation options will be available in Italian, but disabled (in grey) for all other languages.
it show that editing for other languages is disabled
Making only Italian available for translation, with French and English disabled

Good to know: You can give permission to several languages if you want to. Simply check the boxes for your chosen capabilities in the capabilities list.

assign several capability to a role
Giving access to French and Italian content

Giving access to string translations

Capability name: manage_translations

What it does: This capability allows you to grant access to the string translations table (Languages > Translations) without giving full administrator rights. Users can edit translation strings only for the languages they are authorised to manage. The same rule applies when importing content. 

  1. Go to Users > User Roles Editor > Add capability and name it “manage_translations”.
capability to manage translations
Creating the “manage_translations” capability to access Translations
  1. Check the manage_translations box and click on Update
add manage translation capability to the role
Giving access to the Translations panel with “manage_translations” capability
  1. In our example, Gianni will have access to the Translations table (Italian fields only) accessible from Languages > Translations
it shows the editing ranslations screen available only for italian language
Only the Italian fields are editable from the Translations screen

Controlling who can use DeepL machine translation

Capability name: machine_translations
What it does: This capability lets you control who can use DeepL.

  1. Open your wp-config.php file to enable permission control, add this constant, and set it to true.

define( 'PLL_ENABLE_MACHINE_TRANSLATION_CAPABILITIES', true ); 

  1. To grant the capability, create the machine_translations capability and assign it to the desired role.
  2. Go to Users > User Roles Editor > Add capability. Add a new capability named “machine_translations”.
the capability to allow machine translation to a role
Creating the “machine_translations” capability to give access to DeepL
  1. Check the machine_translations box from the capability lists and click on Update.
adding the machine translation capability
Giving access to DeepL with “machine_translations” capability
  1. In our example, Gianni will have access to the DeepL machine translation (for the Italian content only).

Managing Languages access

Capability name: manage_languages

What it does: This capability allows a role to manage site languages (Languages > Languages), but also with the Languages REST API. It provides access to the languages table (add, edit, delete languages) without granting full administrator rights.

  1. Go to Users > User Roles Editor > Add capability. Add a new capability and name it “manage_languages”. 
capability to give access to the manage_languages capability
Creating the “manage_languages” capability to give access to the Languages panel
  1. Check the manage_languages box and click on Update
add a new manage_language capacity with Polylang Pro
Giving access to the Languages panel with the “manage_languages” capability 

How capabilities affect synchronisation and bulk actions

Language capabilities not only restrict editing, but also affect synchronisation and bulk translation actions.

Translation synchronisation

If a user is not authorised for a specific language:

  • Synchronisation tools for that language are disabled.
  • Translation content is not editable.
  • The user cannot modify or update linked translations.

In short: no capability = no editing and no synchronisation.

Bulk translate

Bulk translation follows the same logic. A user can trigger bulk actions only for the languages they are authorized to manage.

For example:

  • If a user has the translate_it permission, they can bulk translate into Italian.
  • They will not be able to bulk translate into English, Italian, or any other unauthorized language.