国际化(i18 n)
Nuxt UI支持50多个语言环境和多方向(LTR/RTL)国际化。
用法
Locale
使用locale prop和你想从@nuxt/ui/locale使用的locale:
app.vue
<script setup lang="ts">
import { fr } from '@nuxt/ui/locale'
</script>
<template>
<UApp :locale="fr">
<NuxtPage />
</UApp>
</template>
自定义区域设置
您可以使用defineLocale实用程序创建自己的区域设置:
app.vue
<script setup lang="ts">
import type { Messages } from '@nuxt/ui'
const locale = defineLocale<Messages>({
name: 'My custom locale',
code: 'en',
dir: 'ltr',
messages: {
// implement pairs
}
})
</script>
<template>
<UApp :locale="locale">
<NuxtPage />
</UApp>
</template>
看看
code参数,在那里你需要传递语言的iso代码。示例:hi印地语(语言)de-AT:德语(语言),用于奥地利(地区)
Extend语言环境
您可以通过使用extendLocale实用程序覆盖现有区域设置的messages或code来自定义该区域设置:
app.vue
<script setup lang="ts">
import { en } from '@nuxt/ui/locale'
const locale = extendLocale(en, {
code: 'en-AU',
messages: {
commandPalette: {
placeholder: 'Search a component...'
}
}
})
</script>
<template>
<UApp :locale="locale">
<NuxtPage />
</UApp>
</template>
动态语言环境
要在语言之间动态切换,您可以使用Nuxt I18 n模块。
安装Nuxt I18 n软件包
pnpm add @nuxtjs/i18n
yarn add @nuxtjs/i18n
npm install @nuxtjs/i18n
bun add @nuxtjs/i18n
在您的nuxt.config.ts中添加Nuxt I18 n模块
nuxt.config.ts
export default defineNuxtConfig({
modules: [
'@nuxt/ui',
'@nuxtjs/i18n'
],
css: ['~/assets/css/main.css'],
i18n: {
locales: [{
code: 'de',
name: 'Deutsch'
}, {
code: 'en',
name: 'English'
}, {
code: 'fr',
name: 'Français'
}]
}
})
使用useI18n设置locale属性
app.vue
<script setup lang="ts">
import * as locales from '@nuxt/ui/locale'
const { locale } = useI18n()
</script>
<template>
<UApp :locale="locales[locale]">
<NuxtPage />
</UApp>
</template>
自动链接本地化:badge{label="4.7+" class="align-text-top"}
当安装@nuxtjs/i18n时,Link组件会使用$localePath帮助程序自动本地化内部链接。这意味着您不需要手动使用localePath()或localeRoute()包装链接。
<template>
<!-- Automatically becomes /en/about or /fr/about based on current locale -->
<ULink to="/about">About</ULink>
<UButton to="/contact">Contact</UButton>
</template>
外部链接和绝对URL会自动检测并跳过本地化。如果需要,您仍然可以手动使用
localePath()或localeRoute()。动态方向
每个区域设置都有一个dir属性,App组件将使用该属性设置所有组件的方向性。
在多语言应用程序中,您可能希望根据用户的区域设置动态设置<html>元素上的lang和dir属性,您可以使用useHead组合:
app.vue
<script setup lang="ts">
import * as locales from '@nuxt/ui/locale'
const { locale } = useI18n()
const lang = computed(() => locales[locale.value].code)
const dir = computed(() => locales[locale.value].dir)
useHead({
htmlAttrs: {
lang,
dir
}
})
</script>
<template>
<UApp :locale="locales[locale]">
<NuxtPage />
</UApp>
</template>
支持的语言
By default, the en locale is used.
🇸🇦
العربية
Code:
ar🇦🇿
Azərbaycanca
Code:
az🇧🇾
Беларуская
Code:
be🇧🇬
Български
Code:
bg🇧🇩
বাংলা
Code:
bn🇪🇸
Català
Code:
ca🇮🇶
کوردی
Code:
ckb🇨🇿
Čeština
Code:
cs🇩🇰
Dansk
Code:
da🇩🇪
Deutsch
Code:
de🇦🇹
Deutsch (Österreich)
Code:
de-AT🇨🇭
Schweizer Hochdeutsch
Code:
de-CH🇬🇷
Ελληνικά
Code:
el🇺🇸
English
Code:
en🇬🇧
English (United Kingdom)
Code:
en-GB🇪🇸
Español
Code:
es🇪🇪
Eesti
Code:
et🇪🇸
Euskara
Code:
eu🇮🇷
فارسی
Code:
fa-IR🇫🇮
Suomi
Code:
fi🇫🇷
Français
Code:
fr🇪🇸
Galego
Code:
gl🇮🇱
עברית
Code:
he🇮🇳
हिन्दी
Code:
hi🇭🇷
Hrvatski
Code:
hr🇭🇺
Magyar
Code:
hu🇦🇲
Հայերեն
Code:
hy🇮🇩
Bahasa Indonesia
Code:
id🇮🇸
Íslenska
Code:
is🇮🇹
Italiano
Code:
it🇯🇵
日本語
Code:
ja🇬🇪
ქართული
Code:
ka🇰🇿
Қазақша
Code:
kk🇰🇭
ភាសាខ្មែរ
Code:
km🇰🇷
한국어
Code:
ko🇰🇬
Кыргызча
Code:
ky🇱🇺
Lëtzebuergesch
Code:
lb🇱🇦
ລາວ
Code:
lo🇱🇹
Lietuvių
Code:
lt🇱🇻
Latviešu
Code:
lv🇲🇳
Монгол
Code:
mn🇲🇾
Melayu
Code:
ms🇳🇴
Norsk Bokmål
Code:
nb-NO🇳🇱
Nederlands
Code:
nl🇵🇱
Polski
Code:
pl🇵🇹
Português
Code:
pt🇧🇷
Português (Brasil)
Code:
pt-BR🇷🇴
Română
Code:
ro🇷🇺
Русский
Code:
ru🇸🇰
Slovenčina
Code:
sk🇸🇮
Slovenščina
Code:
sl🇦🇱
Shqip
Code:
sq🇸🇪
Svenska
Code:
sv🇹🇬
Тоҷикӣ
Code:
tg🇹🇭
ไทย
Code:
th🇹🇷
Türkçe
Code:
tr🇨🇳
ئۇيغۇرچە
Code:
ug-CN🇺🇦
Українська
Code:
uk🇵🇰
اردو
Code:
ur🇺🇿
Oʻzbek
Code:
uz🇻🇳
Tiếng Việt
Code:
vi🇨🇳
简体中文
Code:
zh-CN🇹🇼
繁體中文
Code:
zh-TW If you need additional languages, you can contribute by creating a PR to add a new locale in
src/runtime/locale/. You can use the CLI to create a new locale:
pnpm cli make locale --code <code>