Skip to content

Commit

Permalink
feat: improve built-in locales
Browse files Browse the repository at this point in the history
  • Loading branch information
pengzhanbo committed Jan 20, 2025
1 parent 1dba45f commit b951f3b
Show file tree
Hide file tree
Showing 22 changed files with 192 additions and 472 deletions.
18 changes: 18 additions & 0 deletions plugins/plugin-search/src/node/locales/de.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
/** 德语 */
import type { SearchLocaleOptions } from '../../shared/index.js'

export const deSearchLocale: Partial<SearchLocaleOptions> = {
placeholder: 'Dokumente durchsuchen',
resetButtonTitle: 'Suche zurücksetzen',
backButtonTitle: 'Schließen',
noResultsText: 'Keine Suchergebnisse:',
footer: {
selectText: 'Auswählen',
selectKeyAriaLabel: 'Eingabe',
navigateText: 'Wechseln',
navigateUpKeyAriaLabel: 'Nach oben',
navigateDownKeyAriaLabel: 'Nach unten',
closeText: 'Schließen',
closeKeyAriaLabel: 'Beenden',
},
}
17 changes: 17 additions & 0 deletions plugins/plugin-search/src/node/locales/en.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import type { SearchLocaleOptions } from '../../shared/index.js'

export const enSearchLocale: Partial<SearchLocaleOptions> = {
placeholder: 'Search',
resetButtonTitle: 'Reset search',
backButtonTitle: 'Close search',
noResultsText: 'No results for',
footer: {
selectText: 'to select',
selectKeyAriaLabel: 'enter',
navigateText: 'to navigate',
navigateUpKeyAriaLabel: 'up arrow',
navigateDownKeyAriaLabel: 'down arrow',
closeText: 'to close',
closeKeyAriaLabel: 'escape',
},
}
18 changes: 18 additions & 0 deletions plugins/plugin-search/src/node/locales/fr.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
/** 法语 */
import type { SearchLocaleOptions } from '../../shared/index.js'

export const frSearchLocale: Partial<SearchLocaleOptions> = {
placeholder: 'Rechercher dans la documentation',
resetButtonTitle: 'Réinitialiser la recherche',
backButtonTitle: 'Fermer',
noResultsText: 'Aucun résultat trouvé :',
footer: {
selectText: 'sélectionner',
selectKeyAriaLabel: 'Entrée',
navigateText: 'naviguer',
navigateUpKeyAriaLabel: 'haut',
navigateDownKeyAriaLabel: 'bas',
closeText: 'fermer',
closeKeyAriaLabel: 'sortie',
},
}
24 changes: 24 additions & 0 deletions plugins/plugin-search/src/node/locales/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
/**
* 多语言预设
* 除 /zh/ 、 /en/ 外,其它语言预设通过 AI 生成,不保证准确
* 如有错误,欢迎提 issue
*/
import type { DefaultLocaleInfo } from '@vuepress/helper'
import type { SearchLocaleOptions } from '../../shared/index.js'
import { deSearchLocale } from './de.js'
import { enSearchLocale } from './en.js'
import { frSearchLocale } from './fr.js'
import { jaSearchLocale } from './ja.js'
import { ruSearchLocale } from './ru.js'
import { zhTwSearchLocale } from './zh-tw.js'
import { zhSearchLocale } from './zh.js'

export const SEARCH_LOCALES: DefaultLocaleInfo<Partial<SearchLocaleOptions>> = [
[['en', 'en-US'], enSearchLocale],
[['zh', 'zh-CN', 'zh-Hans', 'zh-Hant'], zhSearchLocale],
[['zh-TW'], zhTwSearchLocale],
[['de', 'de-DE'], deSearchLocale],
[['fr', 'fr-FR'], frSearchLocale],
[['ru', 'ru-RU'], ruSearchLocale],
[['ja', 'ja-JP'], jaSearchLocale],
]
18 changes: 18 additions & 0 deletions plugins/plugin-search/src/node/locales/ja.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
/** 日语 */
import type { SearchLocaleOptions } from '../../shared/index.js'

export const jaSearchLocale: Partial<SearchLocaleOptions> = {
placeholder: 'ドキュメントを検索',
resetButtonTitle: '検索をリセット',
backButtonTitle: '閉じる',
noResultsText: '検索結果がありません:',
footer: {
selectText: '選択',
selectKeyAriaLabel: '入力',
navigateText: '切り替え',
navigateUpKeyAriaLabel: '上へ',
navigateDownKeyAriaLabel: '下へ',
closeText: '閉じる',
closeKeyAriaLabel: '終了',
},
}
18 changes: 18 additions & 0 deletions plugins/plugin-search/src/node/locales/ru.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
/** 俄语 */
import type { SearchLocaleOptions } from '../../shared/index.js'

