Languages and translations

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
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
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.

Question not answered here? Ask the community on GitHub Discussions ↗