Skip to content

Commit 62c43d2

Browse files
authored
feat: improve built-in locales (#441)
1 parent 4a39d39 commit 62c43d2

File tree

22 files changed

+192
-472
lines changed

22 files changed

+192
-472
lines changed
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
/** 德语 */
2+
import type { SearchLocaleOptions } from '../../shared/index.js'
3+
4+
export const deSearchLocale: Partial<SearchLocaleOptions> = {
5+
placeholder: 'Dokumente durchsuchen',
6+
resetButtonTitle: 'Suche zurücksetzen',
7+
backButtonTitle: 'Schließen',
8+
noResultsText: 'Keine Suchergebnisse:',
9+
footer: {
10+
selectText: 'Auswählen',
11+
selectKeyAriaLabel: 'Eingabe',
12+
navigateText: 'Wechseln',
13+
navigateUpKeyAriaLabel: 'Nach oben',
14+
navigateDownKeyAriaLabel: 'Nach unten',
15+
closeText: 'Schließen',
16+
closeKeyAriaLabel: 'Beenden',
17+
},
18+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import type { SearchLocaleOptions } from '../../shared/index.js'
2+
3+
export const enSearchLocale: Partial<SearchLocaleOptions> = {
4+
placeholder: 'Search',
5+
resetButtonTitle: 'Reset search',
6+
backButtonTitle: 'Close search',
7+
noResultsText: 'No results for',
8+
footer: {
9+
selectText: 'to select',
10+
selectKeyAriaLabel: 'enter',
11+
navigateText: 'to navigate',
12+
navigateUpKeyAriaLabel: 'up arrow',
13+
navigateDownKeyAriaLabel: 'down arrow',
14+
closeText: 'to close',
15+
closeKeyAriaLabel: 'escape',
16+
},
17+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
/** 法语 */
2+
import type { SearchLocaleOptions } from '../../shared/index.js'
3+
4+
export const frSearchLocale: Partial<SearchLocaleOptions> = {
5+
placeholder: 'Rechercher dans la documentation',
6+
resetButtonTitle: 'Réinitialiser la recherche',
7+
backButtonTitle: 'Fermer',
8+
noResultsText: 'Aucun résultat trouvé :',
9+
footer: {
10+
selectText: 'sélectionner',
11+
selectKeyAriaLabel: 'Entrée',
12+
navigateText: 'naviguer',
13+
navigateUpKeyAriaLabel: 'haut',
14+
navigateDownKeyAriaLabel: 'bas',
15+
closeText: 'fermer',
16+
closeKeyAriaLabel: 'sortie',
17+
},
18+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
/**
2+
* 多语言预设
3+
* 除 /zh/ 、 /en/ 外,其它语言预设通过 AI 生成,不保证准确
4+
* 如有错误,欢迎提 issue
5+
*/
6+
import type { DefaultLocaleInfo } from '@vuepress/helper'
7+
import type { SearchLocaleOptions } from '../../shared/index.js'
8+
import { deSearchLocale } from './de.js'
9+
import { enSearchLocale } from './en.js'
10+
import { frSearchLocale } from './fr.js'
11+
import { jaSearchLocale } from './ja.js'
12+
import { ruSearchLocale } from './ru.js'
13+
import { zhTwSearchLocale } from './zh-tw.js'
14+
import { zhSearchLocale } from './zh.js'
15+
16+
export const SEARCH_LOCALES: DefaultLocaleInfo<Partial<SearchLocaleOptions>> = [
17+
[['en', 'en-US'], enSearchLocale],
18+
[['zh', 'zh-CN', 'zh-Hans', 'zh-Hant'], zhSearchLocale],
19+
[['zh-TW'], zhTwSearchLocale],
20+
[['de', 'de-DE'], deSearchLocale],
21+
[['fr', 'fr-FR'], frSearchLocale],
22+
[['ru', 'ru-RU'], ruSearchLocale],
23+
[['ja', 'ja-JP'], jaSearchLocale],
24+
]
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
/** 日语 */
2+
import type { SearchLocaleOptions } from '../../shared/index.js'
3+
4+
export const jaSearchLocale: Partial<SearchLocaleOptions> = {
5+
placeholder: 'ドキュメントを検索',
6+
resetButtonTitle: '検索をリセット',
7+
backButtonTitle: '閉じる',
8+
noResultsText: '検索結果がありません:',
9+
footer: {
10+
selectText: '選択',
11+
selectKeyAriaLabel: '入力',
12+
navigateText: '切り替え',
13+
navigateUpKeyAriaLabel: '上へ',
14+
navigateDownKeyAriaLabel: '下へ',
15+
closeText: '閉じる',
16+
closeKeyAriaLabel: '終了',
17+
},
18+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
/** 俄语 */
2+
import type { SearchLocaleOptions } from '../../shared/index.js'
3+
4+
export const ruSearchLocale: Partial<SearchLocaleOptions> = {
5+
placeholder: 'Поиск по документации',
6+
resetButtonTitle: 'Сбросить поиск',
7+
backButtonTitle: 'Закрыть',
8+
noResultsText: 'Нет результатов поиска:',
9+
footer: {
10+
selectText: 'Выбрать',
11+
selectKeyAriaLabel: 'Ввод',
12+
navigateText: 'Переключить',
13+
navigateUpKeyAriaLabel: 'Вверх',
14+
navigateDownKeyAriaLabel: 'Вниз',
15+
closeText: 'Закрыть',
16+
closeKeyAriaLabel: 'Выход',
17+
},
18+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
/** 繁体中文 */
2+
import type { SearchLocaleOptions } from '../../shared/index.js'
3+
4+
export const zhTwSearchLocale: Partial<SearchLocaleOptions> = {
5+
placeholder: '搜索文檔',
6+
resetButtonTitle: '重置搜索',
7+
backButtonTitle: '關閉',
8+
noResultsText: '無搜索結果:',
9+
footer: {
10+
selectText: '選擇',
11+
selectKeyAriaLabel: '輸入',
12+
navigateText: '切換',
13+
navigateUpKeyAriaLabel: '向上',
14+
navigateDownKeyAriaLabel: '向下',
15+
closeText: '關閉',
16+
closeKeyAriaLabel: '退出',
17+
},
18+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import type { SearchLocaleOptions } from '../../shared/index.js'
2+
3+
export const zhSearchLocale: Partial<SearchLocaleOptions> = {
4+
placeholder: '搜索文档',
5+
resetButtonTitle: '重置搜索',
6+
backButtonTitle: '关闭',
7+
noResultsText: '无搜索结果:',
8+
footer: {
9+
selectText: '选择',
10+
selectKeyAriaLabel: '输入',
11+
navigateText: '切换',
12+
navigateUpKeyAriaLabel: '向上',
13+
navigateDownKeyAriaLabel: '向下',
14+
closeText: '关闭',
15+
closeKeyAriaLabel: '退出',
16+
},
17+
}

plugins/plugin-search/src/node/searchPlugin.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
import type { Plugin } from 'vuepress/core'
22
import type { SearchPluginOptions } from '../shared/index.js'
3-
import { addViteOptimizeDepsInclude } from '@vuepress/helper'
3+
import { addViteOptimizeDepsInclude, getFullLocaleConfig } from '@vuepress/helper'
44
import chokidar from 'chokidar'
55
import { getDirname, path } from 'vuepress/utils'
6+
import { SEARCH_LOCALES } from './locales/index.js'
67
import { onSearchIndexRemoved, onSearchIndexUpdated, prepareSearchIndex } from './prepareSearchIndex.js'
78

89
const __dirname = getDirname(import.meta.url)
@@ -18,7 +19,12 @@ export function searchPlugin({
1819
clientConfigFile: path.resolve(__dirname, '../client/config.js'),
1920

2021
define: {
21-
__SEARCH_LOCALES__: locales,
22+
__SEARCH_LOCALES__: getFullLocaleConfig({
23+
app,
24+
name: '@vuepress-plume/plugin-search',
25+
default: SEARCH_LOCALES,
26+
config: locales,
27+
}),
2228
__SEARCH_OPTIONS__: searchOptions,
2329
},
2430

theme/src/node/config/index.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ export * from './resolveLocaleOptions.js'
44
export * from './resolveNotesOptions.js'
55

66
export * from './resolveProvideData.js'
7-
export * from './resolveSearchOptions.js'
87

98
export * from './resolveThemeData.js'
109
export * from './resolveThemeOption.js'

theme/src/node/config/resolveLocaleOptions.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import type { App } from 'vuepress'
22
import type { PlumeThemeData, PlumeThemeLocaleOptions } from '../../shared/index.js'
33
import { hasOwn, uniq } from '@pengzhanbo/utils'
4-
import { entries, fromEntries, getLocaleConfig, isPlainObject } from '@vuepress/helper'
4+
import { entries, fromEntries, getFullLocaleConfig, isPlainObject } from '@vuepress/helper'
55
import { LOCALE_OPTIONS } from '../locales/index.js'
66
import { THEME_NAME } from '../utils/index.js'
77

@@ -43,7 +43,7 @@ const FALLBACK_OPTIONS: PlumeThemeData = {
4343
export function resolveLocaleOptions(app: App, { locales, ...options }: PlumeThemeLocaleOptions): PlumeThemeLocaleOptions {
4444
const resolvedOptions: PlumeThemeLocaleOptions = {
4545
...mergeLocaleOptions(FALLBACK_OPTIONS, options),
46-
locales: getLocaleConfig({
46+
locales: getFullLocaleConfig({
4747
app,
4848
name: THEME_NAME,
4949
default: LOCALE_OPTIONS,
Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,22 @@
11
import type { App } from 'vuepress'
22
import type { PlumeThemePluginOptions } from '../../shared/index.js'
3-
import { entries, fromEntries, getLocalePaths, inferRootLocalePath, isPlainObject } from '@vuepress/helper'
3+
import { getFullLocaleConfig, isPlainObject } from '@vuepress/helper'
44
import { PRESET_LOCALES } from '../locales/index.js'
55

66
export function resolveProvideData(
77
app: App,
88
plugins: PlumeThemePluginOptions,
99
): Record<string, any> {
10-
const root = inferRootLocalePath(app)
11-
const locales = [...getLocalePaths(app), root]
1210
return {
1311
// 注入水印配置
1412
__PLUME_WM_FP__: isPlainObject(plugins.watermark)
1513
? plugins.watermark.fullPage !== false
1614
: true,
1715
// 注入多语言配置
18-
__PLUME_PRESET_LOCALE__: fromEntries(
19-
entries(PRESET_LOCALES)
20-
.filter(([locale]) => locales.includes(locale))
21-
.map(([locale, value]) => [locale === root ? '/' : locale, value]),
22-
),
16+
__PLUME_PRESET_LOCALE__: getFullLocaleConfig({
17+
app,
18+
name: 'vuepress-theme-plume/preset-locales',
19+
default: PRESET_LOCALES,
20+
}),
2321
}
2422
}

theme/src/node/config/resolveSearchOptions.ts

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

theme/src/node/locales/de.ts

Lines changed: 0 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
11
/** 德语 */
2-
import type { SearchLocaleOptions } from '@vuepress-plume/plugin-search'
3-
import type { DocSearchLocaleOptions } from '@vuepress/plugin-docsearch'
42
import type { PlumeThemeLocaleData, PresetLocale } from '../../shared/index.js'
53

64
export const deLocale: PlumeThemeLocaleData = {
@@ -66,61 +64,3 @@ export const dePresetLocale: PresetLocale = {
6664
'CC-BY-ND-4.0': 'Namensnennung-Keine Bearbeitung 4.0 International',
6765
'CC-BY-SA-4.0': 'Namensnennung-Weitergabe unter gleichen Bedingungen 4.0 International',
6866
}
69-
70-
export const deDocsearchLocale: DocSearchLocaleOptions = {
71-
placeholder: 'Dokumente durchsuchen',
72-
translations: {
73-
button: {
74-
buttonText: 'Dokumente durchsuchen',
75-
buttonAriaLabel: 'Dokumente durchsuchen',
76-
},
77-
modal: {
78-
searchBox: {
79-
resetButtonTitle: 'Suchkriterien löschen',
80-
resetButtonAriaLabel: 'Suchkriterien löschen',
81-
cancelButtonText: 'Abbrechen',
82-
cancelButtonAriaLabel: 'Abbrechen',
83-
},
84-
startScreen: {
85-
recentSearchesTitle: 'Letzte Suchen',
86-
noRecentSearchesText: 'Keine letzten Suchen',
87-
saveRecentSearchButtonTitle: 'Zu letzten Suchen hinzufügen',
88-
removeRecentSearchButtonTitle: 'Aus letzten Suchen entfernen',
89-
favoriteSearchesTitle: 'Favoriten',
90-
removeFavoriteSearchButtonTitle: 'Aus Favoriten entfernen',
91-
},
92-
errorScreen: {
93-
titleText: 'Ergebnisse konnten nicht abgerufen werden',
94-
helpText: 'Möglicherweise müssen Sie Ihre Internetverbindung überprüfen.',
95-
},
96-
footer: {
97-
selectText: 'Auswählen',
98-
navigateText: 'Wechseln',
99-
closeText: 'Schließen',
100-
searchByText: 'Bereitgestellt von',
101-
},
102-
noResultsScreen: {
103-
noResultsText: 'Keine relevanten Ergebnisse gefunden',
104-
suggestedQueryText: 'Sie können versuchen, nach',
105-
reportMissingResultsText: 'Sie glauben, dass diese Suche Ergebnisse liefern sollte?',
106-
reportMissingResultsLinkText: 'Klicken Sie hier, um Feedback zu geben',
107-
},
108-
},
109-
},
110-
}
111-
112-
export const deSearchLocale: Partial<SearchLocaleOptions> = {
113-
placeholder: 'Dokumente durchsuchen',
114-
resetButtonTitle: 'Suche zurücksetzen',
115-
backButtonTitle: 'Schließen',
116-
noResultsText: 'Keine Suchergebnisse:',
117-
footer: {
118-
selectText: 'Auswählen',
119-
selectKeyAriaLabel: 'Eingabe',
120-
navigateText: 'Wechseln',
121-
navigateUpKeyAriaLabel: 'Nach oben',
122-
navigateDownKeyAriaLabel: 'Nach unten',
123-
closeText: 'Schließen',
124-
closeKeyAriaLabel: 'Beenden',
125-
},
126-
}

theme/src/node/locales/en.ts

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import type { SearchLocaleOptions } from '@vuepress-plume/plugin-search'
21
import type { PlumeThemeLocaleData, PresetLocale } from '../../shared/index.js'
32

43
export const enLocale: PlumeThemeLocaleData = {
@@ -51,19 +50,3 @@ export const enPresetLocale: PresetLocale = {
5150
'CC-BY-ND-4.0': 'Attribution-NoDerivatives 4.0 International',
5251
'CC-BY-SA-4.0': 'Attribution-ShareAlike 4.0 International',
5352
}
54-
55-
export const enSearchLocale: Partial<SearchLocaleOptions> = {
56-
placeholder: 'Search',
57-
resetButtonTitle: 'Reset search',
58-
backButtonTitle: 'Close search',
59-
noResultsText: 'No results for',
60-
footer: {
61-
selectText: 'to select',
62-
selectKeyAriaLabel: 'enter',
63-
navigateText: 'to navigate',
64-
navigateUpKeyAriaLabel: 'up arrow',
65-
navigateDownKeyAriaLabel: 'down arrow',
66-
closeText: 'to close',
67-
closeKeyAriaLabel: 'escape',
68-
},
69-
}

0 commit comments

Comments
 (0)