Internationalization (i18n)
The i18n
plugin enables dynamic text translation based on the selected language. It supports language switching, message formatting, and placeholders for personalized content.
Installation
To use i18n
, include the DOMY I18N plugin via CDN:
<script src="https://unpkg.com/@domyjs/i18n@1.x.x"></script>
Syntax and Usage
Defining Language Messages
Define translations for multiple languages.
const { i18nPlugin, useI18n } = i18n({
messages: {
en: {
title: 'Hello World!',
greeting: {
hello: 'Hello, {{ name }}',
bye: 'Bye, {{ name }}'
}
},
fr: {
title: 'Bonjour le monde!',
greeting: {
hello: 'Bonjour, {{ name }}',
bye: 'Aurevoir, {{ name }}'
}
}
},
currentLangage: 'en',
defaultCallbackLangage: 'en'
});
DOMY.createApp().plugins([i18nPlugin]).mount();
Using Translations in Components
Bind translation keys using $t()
.
<h1>{{ $t('title') }}</h1>
<p>{{ $t('greeting.hello', { name: 'John' }) }}</p>
<p>{{ $t('greeting.bye') }}</p>
<p>{{ $t({ key: 'key.who.doesnt.exist', defaultMessage: 'default message' }) }}</p>
Switching Languages Dynamically
Modify the active language using $i18n.setLangage()
.
<button @click="$i18n.setLangage('fr')">🇫🇷 French</button>
<button @click="$i18n.setLangage('en')">🇬🇧 English</button>
Getting Supported Languages
Retrieve the list of available languages dynamically.
<p>{{ $i18n.getSupportedLangages().join(', ') }}</p>
Example: Language Selector
<div d-scope="{ name: 'Yoann' }">
<h1>{{ $t('title') }}</h1>
<p>{{ $t('greeting.hello', { name }) }}</p>
<button @click="name = 'Pierre'">Change name to Pierre</button>
<button @click="$i18n.setLangage('fr')">Switch to French</button>
<button @click="$i18n.setLangage('en')">Switch to English</button>
</div>