Skip to main content
More in Learn

Configuring Languages

Reach a global audience by providing multilingual content. Within your tenant, you can define as many languages as you need, with one language designated as your default language.

Managing Languages

A tenant's languages can be managed via the PIM API or the Crystallize App. To do so, you'll first need the requisite permissions for Languages (read, create, etc). Refer to our documentation on roles and permissions for more information.

Within the Crystallize App, you can click the Settings button on the left side of the screen, then choose Languages from the left-hand panel. Use the Add language + button to define additional languages. Each one will require a unique code (ex. “en” for English). Use the Yes/No toggles to designate which of the languages to use as your default. Finally, there are action buttons (...) on the right of each language row to edit or delete a language. Any content that was created for that particular language will be permanently lost, so proceed carefully.

Languages main screen

Setting Your Default Language Within the Catalogue

To change the default language in which you view and browse through your tenant’s catalogue, use the Language button on the left-hand side of the screen.

Default language setting

Building Content in Different Languages

When new products, documents, folders, topic maps, grids, and assets are added to your tenant, there will now be as many different “translations” of each of those items as there are languages defined. When you first browse to one of these items, you’ll be seeing what everything looks like in the default language. You can then use the Language drop-down at the top of the item editing screen to switch to translations in different languages.

Here, for instance, is a chair that we first see in the default language (English):

Chair in English

Using the Language drop-down, we can switch to the Norwegian (Norsk) translation of the same product:

Chair in Norwegian

The following fields and components are translatable (i.e. you can store different values for each translation):

If a field or component is not translatable, this means that the same content/value will be stored for all translations. It’s best to use non-translatable fields for data that will be the same regardless of language (like model numbers, for instance).

If you alter the structure of one translation (e.g. by adding/removing paragraphs), these changes will carry through to the other translations. You must supply your own content for each translation; Crystallize cannot translate one language into another.

As is typical with catalogue items, every translation starts out in a draft version. Changes are automatically saved, but the translations are not publicly available until published. There’s a Publish/Publish changes button at the top of the screen for this purpose. Clicking the action button (…) beside this button, you can also access options to Publish the current item in all languages, Unpublish the current item/language, Unpublish in all languages, or Delete the item (which gets rid of it permanently).

Translation Paths

It’s important to note that the paths of translations will be in their target language, and that the language code must be specified correctly in order to retrieve these items programmatically. For instance, you could retrieve either of these:

   "language": "en",
   "path": "/shop/chairs/bubblegum-lounge-chair"

   "language": "no",
   "path": "/butikk/stoler/bubblegum-loungestol"

But this would return null:

   "language": "en",
   "path": "/butikk/stoler/bubblegum-loungestol"

If you’re ever unsure about an item’s path and language, you can choose Developer from the View drop-down at the top of the screen to bring up the Crystallize App's internal GraphQL API explorer. The path and language of the translation will be displayed there, and can be copied to your clipboard for use elsewhere.

People showing thumbs up

Need further assistance?

Ask the Crystallize team or other enthusiasts in our slack community.

Join our slack community