export const ruSearchLocale: Partial<SearchLocaleOptions> = {
placeholder: 'Поиск по документации',
resetButtonTitle: 'Сбросить поиск',
backButtonTitle: 'Закрыть',
noResultsText: 'Нет результатов поиска:',
footer: {
selectText: 'Выбрать',
selectKeyAriaLabel: 'Ввод',
navigateText: 'Переключить',
navigateUpKeyAriaLabel: 'Вверх',
navigateDownKeyAriaLabel: 'Вниз',
closeText: 'Закрыть',
closeKeyAriaLabel: 'Выход',
},
}
18 changes: 18 additions & 0 deletions plugins/plugin-search/src/node/locales/zh-tw.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
/** 繁体中文 */
import type { SearchLocaleOptions } from '../../shared/index.js'

export const zhTwSearchLocale: Partial<SearchLocaleOptions> = {
placeholder: '搜索文檔',
resetButtonTitle: '重置搜索',
backButtonTitle: '關閉',
noResultsText: '無搜索結果:',
footer: {
selectText: '選擇',
selectKeyAriaLabel: '輸入',
navigateText: '切換',
navigateUpKeyAriaLabel: '向上',
navigateDownKeyAriaLabel: '向下',
closeText: '關閉',
closeKeyAriaLabel: '退出',
},
}
17 changes: 17 additions & 0 deletions plugins/plugin-search/src/node/locales/zh.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import type { SearchLocaleOptions } from '../../shared/index.js'

export const zhSearchLocale: Partial<SearchLocaleOptions> = {
placeholder: '搜索文档',
resetButtonTitle: '重置搜索',
backButtonTitle: '关闭',
noResultsText: '无搜索结果:',
footer: {
selectText: '选择',
selectKeyAriaLabel: '输入',
navigateText: '切换',
navigateUpKeyAriaLabel: '向上',
navigateDownKeyAriaLabel: '向下',
closeText: '关闭',
closeKeyAriaLabel: '退出',
},
}
10 changes: 8 additions & 2 deletions plugins/plugin-search/src/node/searchPlugin.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
import type { Plugin } from 'vuepress/core'
import type { SearchPluginOptions } from '../shared/index.js'
import { addViteOptimizeDepsInclude } from '@vuepress/helper'
import { addViteOptimizeDepsInclude, getFullLocaleConfig } from '@vuepress/helper'
import chokidar from 'chokidar'
import { getDirname, path } from 'vuepress/utils'
import { SEARCH_LOCALES } from './locales/index.js'
import { onSearchIndexRemoved, onSearchIndexUpdated, prepareSearchIndex } from './prepareSearchIndex.js'

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

define: {
__SEARCH_LOCALES__: locales,
__SEARCH_LOCALES__: getFullLocaleConfig({
app,
name: '@vuepress-plume/plugin-search',
default: SEARCH_LOCALES,
config: locales,
}),
__SEARCH_OPTIONS__: searchOptions,
},

Expand Down
1 change: 0 additions & 1 deletion theme/src/node/config/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ export * from './resolveLocaleOptions.js'
export * from './resolveNotesOptions.js'

export * from './resolveProvideData.js'
export * from './resolveSearchOptions.js'

export * from './resolveThemeData.js'
export * from './resolveThemeOption.js'
Expand Down
4 changes: 2 additions & 2 deletions theme/src/node/config/resolveLocaleOptions.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import type { App } from 'vuepress'
import type { PlumeThemeData, PlumeThemeLocaleOptions } from '../../shared/index.js'
import { hasOwn, uniq } from '@pengzhanbo/utils'
import { entries, fromEntries, getLocaleConfig, isPlainObject } from '@vuepress/helper'
import { entries, fromEntries, getFullLocaleConfig, isPlainObject } from '@vuepress/helper'
import { LOCALE_OPTIONS } from '../locales/index.js'
import { THEME_NAME } from '../utils/index.js'

