File tree Expand file tree Collapse file tree 9 files changed +45
-16
lines changed Expand file tree Collapse file tree 9 files changed +45
-16
lines changed Original file line number Diff line number Diff line change @@ -123,9 +123,7 @@ export const createVueApp = async ({
123
123
siteLocaleData . value
124
124
)
125
125
)
126
- const pageLang = computed ( ( ) =>
127
- resolvePageLang ( pageFrontmatter . value , siteLocaleData . value )
128
- )
126
+ const pageLang = computed ( ( ) => resolvePageLang ( pageData . value ) )
129
127
130
128
// provide global computed
131
129
app . provide ( routeLocaleSymbol , routeLocale )
Original file line number Diff line number Diff line change @@ -12,6 +12,7 @@ const pageDataEmpty = readonly({
12
12
key : '' ,
13
13
path : '' ,
14
14
title : '' ,
15
+ lang : '' ,
15
16
frontmatter : { } ,
16
17
excerpt : '' ,
17
18
headers : [ ] ,
Original file line number Diff line number Diff line change 1
1
import { inject } from 'vue'
2
2
import type { ComputedRef , InjectionKey } from 'vue'
3
- import { isString } from '@vuepress/shared'
4
- import type { PageFrontmatter } from './pageFrontmatter'
5
- import type { SiteLocaleData } from './siteLocaleData'
3
+ import type { PageData } from '@vuepress/shared'
6
4
7
5
export type PageLang = string
8
6
export type PageLangRef = ComputedRef < PageLang >
@@ -19,12 +17,11 @@ export const usePageLang = (): PageLangRef => {
19
17
return pageLang
20
18
}
21
19
22
- export const resolvePageLang = (
23
- frontmatter : PageFrontmatter ,
24
- siteLocale : SiteLocaleData
25
- ) : PageLang => {
26
- if ( isString ( frontmatter . lang ) && frontmatter . lang ) {
27
- return frontmatter . lang
28
- }
29
- return siteLocale . lang || 'en'
30
- }
20
+ /**
21
+ * Resolve language of current page
22
+ *
23
+ * It's mainly used for the `lang` attribute of `<html>` tag,
24
+ * which should not be empty
25
+ */
26
+ export const resolvePageLang = ( pageData : PageData ) : PageLang =>
27
+ pageData . lang || 'en'
Original file line number Diff line number Diff line change @@ -7,6 +7,7 @@ export const resolvePageData = ({
7
7
key,
8
8
path,
9
9
title,
10
+ lang,
10
11
frontmatter,
11
12
excerpt,
12
13
headers,
@@ -15,6 +16,7 @@ export const resolvePageData = ({
15
16
key,
16
17
path,
17
18
title,
19
+ lang,
18
20
frontmatter,
19
21
excerpt,
20
22
headers,
Original file line number Diff line number Diff line change @@ -9,6 +9,7 @@ import { resolvePageFileContent } from './resolvePageFileContent'
9
9
import { resolvePageFilePath } from './resolvePageFilePath'
10
10
import { resolvePageFrontmatter } from './resolvePageFrontmatter'
11
11
import { resolvePageKey } from './resolvePageKey'
12
+ import { resolvePageLang } from './resolvePageLang'
12
13
import { resolvePagePath } from './resolvePagePath'
13
14
import { resolvePagePermalink } from './resolvePagePermalink'
14
15
import { resolvePageRoutesInfo } from './resolvePageRoutesInfo'
@@ -48,6 +49,9 @@ export const createPage = async (
48
49
// infer page path according to file path
49
50
const { pathInferred, pathLocale } = inferPagePath ( { app, filePathRelative } )
50
51
52
+ // resolve language from frontmatter and site options
53
+ const lang = resolvePageLang ( { app, frontmatter, pathLocale } )
54
+
51
55
// resolve page permalink
52
56
const permalink = resolvePagePermalink ( {
53
57
options,
@@ -118,5 +122,6 @@ export const createPage = async (
118
122
links,
119
123
slug,
120
124
date,
125
+ lang,
121
126
}
122
127
}
Original file line number Diff line number Diff line change @@ -9,6 +9,7 @@ export * from './resolvePageFileContent'
9
9
export * from './resolvePageFilePath'
10
10
export * from './resolvePageFrontmatter'
11
11
export * from './resolvePageKey'
12
+ export * from './resolvePageLang'
12
13
export * from './resolvePagePath'
13
14
export * from './resolvePagePermalink'
14
15
export * from './resolvePageRoutesInfo'
Original file line number Diff line number Diff line change @@ -28,7 +28,7 @@ export const inferPagePath = ({
28
28
. replace ( / \/ ( R E A D M E | i n d e x ) .h t m l $ / i, '/' )
29
29
30
30
// resolve page locale path
31
- const pathLocale = resolveLocalePath ( app . options . locales , pathInferred )
31
+ const pathLocale = resolveLocalePath ( app . siteData . locales , pathInferred )
32
32
33
33
return {
34
34
pathInferred,
Original file line number Diff line number Diff line change
1
+ import { isString } from '@vuepress/shared'
2
+ import type { App , PageFrontmatter } from '../types'
3
+
4
+ /**
5
+ * Resolve language of page
6
+ */
7
+ export const resolvePageLang = ( {
8
+ app,
9
+ frontmatter,
10
+ pathLocale,
11
+ } : {
12
+ app : App
13
+ frontmatter : PageFrontmatter
14
+ pathLocale : string
15
+ } ) : string => {
16
+ if ( isString ( frontmatter . lang ) && frontmatter . lang ) {
17
+ return frontmatter . lang
18
+ }
19
+ return app . siteData . locales [ pathLocale ] ?. lang ?? app . siteData . lang ?? ''
20
+ }
Original file line number Diff line number Diff line change @@ -32,6 +32,11 @@ export type PageData<
32
32
*/
33
33
title : string
34
34
35
+ /**
36
+ * Language of the page
37
+ */
38
+ lang : string
39
+
35
40
/**
36
41
* Front matter of the page
37
42
*/
You can’t perform that action at this time.
0 commit comments