Skip to content

Commit 504675d

Browse files
committed
fix(example): lazy-loading example
1 parent eb20b7b commit 504675d

File tree

14 files changed

+404
-57
lines changed

14 files changed

+404
-57
lines changed

examples/lazy-loading/vite/package.json

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,16 @@
88
"serve": "vite preview"
99
},
1010
"dependencies": {
11-
"vue": "^3.2.0",
11+
"vue": "next",
1212
"vue-i18n": "workspace:*",
13-
"vue-router": "^4.0.8"
13+
"vue-router": "next"
1414
},
1515
"devDependencies": {
16-
"@intlify/vite-plugin-vue-i18n": "^2.4.0",
17-
"@vitejs/plugin-vue": "^1.9.3",
18-
"@vue/compiler-sfc": "^3.2.0",
19-
"vite": "^2.6.0",
20-
"vue-tsc": "^0.3.0"
16+
"@intlify/vite-plugin-vue-i18n": "next",
17+
"@vitejs/plugin-vue": "^1.9.4",
18+
"@vue/compiler-sfc": "latest",
19+
"vite": "^2.6.14",
20+
"vue-tsc": "^0.29.6"
2121
},
2222
"private": true
2323
}

examples/lazy-loading/vite/src/App.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ export default defineComponent({
3737
name: 'App',
3838
setup() {
3939
const router = useRouter()
40-
const { t, locale } = useI18n({ useScope: 'global' })
40+
const { t, locale } = useI18n() // same as `useI18n({ useScope: 'global' })`
4141
4242
/**
4343
* select locale value for language select form
Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,32 @@
11
import { nextTick } from 'vue'
22
import { createI18n } from 'vue-i18n'
33

4-
import type { I18n, I18nOptions, Composer } from 'vue-i18n'
4+
import type { I18n, I18nOptions, Locale, VueI18n, Composer } from 'vue-i18n'
55

66
export const SUPPORT_LOCALES = ['en', 'ja']
77

8+
export function getLocale(i18n: I18n): string {
9+
return i18n.mode === 'legacy'
10+
? (i18n.global as unknown as VueI18n).locale
11+
: (i18n.global as unknown as Composer).locale.value
12+
}
13+
14+
export function setLocale(i18n: I18n, locale: Locale): void {
15+
if (i18n.mode === 'legacy') {
16+
;(i18n.global as unknown as VueI18n).locale = locale
17+
} else {
18+
;(i18n.global as unknown as Composer).locale.value = locale
19+
}
20+
}
21+
822
export function setupI18n(options: I18nOptions = { locale: 'en' }): I18n {
923
const i18n = createI18n(options)
1024
setI18nLanguage(i18n, options.locale!)
1125
return i18n
1226
}
1327

14-
export function setI18nLanguage(i18n: I18n, locale: string): void {
15-
if (i18n.mode === 'legacy') {
16-
i18n.global.locale = locale
17-
} else {
18-
;((i18n.global as unknown) as Composer).locale.value = locale
19-
}
28+
export function setI18nLanguage(i18n: I18n, locale: Locale): void {
29+
setLocale(i18n, locale)
2030
/**
2131
* NOTE:
2232
* If you need to specify the language setting for headers, such as the `fetch` API, set it here.
@@ -27,12 +37,17 @@ export function setI18nLanguage(i18n: I18n, locale: string): void {
2737
document.querySelector('html')!.setAttribute('lang', locale)
2838
}
2939

30-
export async function loadLocaleMessages(i18n: I18n, locale: string) {
40+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
41+
const getResourceMessages = (r: any) => r.default || r
42+
43+
export async function loadLocaleMessages(i18n: I18n, locale: Locale) {
3144
// load locale messages
32-
const messages = await import(/* @vite-ignore */ `./locales/${locale}.yaml`)
45+
const messages = await import(
46+
/* @vite-ignore */ `./locales/${locale}.json`
47+
).then(getResourceMessages)
3348

3449
// set locale and locale message
35-
i18n.global.setLocaleMessage(locale, messages.default)
50+
i18n.global.setLocaleMessage(locale, messages)
3651

3752
return nextTick()
3853
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
{
2+
"pages": {
3+
"home": "This page is home page",
4+
"about": "This page is about page"
5+
},
6+
"navigations": {
7+
"home": "Home",
8+
"about": "About"
9+
},
10+
"labels": {
11+
"language": "Languages"
12+
}
13+
}

examples/lazy-loading/vite/src/locales/en.yaml

Lines changed: 0 additions & 8 deletions
This file was deleted.
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
{
2+
"pages": {
3+
"home": "このページはホームです。",
4+
"about": "このページはアバウトページです。"
5+
},
6+
"navigations": {
7+
"home": "ホーム",
8+
"about": "アバウト"
9+
},
10+
"labels": {
11+
"language": "言語"
12+
}
13+
}

examples/lazy-loading/vite/src/locales/ja.yaml

Lines changed: 0 additions & 8 deletions
This file was deleted.

examples/lazy-loading/vite/src/main.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import App from './App.vue'
33
import './index.css'
44
import { setupRouter } from './router'
55
import { setupI18n } from './i18n'
6-
import en from './locales/en.yaml'
6+
import en from './locales/en.json'
77

88
const i18n = setupI18n({
99
legacy: false,

examples/lazy-loading/vite/src/pages/About.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<script setup lang="ts">
22
import { useI18n } from 'vue-i18n'
33
4-
const { t } = useI18n({ useScope: 'global' })
4+
const { t } = useI18n() // same as `useI18n({ useScope: 'global' })`
55
</script>
66

77
<template>

examples/lazy-loading/vite/src/pages/Home.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<script setup lang="ts">
22
import { useI18n } from 'vue-i18n'
33
4-
const { t } = useI18n({ useScope: 'global' })
4+
const { t } = useI18n() // same as `useI18n({ useScope: 'global' })`
55
</script>
66

77
<template>

0 commit comments

Comments
 (0)