Skip to content

Internationalization

Deckyard supports multiple languages for both the user interface and presentation content.

The following languages are fully supported:

LanguageCodeStatus
English (UK)en-GBPrimary
DutchnlFull support
GermandeFull support
FrenchfrFull support
SpanishesFull support
ItalianitFull support
PortugueseptFull support
SwedishsvFull support
NorwegiannoFull support
DanishdaFull support
FinnishfiFull support
PolishplFull support

Preferences settings showing Application language dropdown with 12 languages, Slides language mode toggle, and notification options

Set the default language for new users:

Terminal window
DEFAULT_LANGUAGE=en-GB

Users can set their preferred language in their profile settings. This affects:

  • User interface text
  • Date and number formatting
  • Email notifications

Deckyard supports multi-language presentation content, allowing you to create presentations that can be viewed in different languages.

Each presentation can have content in multiple languages:

  • Content is stored with language codes (e.g., en-GB, nl)
  • Viewers see content in their preferred language
  • Missing translations fall back to the primary language
  1. Open the presentation editor
  2. Use the language selector in the toolbar
  3. Switch to the target language
  4. Enter translated content for each field

With AI features enabled, you can automatically translate presentations:

  • Translate individual fields
  • Translate entire presentations
  • Preview translations before applying

See AI Translation for details.

To add a new language to Deckyard:

Create a new directory in client/i18n/ with the language code:

client/i18n/
├── en/
│ └── common.json
├── nl/
│ └── common.json
└── [new-language]/
└── common.json

Copy an existing common.json and translate all strings:

{
"app.title": "Deckyard",
"nav.home": "Home",
"nav.presentations": "Presentations",
// ... more translations
}

Add the language to the supported languages list in client/i18n/index.js.

Create localized email templates in server/email/templates/[language]/.

Translation keys follow a hierarchical naming convention:

namespace.section.key

Examples:

  • app.title - Application title
  • editor.toolbar.save - Save button in editor toolbar
  • email.invite.subject - Email invitation subject line

Deckyard uses the browser’s Intl API for locale-aware formatting:

  • Dates: Formatted according to the user’s language preference
  • Numbers: Decimal separators and grouping follow locale conventions
  • Currencies: Displayed with appropriate symbols and formatting

Currently, Deckyard does not have full RTL support. Languages that require RTL layout (Arabic, Hebrew, etc.) are not yet supported.