Expand Down Expand Up @@ -43,7 +43,7 @@ const FALLBACK_OPTIONS: PlumeThemeData = {
export function resolveLocaleOptions(app: App, { locales, ...options }: PlumeThemeLocaleOptions): PlumeThemeLocaleOptions {
const resolvedOptions: PlumeThemeLocaleOptions = {
...mergeLocaleOptions(FALLBACK_OPTIONS, options),
locales: getLocaleConfig({
locales: getFullLocaleConfig({
app,
name: THEME_NAME,
default: LOCALE_OPTIONS,
Expand Down
14 changes: 6 additions & 8 deletions theme/src/node/config/resolveProvideData.ts
Original file line number Diff line number Diff line change
@@ -1,24 +1,22 @@
import type { App } from 'vuepress'
import type { PlumeThemePluginOptions } from '../../shared/index.js'
import { entries, fromEntries, getLocalePaths, inferRootLocalePath, isPlainObject } from '@vuepress/helper'
import { getFullLocaleConfig, isPlainObject } from '@vuepress/helper'
import { PRESET_LOCALES } from '../locales/index.js'

export function resolveProvideData(
app: App,
plugins: PlumeThemePluginOptions,
): Record<string, any> {
const root = inferRootLocalePath(app)
const locales = [...getLocalePaths(app), root]
return {
// 注入水印配置
__PLUME_WM_FP__: isPlainObject(plugins.watermark)
? plugins.watermark.fullPage !== false
: true,
// 注入多语言配置
__PLUME_PRESET_LOCALE__: fromEntries(
entries(PRESET_LOCALES)
.filter(([locale]) => locales.includes(locale))
.map(([locale, value]) => [locale === root ? '/' : locale, value]),
),
__PLUME_PRESET_LOCALE__: getFullLocaleConfig({
app,
name: 'vuepress-theme-plume/preset-locales',
default: PRESET_LOCALES,
}),
}
}
33 changes: 0 additions & 33 deletions theme/src/node/config/resolveSearchOptions.ts

This file was deleted.

60 changes: 0 additions & 60 deletions theme/src/node/locales/de.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
/** 德语 */
import type { SearchLocaleOptions } from '@vuepress-plume/plugin-search'
import type { DocSearchLocaleOptions } from '@vuepress/plugin-docsearch'
import type { PlumeThemeLocaleData, PresetLocale } from '../../shared/index.js'

export const deLocale: PlumeThemeLocaleData = {
Expand Down Expand Up @@ -66,61 +64,3 @@ export const dePresetLocale: PresetLocale = {
'CC-BY-ND-4.0': 'Namensnennung-Keine Bearbeitung 4.0 International',
'CC-BY-SA-4.0': 'Namensnennung-Weitergabe unter gleichen Bedingungen 4.0 International',
}

export const deDocsearchLocale: DocSearchLocaleOptions = {
placeholder: 'Dokumente durchsuchen',
translations: {
button: {
buttonText: 'Dokumente durchsuchen',
buttonAriaLabel: 'Dokumente durchsuchen',
},
modal: {
searchBox: {
resetButtonTitle: 'Suchkriterien löschen',
resetButtonAriaLabel: 'Suchkriterien löschen',
cancelButtonText: 'Abbrechen',
cancelButtonAriaLabel: 'Abbrechen',
},
startScreen: {
recentSearchesTitle: 'Letzte Suchen',
noRecentSearchesText: 'Keine letzten Suchen',
saveRecentSearchButtonTitle: 'Zu letzten Suchen hinzufügen',
removeRecentSearchButtonTitle: 'Aus letzten Suchen entfernen',
favoriteSearchesTitle: 'Favoriten',
removeFavoriteSearchButtonTitle: 'Aus Favoriten entfernen',
},
errorScreen: {
titleText: 'Ergebnisse konnten nicht abgerufen werden',
helpText: 'Möglicherweise müssen Sie Ihre Internetverbindung überprüfen.',
},
footer: {
selectText: 'Auswählen',
navigateText: 'Wechseln',
closeText: 'Schließen',
searchByText: 'Bereitgestellt von',
},
noResultsScreen: {
noResultsText: 'Keine relevanten Ergebnisse gefunden',
suggestedQueryText: 'Sie können versuchen, nach',
reportMissingResultsText: 'Sie glauben, dass diese Suche Ergebnisse liefern sollte?',
reportMissingResultsLinkText: 'Klicken Sie hier, um Feedback zu geben',
},
},
},
}

export const deSearchLocale: Partial<SearchLocaleOptions> = {
placeholder: 'Dokumente durchsuchen',
resetButtonTitle: 'Suche zurücksetzen',
backButtonTitle: 'Schließen',
noResultsText: 'Keine Suchergebnisse:',
footer: {
selectText: 'Auswählen',
selectKeyAriaLabel: 'Eingabe',
navigateText: 'Wechseln',
navigateUpKeyAriaLabel: 'Nach oben',
navigateDownKeyAriaLabel: 'Nach unten',
closeText: 'Schließen',
closeKeyAriaLabel: 'Beenden',
},
}
17 changes: 0 additions & 17 deletions theme/src/node/locales/en.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import type { SearchLocaleOptions } from '@vuepress-plume/plugin-search'
import type { PlumeThemeLocaleData, PresetLocale } from '../../shared/index.js'

export const enLocale: PlumeThemeLocaleData = {
Expand Down Expand Up @@ -51,19 +50,3 @@ export const enPresetLocale: PresetLocale = {
'CC-BY-ND-4.0': 'Attribution-NoDerivatives 4.0 International',
'CC-BY-SA-4.0': 'Attribution-ShareAlike 4.0 International',
}

export const enSearchLocale: Partial<SearchLocaleOptions> = {
placeholder: 'Search',
resetButtonTitle: 'Reset search',
backButtonTitle: 'Close search',
noResultsText: 'No results for',
footer: {
selectText: 'to select',
selectKeyAriaLabel: 'enter',
navigateText: 'to navigate',
navigateUpKeyAriaLabel: 'up arrow',
navigateDownKeyAriaLabel: 'down arrow',
closeText: 'to close',
closeKeyAriaLabel: 'escape',
},
}
Loading

0 comments on commit b951f3b

Please sign in to comment.