国际化 (i18n)

Vuetify 支持其组件的语言国际化 (i18n)。 在引导应用程序时,您可以使用 current 选项指定可用的语言环境和当前活动的语言环境。lang 服务还支持与 vue-i18n 的轻松集成。

快速入门

要设置可用的语言环境或当前语言环境,请在安装 Vuetify 时提供 lang 选项。locales 属性将与现有的语言环境合并。 你可以在运行时通过 Vue 实例上的 $vuetify 对象更改语言环境。

目前,Vuetify 提供以下语言的翻译:

  • af - Afrikaans (Afrikaans)
  • ar - Arabic (اللغة العربية)
  • ca - Catalan (català)
  • cs - Czech (čeština)
  • de - German (Deutsch)
  • el - Greek (Ελληνικά)
  • en - English
  • es - Spanish (Español)
  • et - Estonian (eesti)
  • fa - Persian (فارسی)
  • fr - French (Français)
  • he - Hebrew (עברית)
  • hr - Croatian (hrvatski jezik)
  • hu - Hungarian (magyar)
  • id - Indonesian (Indonesian)
  • it - Italian (Italiano)
  • ja - Japanese (日本語)
  • ko - Korean (한국어)
  • lt - Lithuanian (lietuvių kalba)
  • lv - Latvian (latviešu valoda)
  • nl - Dutch (Nederlands)
  • no - Norwegian (Norsk)
  • pl - Polish (język polski)
  • pt - Portuguese (Português)
  • ro - Romanian (Română)
  • ru - Russian (Русский)
  • sl - Slovene (slovenski jezik)
  • srCyrl - Serbian (српски језик)
  • sv - Swedish (svenska)
  • th - Thai (ไทย)
  • tr - Turkish (Türkçe)
  • uk - Ukrainian (Українська)
  • zhHans - Chinese (中文)
  • zhHant - Chinese (中文)
  1. // src/plugins/vuetify.js
  2. import Vue from 'vue'
  3. import Vuetify from 'vuetify/lib'
  4. Vue.use(Vuetify)
  5. // Translation provided by Vuetify (javascript)
  6. import zhHans from 'vuetify/es5/locale/zh-Hans'
  7. // Translation provided by Vuetify (typescript)
  8. import pl from 'vuetify/src/locale/pl'
  9. // Your own translation file
  10. import sv from './i18n/vuetify/sv'
  11. Vue.component('my-component', {
  12. methods: {
  13. changeLocale () {
  14. this.$vuetify.lang.current = 'sv'
  15. },
  16. },
  17. })
  18. export default new Vuetify({
  19. lang: {
  20. locales: { zhHans, pl, sv },
  21. current: 'zhHans',
  22. },
  23. })

Vuetify 只提供了一个基本的翻译功能 t。对于更高级的国际化功能,建议将 Vuetifys 与 vue-i18n 的集成。

API

从下面选择您想要的组件,并查看可用的属性、插槽、事件和函数。

Internationalization(国际化) - 图1

创建翻译

要创建您自己的翻译,请使用下面的代码。你将继承 Vuetify 的翻译,但也可以添加你自己的翻译。另外,你也可以复制并粘贴 vuetify/src/locale/en.ts 的内容,但这需要在更新时手动同步文件。

  1. import { en } from 'vuetify/src/locale'
  2. export default {
  3. ...en,
  4. key1: "key 1 internationalization",
  5. key2: "key 2 internationalization",
  6. namespace: {
  7. key3: "key 3 internationalization"
  8. }
  9. }

自定义组件

如果要构建需要国际化的自定义 Vuetify 组件,可以使用 t 函数,该函数是 $vuetify.lang API 的一部分。

  1. <!-- Vue Component -->
  2. <template>
  3. <div class="my-component">
  4. {{ $vuetify.lang.t('$vuetify.my-component.text') }}
  5. </div>
  6. </template>

Vue i18n

如果您使用的是 vue-i18n 软件包,您可以非常容易地将其与 Vuetify 集成。这让你可以将所有的翻译都保存在一个地方。只需在你的消息中为 $vuetify 创建一个条目,然后添加相应的语言更改。然后通过提供一个自定义翻译功能将 vue-i18n 与 Vuetify 挂钩(如下图所示)。欲知所有可用按键的完整列表,请 导航这里

一个重要注意事项是,在使用外部本地化插件时,如果当前语言环境不存在本地化,vuetify 不会自动默认使用英语。 因此,请确保为插件提供尽可能完整的本地化。

  1. // src/plugins/vuetify.js
  2. import Vue from 'vue'
  3. import Vuetify from 'vuetify/lib'
  4. import VueI18n from 'vue-i18n'
  5. Vue.use(Vuetify)
  6. Vue.use(VueI18n)
  7. const messages = {
  8. en: {
  9. $vuetify: {
  10. dataIterator: {
  11. rowsPerPageText: 'Items per page:',
  12. pageText: '{0}-{1} of {2}',
  13. },
  14. },
  15. },
  16. sv: {
  17. $vuetify: {
  18. dataIterator: {
  19. rowsPerPageText: 'Element per sida:',
  20. pageText: '{0}-{1} av {2}',
  21. },
  22. },
  23. },
  24. }
  25. // Create VueI18n instance with options
  26. const i18n = new VueI18n({
  27. locale: 'sv', // set locale
  28. messages, // set locale messages
  29. })
  30. export default new Vuetify({
  31. lang: {
  32. t: (key, ...params) => i18n.t(key, params),
  33. },
  34. })