# Languages and translations

Configuration

GrandNode is fully multilingual: the storefront texts, e-mails, and your own content - products, categories, pages - can all be translated. Two kinds of text are involved: **string resources** (the fixed texts of the application, such as "Add to cart") and **localized content** (the texts you enter).

### Languages

**Configuration → Languages** lists the installed languages with their flag, culture, display order and whether they are published.

![The Languages list with English, flag, culture en-US, display order and published flag](https://grandnode.com/Plugins/Theme.GrandNodeCom/Content/kb/configuration/languages.webp)

Configuration → Languages.

#### Add a language

1. Click **Add new**. Enter the **Name**, the **Language culture** (for example `pl-PL`), the **Unique SEO code** (`pl`) and a flag.
2. Tick **Right-to-left** for Arabic, Hebrew and similar languages.
3. Optionally choose a default currency for the language and limit it to stores.
4. Set **Published** and save.
5. Import the translated string resources (below).

### String resources

Open a language and go to **String resources**. Search by name or value, edit a value, or add a resource.

![The String resources tab of English with a search, resource names such as account.accountactivation and their values with Edit and Delete buttons](https://grandnode.com/Plugins/Theme.GrandNodeCom/Content/kb/configuration/language-resources.webp)

String resources of a language.

- **Export** downloads all resources of the language as XML; **Import** loads such a file. Translation packs are imported this way.
- Resource names are lower case keys; the admin shows the key when a resource is missing, which makes it easy to find what to add.
- Plugins and themes add their own resources when installed.

### Translating your content

Once there is more than one language, editors show language tabs: products, categories, brands, collections, pages, blog posts, attributes, e-mail templates and more can be translated field by field. Empty translations fall back to the standard text.

### Language URLs

With `SeoFriendlyUrlsForLanguagesEnabled` set to `true` in `appsettings.json`, URLs get the language code prefix (`/pl/produkt`) and each language can have its own search engine friendly names.

### Related

- [Currencies, countries and measures](https://grandnode.com/configuration-currencies-countries-measures)
- [General settings](https://grandnode.com/configuration-general-settings)

- [Web page](https://grandnode.com/configuration-languages-translations)
