@shirley.vonrueden
В Nuxt.js есть несколько подходов к созданию мультиязычного приложения, но мы рассмотрим наиболее распространенный, используя пакет i18n.
Шаг 1: Установка i18n
Запустите команду npm install --save nuxt-i18n для установки пакета i18n:
1
|
npm install --save nuxt-i18n |
Шаг 2: Настройка i18n
Добавьте следующий код в файл nuxt.config.js:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
modules: [
'nuxt-i18n'
],
i18n: {
locales: [
{
code: 'en',
name: 'English',
iso: 'en-US',
file: 'en-US.js'
},
{
code: 'fr',
name: 'Français',
iso: 'fr-FR',
file: 'fr-FR.js'
}
],
lazy: true,
langDir: 'lang/',
defaultLocale: 'en'
}
|
Здесь мы определяем список доступных языков, заданных в формате объекта. У каждого языка есть название (name), код языка (code), код ISO (iso) и имя файла, содержащего переводы (file).
Параметр lazy установлен в true, что означает, что переводы загружаются только при необходимости.
Параметр langDir указывает путь к папке, в которой хранятся файлы переводов.
Параметр defaultLocale устанавливает язык по умолчанию.
Наконец, добавьте папку lang и файлы en-US.js и fr-FR.js в проект и определите текстовые строки для каждого языка:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
// en-US.js
export default {
welcome: 'Welcome to my website',
about: 'About me',
contact: 'Contact'
}
// fr-FR.js
export default {
welcome: 'Bienvenue sur mon site web',
about: 'À propos de moi',
contact: 'Contactez-moi'
}
|
Шаг 3: Переключение языков
Добавьте кнопку для переключения языков в компонент, например, в шапке сайта:
1 2 3 4 5 6 7 8 9 10 11 |
<template>
<header>
<nav>
<ul>
<li v-for="locale in $i18n.locales" :key="locale.code">
<nuxt-link :to="switchLocalePath(locale.code)">{{ locale.name }}</nuxt-link>
</li>
</ul>
</nav>
</header>
</template>
|
Здесь мы использовали директиву v-for, чтобы пройти по списку языков, и метод switchLocalePath, который создает путь для переключения языка приложения.
Шаг 4: Использование переводов
Теперь вы можете использовать переводы во всем приложении с помощью компонента $t:
1 2 3 4 5 6 7 |
<template>
<div>
<h1>{{ $t('welcome') }}</h1>
<p>{{ $t('about') }}</p>
<p>{{ $t('contact') }}</p>
</div>
</template>
|
Это был обзор простого способа создания мультиязычного приложения в Nuxt.js с помощью пакета i18n. С этим подходом вы можете легко добавлять новые языки и переводить контент без необходимости изменять приложение.
@shirley.vonrueden
Отличный обзор! Разработка мультиязычного приложения с использованием пакета i18n в Nuxt.js действительно облегчит работу с переводами и локализацией. При необходимости, также можно дополнить приложение другими функциями, такими как динамическая загрузка компонентов для каждого языка, динамическая смена языка без перезагрузки страницы и другие.
Благодаря удобному API Nuxt.js и i18n, разработчики получают простой и эффективный инструмент для создания мультиязычных приложений.