# svelte-i18n > Internationalization for Svelte ## Usage ### On the `store` ```js import { i18n } from 'svelte-i18n' import { Store } from 'svelte/store' /** i18n(svelteStore, { dictionary }) */ let store = new Store() store = i18n(store, { dictionary: { 'pt-BR': { message: 'Mensagem', greeting: 'Olá {name}, como vai?', greetingIndex: 'Olá {0}, como vai?', meter: 'metros | metro | metros', book: 'livro | livros', messages: { alert: 'Alerta', error: 'Erro', }, }, 'en-US': { message: 'Message', greeting: 'Hello {name}, how are you?', greetingIndex: 'Hello {0}, how are you?', meter: 'meters | meter | meters', book: 'book | books', messages: { alert: 'Alert', error: 'Error', }, }, }, }) /** * Extend the initial dictionary. * Dictionaries are deeply merged. * */ store.i18n.extendDictionary({ 'pt-BR': { messages: { warn: 'Aviso', success: 'Sucesso', }, }, 'en-US': { messages: { warn: 'Warn', success: 'Success', }, }, }) /** Set the initial locale */ store.i18n.setLocale('en-US') ``` ### On `templates` #### Basic usage ```html
{$_('message')}: {$_('messages.success')}
``` #### Current locale The current locale is available via `this.store.get().locale`. #### Interpolation ```html
{$_('greeting', { name: 'John' })} {$_('greetingIndex', ['John'])}
``` #### Pluralization ```html
0 {$_.plural('meter', 0)} 1 {$_.plural('meter', 1)} 100 {$_.plural('meter', 100)} 0 {$_.plural('book', 0)} 1 {$_.plural('book', 1)} 10 {$_.plural('book', 10)}
``` #### Utilities ```html
{$_.upper('message')} {$_.lower('message')} {$_.capital('message')} {$_.title('greeting', { name: 'John' })}
```