@h-ai/ui 0.1.0-alpha5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +202 -0
- package/README.md +488 -0
- package/auto-import.d.ts +96 -0
- package/auto-import.js +259 -0
- package/dist/components/compounds/Accordion.svelte +142 -0
- package/dist/components/compounds/Accordion.svelte.d.ts +25 -0
- package/dist/components/compounds/ActionSheet.svelte +116 -0
- package/dist/components/compounds/ActionSheet.svelte.d.ts +22 -0
- package/dist/components/compounds/Alert.svelte +67 -0
- package/dist/components/compounds/Alert.svelte.d.ts +8 -0
- package/dist/components/compounds/AppBar.svelte +77 -0
- package/dist/components/compounds/AppBar.svelte.d.ts +20 -0
- package/dist/components/compounds/BottomNav.svelte +75 -0
- package/dist/components/compounds/BottomNav.svelte.d.ts +18 -0
- package/dist/components/compounds/Breadcrumb.svelte +49 -0
- package/dist/components/compounds/Breadcrumb.svelte.d.ts +4 -0
- package/dist/components/compounds/Calendar.svelte +116 -0
- package/dist/components/compounds/Calendar.svelte.d.ts +47 -0
- package/dist/components/compounds/Card.svelte +77 -0
- package/dist/components/compounds/Card.svelte.d.ts +8 -0
- package/dist/components/compounds/Combobox.svelte +327 -0
- package/dist/components/compounds/Combobox.svelte.d.ts +69 -0
- package/dist/components/compounds/Confirm.svelte +90 -0
- package/dist/components/compounds/Confirm.svelte.d.ts +4 -0
- package/dist/components/compounds/DataTable.svelte +133 -0
- package/dist/components/compounds/DataTable.svelte.d.ts +69 -0
- package/dist/components/compounds/DatePicker.svelte +135 -0
- package/dist/components/compounds/DatePicker.svelte.d.ts +46 -0
- package/dist/components/compounds/Drawer.svelte +113 -0
- package/dist/components/compounds/Drawer.svelte.d.ts +4 -0
- package/dist/components/compounds/Dropdown.svelte +91 -0
- package/dist/components/compounds/Dropdown.svelte.d.ts +8 -0
- package/dist/components/compounds/Empty.svelte +83 -0
- package/dist/components/compounds/Empty.svelte.d.ts +4 -0
- package/dist/components/compounds/Form.svelte +96 -0
- package/dist/components/compounds/Form.svelte.d.ts +7 -0
- package/dist/components/compounds/FormField.svelte +56 -0
- package/dist/components/compounds/FormField.svelte.d.ts +4 -0
- package/dist/components/compounds/InfiniteScroll.svelte +82 -0
- package/dist/components/compounds/InfiniteScroll.svelte.d.ts +22 -0
- package/dist/components/compounds/Modal.svelte +123 -0
- package/dist/components/compounds/Modal.svelte.d.ts +8 -0
- package/dist/components/compounds/PageHeader.svelte +44 -0
- package/dist/components/compounds/PageHeader.svelte.d.ts +28 -0
- package/dist/components/compounds/Pagination.svelte +157 -0
- package/dist/components/compounds/Pagination.svelte.d.ts +4 -0
- package/dist/components/compounds/Popover.svelte +137 -0
- package/dist/components/compounds/Popover.svelte.d.ts +4 -0
- package/dist/components/compounds/PullRefresh.svelte +98 -0
- package/dist/components/compounds/PullRefresh.svelte.d.ts +16 -0
- package/dist/components/compounds/Result.svelte +84 -0
- package/dist/components/compounds/Result.svelte.d.ts +4 -0
- package/dist/components/compounds/SafeArea.svelte +37 -0
- package/dist/components/compounds/SafeArea.svelte.d.ts +12 -0
- package/dist/components/compounds/Skeleton.svelte +75 -0
- package/dist/components/compounds/Skeleton.svelte.d.ts +8 -0
- package/dist/components/compounds/Steps.svelte +111 -0
- package/dist/components/compounds/Steps.svelte.d.ts +4 -0
- package/dist/components/compounds/SwipeCell.svelte +115 -0
- package/dist/components/compounds/SwipeCell.svelte.d.ts +19 -0
- package/dist/components/compounds/Tabs.svelte +79 -0
- package/dist/components/compounds/Tabs.svelte.d.ts +8 -0
- package/dist/components/compounds/TagInput.svelte +108 -0
- package/dist/components/compounds/TagInput.svelte.d.ts +4 -0
- package/dist/components/compounds/Timeline.svelte +167 -0
- package/dist/components/compounds/Timeline.svelte.d.ts +25 -0
- package/dist/components/compounds/ToastContainer.svelte +59 -0
- package/dist/components/compounds/ToastContainer.svelte.d.ts +3 -0
- package/dist/components/compounds/Tooltip.svelte +41 -0
- package/dist/components/compounds/Tooltip.svelte.d.ts +4 -0
- package/dist/components/compounds/accordion-types.d.ts +16 -0
- package/dist/components/compounds/accordion-types.js +5 -0
- package/dist/components/compounds/action-sheet-types.d.ts +14 -0
- package/dist/components/compounds/action-sheet-types.js +5 -0
- package/dist/components/compounds/bottom-nav-types.d.ts +17 -0
- package/dist/components/compounds/bottom-nav-types.js +5 -0
- package/dist/components/compounds/index.d.ts +44 -0
- package/dist/components/compounds/index.js +54 -0
- package/dist/components/compounds/swipe-cell-types.d.ts +14 -0
- package/dist/components/compounds/swipe-cell-types.js +5 -0
- package/dist/components/compounds/timeline-types.d.ts +20 -0
- package/dist/components/compounds/timeline-types.js +5 -0
- package/dist/components/index.d.ts +9 -0
- package/dist/components/index.js +12 -0
- package/dist/components/primitives/Avatar.svelte +102 -0
- package/dist/components/primitives/Avatar.svelte.d.ts +8 -0
- package/dist/components/primitives/Badge.svelte +33 -0
- package/dist/components/primitives/Badge.svelte.d.ts +8 -0
- package/dist/components/primitives/BareButton.svelte +45 -0
- package/dist/components/primitives/BareButton.svelte.d.ts +4 -0
- package/dist/components/primitives/BareInput.svelte +101 -0
- package/dist/components/primitives/BareInput.svelte.d.ts +4 -0
- package/dist/components/primitives/Button.svelte +60 -0
- package/dist/components/primitives/Button.svelte.d.ts +8 -0
- package/dist/components/primitives/Checkbox.svelte +58 -0
- package/dist/components/primitives/Checkbox.svelte.d.ts +4 -0
- package/dist/components/primitives/IconButton.svelte +105 -0
- package/dist/components/primitives/IconButton.svelte.d.ts +4 -0
- package/dist/components/primitives/Input.svelte +130 -0
- package/dist/components/primitives/Input.svelte.d.ts +8 -0
- package/dist/components/primitives/Progress.svelte +58 -0
- package/dist/components/primitives/Progress.svelte.d.ts +4 -0
- package/dist/components/primitives/Radio.svelte +60 -0
- package/dist/components/primitives/Radio.svelte.d.ts +25 -0
- package/dist/components/primitives/Range.svelte +117 -0
- package/dist/components/primitives/Range.svelte.d.ts +27 -0
- package/dist/components/primitives/Rating.svelte +148 -0
- package/dist/components/primitives/Rating.svelte.d.ts +27 -0
- package/dist/components/primitives/Select.svelte +95 -0
- package/dist/components/primitives/Select.svelte.d.ts +25 -0
- package/dist/components/primitives/Spinner.svelte +54 -0
- package/dist/components/primitives/Spinner.svelte.d.ts +4 -0
- package/dist/components/primitives/Switch.svelte +53 -0
- package/dist/components/primitives/Switch.svelte.d.ts +4 -0
- package/dist/components/primitives/Tag.svelte +64 -0
- package/dist/components/primitives/Tag.svelte.d.ts +4 -0
- package/dist/components/primitives/Textarea.svelte +92 -0
- package/dist/components/primitives/Textarea.svelte.d.ts +4 -0
- package/dist/components/primitives/ToggleCheckbox.svelte +36 -0
- package/dist/components/primitives/ToggleCheckbox.svelte.d.ts +4 -0
- package/dist/components/primitives/ToggleInput.svelte +36 -0
- package/dist/components/primitives/ToggleInput.svelte.d.ts +4 -0
- package/dist/components/primitives/ToggleRadio.svelte +36 -0
- package/dist/components/primitives/ToggleRadio.svelte.d.ts +4 -0
- package/dist/components/primitives/index.d.ts +26 -0
- package/dist/components/primitives/index.js +30 -0
- package/dist/components/scenes/ai/AiDocumentDownloadMenu.svelte +387 -0
- package/dist/components/scenes/ai/AiDocumentDownloadMenu.svelte.d.ts +38 -0
- package/dist/components/scenes/ai/AiDocumentEditor.svelte +2259 -0
- package/dist/components/scenes/ai/AiDocumentEditor.svelte.d.ts +4 -0
- package/dist/components/scenes/ai/MarkdownRenderer.svelte +460 -0
- package/dist/components/scenes/ai/MarkdownRenderer.svelte.d.ts +4 -0
- package/dist/components/scenes/ai/document-download.d.ts +40 -0
- package/dist/components/scenes/ai/document-download.js +300 -0
- package/dist/components/scenes/ai/document-parse.d.ts +28 -0
- package/dist/components/scenes/ai/document-parse.js +243 -0
- package/dist/components/scenes/ai/document-types.d.ts +164 -0
- package/dist/components/scenes/ai/document-types.js +1 -0
- package/dist/components/scenes/ai/index.d.ts +17 -0
- package/dist/components/scenes/ai/index.js +13 -0
- package/dist/components/scenes/ai/markdown-parse.d.ts +32 -0
- package/dist/components/scenes/ai/markdown-parse.js +161 -0
- package/dist/components/scenes/app/FeedbackModal.svelte +160 -0
- package/dist/components/scenes/app/FeedbackModal.svelte.d.ts +47 -0
- package/dist/components/scenes/app/LanguageSwitch.svelte +136 -0
- package/dist/components/scenes/app/LanguageSwitch.svelte.d.ts +50 -0
- package/dist/components/scenes/app/SettingsModal.svelte +174 -0
- package/dist/components/scenes/app/SettingsModal.svelte.d.ts +31 -0
- package/dist/components/scenes/app/ThemeSelector.svelte +176 -0
- package/dist/components/scenes/app/ThemeSelector.svelte.d.ts +31 -0
- package/dist/components/scenes/app/ThemeToggle.svelte +76 -0
- package/dist/components/scenes/app/ThemeToggle.svelte.d.ts +29 -0
- package/dist/components/scenes/app/index.d.ts +11 -0
- package/dist/components/scenes/app/index.js +11 -0
- package/dist/components/scenes/crud/CrudDeleteConfirm.svelte +39 -0
- package/dist/components/scenes/crud/CrudDeleteConfirm.svelte.d.ts +18 -0
- package/dist/components/scenes/crud/CrudDetailDrawer.svelte +155 -0
- package/dist/components/scenes/crud/CrudDetailDrawer.svelte.d.ts +38 -0
- package/dist/components/scenes/crud/CrudEditDrawer.svelte +222 -0
- package/dist/components/scenes/crud/CrudEditDrawer.svelte.d.ts +48 -0
- package/dist/components/scenes/crud/CrudFilterBar.svelte +96 -0
- package/dist/components/scenes/crud/CrudFilterBar.svelte.d.ts +31 -0
- package/dist/components/scenes/crud/CrudPage.svelte +499 -0
- package/dist/components/scenes/crud/CrudPage.svelte.d.ts +114 -0
- package/dist/components/scenes/crud/crud-types.d.ts +135 -0
- package/dist/components/scenes/crud/crud-types.js +7 -0
- package/dist/components/scenes/crud/index.d.ts +12 -0
- package/dist/components/scenes/crud/index.js +11 -0
- package/dist/components/scenes/crypto/EncryptedInput.svelte +156 -0
- package/dist/components/scenes/crypto/EncryptedInput.svelte.d.ts +32 -0
- package/dist/components/scenes/crypto/HashDisplay.svelte +97 -0
- package/dist/components/scenes/crypto/HashDisplay.svelte.d.ts +4 -0
- package/dist/components/scenes/crypto/SignatureDisplay.svelte +161 -0
- package/dist/components/scenes/crypto/SignatureDisplay.svelte.d.ts +4 -0
- package/dist/components/scenes/crypto/index.d.ts +9 -0
- package/dist/components/scenes/crypto/index.js +11 -0
- package/dist/components/scenes/iam/ChangePasswordForm.svelte +134 -0
- package/dist/components/scenes/iam/ChangePasswordForm.svelte.d.ts +8 -0
- package/dist/components/scenes/iam/ForgotPasswordForm.svelte +147 -0
- package/dist/components/scenes/iam/ForgotPasswordForm.svelte.d.ts +4 -0
- package/dist/components/scenes/iam/LoginForm.svelte +191 -0
- package/dist/components/scenes/iam/LoginForm.svelte.d.ts +8 -0
- package/dist/components/scenes/iam/PasswordInput.svelte +203 -0
- package/dist/components/scenes/iam/PasswordInput.svelte.d.ts +49 -0
- package/dist/components/scenes/iam/PermGuard.svelte +69 -0
- package/dist/components/scenes/iam/PermGuard.svelte.d.ts +16 -0
- package/dist/components/scenes/iam/RegisterForm.svelte +269 -0
- package/dist/components/scenes/iam/RegisterForm.svelte.d.ts +8 -0
- package/dist/components/scenes/iam/ResetPasswordForm.svelte +153 -0
- package/dist/components/scenes/iam/ResetPasswordForm.svelte.d.ts +8 -0
- package/dist/components/scenes/iam/UserProfile.svelte +251 -0
- package/dist/components/scenes/iam/UserProfile.svelte.d.ts +4 -0
- package/dist/components/scenes/iam/index.d.ts +16 -0
- package/dist/components/scenes/iam/index.js +18 -0
- package/dist/components/scenes/iam/password-utils.d.ts +15 -0
- package/dist/components/scenes/iam/password-utils.js +19 -0
- package/dist/components/scenes/iam/permission-context.svelte.d.ts +90 -0
- package/dist/components/scenes/iam/permission-context.svelte.js +114 -0
- package/dist/components/scenes/index.d.ts +13 -0
- package/dist/components/scenes/index.js +20 -0
- package/dist/components/scenes/storage/AvatarUpload.svelte +218 -0
- package/dist/components/scenes/storage/AvatarUpload.svelte.d.ts +4 -0
- package/dist/components/scenes/storage/FileList.svelte +260 -0
- package/dist/components/scenes/storage/FileList.svelte.d.ts +4 -0
- package/dist/components/scenes/storage/FileUpload.svelte +400 -0
- package/dist/components/scenes/storage/FileUpload.svelte.d.ts +7 -0
- package/dist/components/scenes/storage/ImageUpload.svelte +285 -0
- package/dist/components/scenes/storage/ImageUpload.svelte.d.ts +4 -0
- package/dist/components/scenes/storage/index.d.ts +10 -0
- package/dist/components/scenes/storage/index.js +12 -0
- package/dist/components/scenes/types.d.ts +583 -0
- package/dist/components/scenes/types.js +7 -0
- package/dist/i18n.svelte.d.ts +44 -0
- package/dist/i18n.svelte.js +108 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.js +19 -0
- package/dist/messages/en-US.json +242 -0
- package/dist/messages/zh-CN.json +242 -0
- package/dist/messages.d.ts +29 -0
- package/dist/messages.js +42 -0
- package/dist/styles/design-tokens.css +58 -0
- package/dist/styles/global.css +218 -0
- package/dist/styles/mobile.css +105 -0
- package/dist/theme-config.d.ts +92 -0
- package/dist/theme-config.js +122 -0
- package/dist/toast.svelte.d.ts +45 -0
- package/dist/toast.svelte.js +77 -0
- package/dist/types.d.ts +944 -0
- package/dist/types.js +7 -0
- package/dist/utils/platform.svelte.d.ts +54 -0
- package/dist/utils/platform.svelte.js +87 -0
- package/dist/utils.d.ts +46 -0
- package/dist/utils.js +100 -0
- package/package.json +69 -0
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @h-ai/ui — i18n Svelte 响应式封装
|
|
3
|
+
*
|
|
4
|
+
* 为 Svelte 5 应用提供 locale 状态管理的辅助工具
|
|
5
|
+
* @module i18n.svelte
|
|
6
|
+
*/
|
|
7
|
+
import { core } from '@h-ai/core';
|
|
8
|
+
// 从 core.i18n 解构常用函数
|
|
9
|
+
const { DEFAULT_LOCALE, DEFAULT_LOCALES, setGlobalLocale, } = core.i18n;
|
|
10
|
+
function isLocaleSupported(locale, supportedLocales = DEFAULT_LOCALES) {
|
|
11
|
+
const normalized = locale === 'en' ? 'en-US' : locale === 'zh' ? 'zh-CN' : locale;
|
|
12
|
+
return supportedLocales.some(item => item.code === normalized);
|
|
13
|
+
}
|
|
14
|
+
function resolveLocale(locale, supportedLocales = DEFAULT_LOCALES, defaultLocale = DEFAULT_LOCALE) {
|
|
15
|
+
const normalized = locale === 'en' ? 'en-US' : locale === 'zh' ? 'zh-CN' : locale;
|
|
16
|
+
return isLocaleSupported(normalized, supportedLocales) ? normalized : defaultLocale;
|
|
17
|
+
}
|
|
18
|
+
function detectBrowserLocale(supportedLocales = DEFAULT_LOCALES) {
|
|
19
|
+
if (typeof navigator === 'undefined') {
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
const browserCandidates = [
|
|
23
|
+
navigator.language,
|
|
24
|
+
...(navigator.languages ?? []),
|
|
25
|
+
];
|
|
26
|
+
for (const candidate of browserCandidates) {
|
|
27
|
+
const resolved = resolveLocale(candidate, supportedLocales, DEFAULT_LOCALE);
|
|
28
|
+
if (isLocaleSupported(resolved, supportedLocales)) {
|
|
29
|
+
return resolved;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
function interpolate(template, params = {}) {
|
|
35
|
+
return template.replace(/\{(\w+)\}/g, (_, key) => {
|
|
36
|
+
const value = params[key];
|
|
37
|
+
return value !== undefined ? String(value) : `{${key}}`;
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
// ─── LocalStorage Key ───
|
|
41
|
+
const LOCALE_STORAGE_KEY = 'hai-locale';
|
|
42
|
+
// ─── Locale Store ───
|
|
43
|
+
/**
|
|
44
|
+
* 创建 locale 状态管理器
|
|
45
|
+
*
|
|
46
|
+
* @param options - 配置选项
|
|
47
|
+
* @param options.defaultLocale - 默认 locale
|
|
48
|
+
* @param options.supportedLocales - 支持的 locale 列表
|
|
49
|
+
* @param options.detectBrowser - 是否检测浏览器语言
|
|
50
|
+
* @param options.persistKey - localStorage key
|
|
51
|
+
* @returns locale 状态对象
|
|
52
|
+
*/
|
|
53
|
+
export function createLocaleStore(options = {}) {
|
|
54
|
+
const { defaultLocale = DEFAULT_LOCALE, supportedLocales = DEFAULT_LOCALES, detectBrowser = true, persistKey = LOCALE_STORAGE_KEY, } = options;
|
|
55
|
+
// 初始化 locale
|
|
56
|
+
let initialLocale = defaultLocale;
|
|
57
|
+
if (typeof window !== 'undefined') {
|
|
58
|
+
// 1. 优先从 localStorage 读取
|
|
59
|
+
const savedLocale = localStorage.getItem(persistKey);
|
|
60
|
+
if (savedLocale && isLocaleSupported(savedLocale, supportedLocales)) {
|
|
61
|
+
initialLocale = savedLocale;
|
|
62
|
+
}
|
|
63
|
+
// 2. 其次检测浏览器语言
|
|
64
|
+
else if (detectBrowser) {
|
|
65
|
+
const browserLocale = detectBrowserLocale(supportedLocales);
|
|
66
|
+
if (browserLocale) {
|
|
67
|
+
initialLocale = browserLocale;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
// 同步初始 locale 到 @h-ai/core 的全局管理器
|
|
72
|
+
setGlobalLocale(initialLocale);
|
|
73
|
+
// 使用 Svelte 5 runes 创建响应式状态
|
|
74
|
+
let currentLocale = $state(initialLocale);
|
|
75
|
+
return {
|
|
76
|
+
/** 当前语言(响应式) */
|
|
77
|
+
get current() {
|
|
78
|
+
return currentLocale;
|
|
79
|
+
},
|
|
80
|
+
/** 支持的语言列表 */
|
|
81
|
+
get supported() {
|
|
82
|
+
return supportedLocales;
|
|
83
|
+
},
|
|
84
|
+
/**
|
|
85
|
+
* 设置当前语言
|
|
86
|
+
* 会同步到 @h-ai/core 的全局 locale 管理器
|
|
87
|
+
* 注意:你还需要调用 Paraglide 的 setLocale 来更新 UI 翻译
|
|
88
|
+
*/
|
|
89
|
+
set(locale) {
|
|
90
|
+
const resolved = resolveLocale(locale, supportedLocales, defaultLocale);
|
|
91
|
+
currentLocale = resolved;
|
|
92
|
+
// 同步到 @h-ai/core 的全局 locale 管理器
|
|
93
|
+
setGlobalLocale(resolved);
|
|
94
|
+
// 持久化到 localStorage
|
|
95
|
+
if (typeof window !== 'undefined') {
|
|
96
|
+
localStorage.setItem(persistKey, resolved);
|
|
97
|
+
}
|
|
98
|
+
},
|
|
99
|
+
/** 检查语言是否支持 */
|
|
100
|
+
isSupported(locale) {
|
|
101
|
+
return isLocaleSupported(locale, supportedLocales);
|
|
102
|
+
},
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
// 重导出常用常量和函数(便于应用层使用)
|
|
106
|
+
export { DEFAULT_LOCALE, DEFAULT_LOCALES, detectBrowserLocale, interpolate, isLocaleSupported, resolveLocale, setGlobalLocale, };
|
|
107
|
+
// 导出额外的便捷函数
|
|
108
|
+
export const getGlobalLocale = core.i18n.getGlobalLocale;
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @h-ai/ui — 主入口
|
|
3
|
+
*
|
|
4
|
+
* UI 组件库,提供: - 基于 Svelte 5 Runes 的组件 - DaisyUI 风格 + Bits UI headless 交互 - 完整的类型定义
|
|
5
|
+
* @module index
|
|
6
|
+
*/
|
|
7
|
+
export * from './components/index.js';
|
|
8
|
+
export * from './i18n.svelte.js';
|
|
9
|
+
export * from './theme-config.js';
|
|
10
|
+
export * from './toast.svelte.js';
|
|
11
|
+
export * from './types.js';
|
|
12
|
+
export * from './utils.js';
|
|
13
|
+
export * from './utils/platform.svelte.js';
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @h-ai/ui — 主入口
|
|
3
|
+
*
|
|
4
|
+
* UI 组件库,提供: - 基于 Svelte 5 Runes 的组件 - DaisyUI 风格 + Bits UI headless 交互 - 完整的类型定义
|
|
5
|
+
* @module index
|
|
6
|
+
*/
|
|
7
|
+
// ─── 组件导出(从 components/ 统一导出所有三层组件及其类型) ───
|
|
8
|
+
export * from './components/index.js';
|
|
9
|
+
// ─── i18n 国际化(Paraglide 辅助工具) ───
|
|
10
|
+
export * from './i18n.svelte.js';
|
|
11
|
+
// ─── 主题配置 ───
|
|
12
|
+
export * from './theme-config.js';
|
|
13
|
+
// ─── Toast 状态管理 ───
|
|
14
|
+
export * from './toast.svelte.js';
|
|
15
|
+
// ─── 基础类型与工具 ───
|
|
16
|
+
export * from './types.js';
|
|
17
|
+
export * from './utils.js';
|
|
18
|
+
// ─── 平台检测与移动端工具 ───
|
|
19
|
+
export * from './utils/platform.svelte.js';
|
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_comment": "@h-ai/ui component library built-in translations - English",
|
|
3
|
+
"password_show": "Show password",
|
|
4
|
+
"password_hide": "Hide password",
|
|
5
|
+
"password_strength_label": "Password strength:",
|
|
6
|
+
"password_strength_weak": "Weak",
|
|
7
|
+
"password_strength_fair": "Fair",
|
|
8
|
+
"password_strength_good": "Good",
|
|
9
|
+
"password_strength_strong": "Strong",
|
|
10
|
+
"login_username": "Username / Email",
|
|
11
|
+
"login_username_placeholder": "Enter username or email",
|
|
12
|
+
"login_password": "Password",
|
|
13
|
+
"login_password_placeholder": "Enter password",
|
|
14
|
+
"login_remember_me": "Remember me",
|
|
15
|
+
"login_forgot_password": "Forgot password?",
|
|
16
|
+
"login_submit": "Login",
|
|
17
|
+
"login_title": "Login",
|
|
18
|
+
"login_no_account": "Don't have an account?",
|
|
19
|
+
"login_register_now": "Register now",
|
|
20
|
+
"settings_title": "Settings",
|
|
21
|
+
"settings_close": "Close",
|
|
22
|
+
"settings_language": "Language",
|
|
23
|
+
"settings_theme": "Theme",
|
|
24
|
+
"combobox_no_match": "No match",
|
|
25
|
+
"combobox_remove": "Remove",
|
|
26
|
+
"data_table_actions": "Actions",
|
|
27
|
+
"data_table_empty": "No data",
|
|
28
|
+
"confirm_title": "Confirm",
|
|
29
|
+
"confirm_message": "Are you sure you want to proceed?",
|
|
30
|
+
"confirm_ok": "Confirm",
|
|
31
|
+
"confirm_cancel": "Cancel",
|
|
32
|
+
"empty_title": "No data",
|
|
33
|
+
"tag_input_placeholder": "Press Enter to add",
|
|
34
|
+
"common_close": "Close",
|
|
35
|
+
"modal_close": "Close modal",
|
|
36
|
+
"drawer_close": "Close sidebar",
|
|
37
|
+
"toast_dismiss": "Dismiss",
|
|
38
|
+
"language_switch_label": "Switch language",
|
|
39
|
+
"theme_selector_label": "Select theme",
|
|
40
|
+
"rating_star": "{count} star",
|
|
41
|
+
"rating_clear": "Clear",
|
|
42
|
+
"encrypted_input_placeholder": "Enter content",
|
|
43
|
+
"encrypted_input_show": "Show",
|
|
44
|
+
"encrypted_input_hide": "Hide",
|
|
45
|
+
"encrypted_input_result": "Encrypted",
|
|
46
|
+
"encrypted_input_copy": "Copy",
|
|
47
|
+
"image_upload_placeholder": "Click to upload image",
|
|
48
|
+
"image_upload_max_size_hint": "Max:",
|
|
49
|
+
"image_upload_size_exceeded": "Image size exceeds limit (max",
|
|
50
|
+
"image_upload_invalid_type": "Please select an image file",
|
|
51
|
+
"image_upload_get_url_failed": "Failed to get upload URL",
|
|
52
|
+
"image_upload_failed": "Upload failed",
|
|
53
|
+
"image_upload_preview_alt": "Preview",
|
|
54
|
+
"image_upload_change": "Change image",
|
|
55
|
+
"image_upload_delete": "Delete image",
|
|
56
|
+
"file_upload_drag_hint": "Drag files here, or",
|
|
57
|
+
"file_upload_click_to_select": "click to select",
|
|
58
|
+
"file_upload_supported_formats": "Supported:",
|
|
59
|
+
"file_upload_max_size": "Max size:",
|
|
60
|
+
"file_upload_max_files_hint": "Max",
|
|
61
|
+
"file_upload_files_unit": "files",
|
|
62
|
+
"file_upload_success": "Upload successful",
|
|
63
|
+
"file_upload_failed": "Upload failed",
|
|
64
|
+
"file_upload_network_error": "Network error",
|
|
65
|
+
"file_upload_no_url": "No upload URL configured",
|
|
66
|
+
"file_upload_get_url_failed": "Failed to get upload URL",
|
|
67
|
+
"file_upload_size_exceeded": "File size exceeds limit (max",
|
|
68
|
+
"file_upload_unsupported_type": "Unsupported file type",
|
|
69
|
+
"file_upload_max_files_exceeded": "Maximum upload limit:",
|
|
70
|
+
"file_upload_retry": "Retry",
|
|
71
|
+
"file_upload_remove": "Remove",
|
|
72
|
+
"file_list_no_files": "No files",
|
|
73
|
+
"file_list_preview": "Preview",
|
|
74
|
+
"file_list_download": "Download",
|
|
75
|
+
"file_list_delete": "Delete",
|
|
76
|
+
"file_list_close": "Close",
|
|
77
|
+
"avatar_upload_alt": "Avatar",
|
|
78
|
+
"avatar_upload_size_exceeded": "Image size exceeds limit (max",
|
|
79
|
+
"avatar_upload_invalid_type": "Please select an image file",
|
|
80
|
+
"avatar_upload_get_url_failed": "Failed to get upload URL",
|
|
81
|
+
"avatar_upload_failed": "Upload failed",
|
|
82
|
+
"user_profile_avatar": "Avatar",
|
|
83
|
+
"user_profile_username": "Username",
|
|
84
|
+
"user_profile_email": "Email",
|
|
85
|
+
"user_profile_display_name": "Display Name",
|
|
86
|
+
"user_profile_nickname": "Nickname",
|
|
87
|
+
"user_profile_phone": "Phone",
|
|
88
|
+
"user_profile_bio": "Bio",
|
|
89
|
+
"user_profile_avatar_hint": "JPG, PNG supported, max 2MB",
|
|
90
|
+
"user_profile_save": "Save",
|
|
91
|
+
"user_profile_cancel": "Cancel",
|
|
92
|
+
"user_profile_edit": "Edit Profile",
|
|
93
|
+
"reset_password_code_label": "Verification Code",
|
|
94
|
+
"reset_password_code_placeholder": "Enter verification code",
|
|
95
|
+
"reset_password_new_label": "New Password",
|
|
96
|
+
"reset_password_new_placeholder": "Enter new password",
|
|
97
|
+
"reset_password_confirm_label": "Confirm Password",
|
|
98
|
+
"reset_password_confirm_placeholder": "Re-enter new password",
|
|
99
|
+
"reset_password_mismatch": "Passwords do not match",
|
|
100
|
+
"reset_password_submit": "Reset Password",
|
|
101
|
+
"reset_password_title": "Reset Password",
|
|
102
|
+
"reset_password_desc": "Please enter your new password.",
|
|
103
|
+
"reset_password_back": "Back to Login",
|
|
104
|
+
"register_username": "Username",
|
|
105
|
+
"register_email": "Email",
|
|
106
|
+
"register_phone": "Phone",
|
|
107
|
+
"register_password": "Password",
|
|
108
|
+
"register_confirm_password": "Confirm Password",
|
|
109
|
+
"register_nickname": "Nickname",
|
|
110
|
+
"register_username_placeholder": "Enter username",
|
|
111
|
+
"register_email_placeholder": "Enter email address",
|
|
112
|
+
"register_phone_placeholder": "Enter phone number",
|
|
113
|
+
"register_password_placeholder": "Enter password",
|
|
114
|
+
"register_confirm_password_placeholder": "Re-enter password",
|
|
115
|
+
"register_nickname_placeholder": "Enter nickname",
|
|
116
|
+
"register_password_mismatch": "Passwords do not match",
|
|
117
|
+
"register_submit": "Register",
|
|
118
|
+
"register_title": "Create Account",
|
|
119
|
+
"register_has_account": "Already have an account?",
|
|
120
|
+
"register_login_now": "Login now",
|
|
121
|
+
"agreement_prefix": "By continuing, you agree to our",
|
|
122
|
+
"agreement_user_agreement": "Terms of Service",
|
|
123
|
+
"agreement_and": "and",
|
|
124
|
+
"agreement_privacy_policy": "Privacy Policy",
|
|
125
|
+
"forgot_password_email_label": "Email Address",
|
|
126
|
+
"forgot_password_email_placeholder": "Enter your registered email",
|
|
127
|
+
"forgot_password_email_hint": "We will send a password reset link to your email",
|
|
128
|
+
"forgot_password_phone_label": "Phone Number",
|
|
129
|
+
"forgot_password_phone_placeholder": "Enter your registered phone number",
|
|
130
|
+
"forgot_password_phone_hint": "We will send a verification code to your phone",
|
|
131
|
+
"forgot_password_submit": "Send Verification Code",
|
|
132
|
+
"forgot_password_title": "Forgot Password",
|
|
133
|
+
"forgot_password_desc": "Enter your registered email and we'll send you a password reset link.",
|
|
134
|
+
"forgot_password_back": "Back to Login",
|
|
135
|
+
"change_password_old": "Current Password",
|
|
136
|
+
"change_password_new": "New Password",
|
|
137
|
+
"change_password_confirm": "Confirm Password",
|
|
138
|
+
"change_password_old_placeholder": "Enter current password",
|
|
139
|
+
"change_password_new_placeholder": "Enter new password",
|
|
140
|
+
"change_password_confirm_placeholder": "Re-enter new password",
|
|
141
|
+
"change_password_mismatch": "Passwords do not match",
|
|
142
|
+
"change_password_submit": "Change Password",
|
|
143
|
+
"change_password_relogin_hint": "After submission, the current session will be invalidated immediately. Please sign in again with your new password.",
|
|
144
|
+
"feedback_title": "Feedback",
|
|
145
|
+
"feedback_description": "We value your feedback. Please share your thoughts with us.",
|
|
146
|
+
"feedback_type_label": "Feedback Type",
|
|
147
|
+
"feedback_content_label": "Content",
|
|
148
|
+
"feedback_content_placeholder": "Please describe your issue or suggestion in detail...",
|
|
149
|
+
"feedback_contact_label": "Contact (Optional)",
|
|
150
|
+
"feedback_contact_placeholder": "Email or phone for us to reply",
|
|
151
|
+
"feedback_cancel": "Cancel",
|
|
152
|
+
"feedback_submit": "Submit Feedback",
|
|
153
|
+
"feedback_error_empty": "Please fill in the feedback content",
|
|
154
|
+
"feedback_error_submit": "Submission failed, please try again",
|
|
155
|
+
"feedback_type_bug": "Bug Report",
|
|
156
|
+
"feedback_type_feature": "Feature Request",
|
|
157
|
+
"feedback_type_question": "Question",
|
|
158
|
+
"feedback_type_other": "Other",
|
|
159
|
+
"pagination_total": "Total {count}",
|
|
160
|
+
"pagination_jump_to": "Go to",
|
|
161
|
+
"pagination_page": "page",
|
|
162
|
+
"severity_critical": "Critical",
|
|
163
|
+
"severity_high": "High",
|
|
164
|
+
"severity_medium": "Medium",
|
|
165
|
+
"severity_low": "Low",
|
|
166
|
+
"theme_switch_to_light": "Switch to light theme",
|
|
167
|
+
"theme_switch_to_dark": "Switch to dark theme",
|
|
168
|
+
"hash_copy": "Copy hash",
|
|
169
|
+
"signature_label": "Signature",
|
|
170
|
+
"signature_public_key": "Public Key",
|
|
171
|
+
"signature_verified": "Verified",
|
|
172
|
+
"signature_verify_failed": "Verification Failed",
|
|
173
|
+
"signature_not_verified": "Not Verified",
|
|
174
|
+
"signature_no_signature": "No signature",
|
|
175
|
+
"signature_copy_signature": "Copy signature",
|
|
176
|
+
"signature_copy_public_key": "Copy public key",
|
|
177
|
+
"theme_group_light": "Light Themes",
|
|
178
|
+
"theme_group_dark": "Dark Themes",
|
|
179
|
+
"markdown_copy_code": "Copy code",
|
|
180
|
+
"markdown_copy_document": "Copy document",
|
|
181
|
+
"markdown_copied": "Copied",
|
|
182
|
+
"markdown_copy_failed": "Copy failed",
|
|
183
|
+
"markdown_outline": "Outline",
|
|
184
|
+
"markdown_show_outline": "Show outline",
|
|
185
|
+
"markdown_hide_outline": "Hide",
|
|
186
|
+
"markdown_no_outline": "No headings are available for navigation yet.",
|
|
187
|
+
"markdown_undo": "Undo",
|
|
188
|
+
"markdown_redo": "Redo",
|
|
189
|
+
"markdown_close": "Close",
|
|
190
|
+
"markdown_rewrite": "AI Rewrite",
|
|
191
|
+
"markdown_rewriting": "Rewriting",
|
|
192
|
+
"markdown_rewrite_polish": "Polish this section",
|
|
193
|
+
"markdown_rewrite_expand": "Expand this section",
|
|
194
|
+
"markdown_rewrite_shorten": "Shorten this section",
|
|
195
|
+
"markdown_rewrite_explain": "Explain this section",
|
|
196
|
+
"markdown_document_eyebrow": "Editable document",
|
|
197
|
+
"markdown_download": "Download",
|
|
198
|
+
"markdown_download_markdown": "Markdown (.md)",
|
|
199
|
+
"markdown_download_markdown_menu": "Markdown",
|
|
200
|
+
"markdown_download_word": "Word (.doc)",
|
|
201
|
+
"markdown_download_word_menu": "Word",
|
|
202
|
+
"markdown_download_pdf": "PDF (.pdf)",
|
|
203
|
+
"markdown_download_pdf_menu": "PDF",
|
|
204
|
+
"markdown_history": "History",
|
|
205
|
+
"markdown_view_version": "View version",
|
|
206
|
+
"markdown_format_heading": "Heading",
|
|
207
|
+
"markdown_format_bullet": "Bullets",
|
|
208
|
+
"markdown_format_bold": "Bold",
|
|
209
|
+
"markdown_format_strike": "Strike",
|
|
210
|
+
"markdown_format_italic": "Italic",
|
|
211
|
+
"markdown_format_underline": "Underline",
|
|
212
|
+
"markdown_format_link": "Link",
|
|
213
|
+
"markdown_format_code": "Code",
|
|
214
|
+
"markdown_format_highlight": "Highlight",
|
|
215
|
+
"markdown_copy_selection": "Copy",
|
|
216
|
+
"markdown_annotation": "Annotate",
|
|
217
|
+
"markdown_run_preview": "Run Preview",
|
|
218
|
+
"markdown_running": "Running",
|
|
219
|
+
"markdown_run_failed": "Run failed",
|
|
220
|
+
"markdown_run_unavailable": "No preview runner is configured for this code block.",
|
|
221
|
+
"crud_create": "Create",
|
|
222
|
+
"crud_edit": "Edit",
|
|
223
|
+
"crud_detail": "Detail",
|
|
224
|
+
"crud_delete": "Delete",
|
|
225
|
+
"crud_save": "Save",
|
|
226
|
+
"crud_cancel": "Cancel",
|
|
227
|
+
"crud_close": "Close",
|
|
228
|
+
"crud_search_placeholder": "Search...",
|
|
229
|
+
"crud_no_data": "No data",
|
|
230
|
+
"crud_loading": "Loading...",
|
|
231
|
+
"crud_delete_title": "Confirm Delete",
|
|
232
|
+
"crud_delete_message": "Are you sure you want to delete this record? This action cannot be undone.",
|
|
233
|
+
"crud_submit_success": "Operation successful",
|
|
234
|
+
"crud_submit_failed": "Operation failed",
|
|
235
|
+
"crud_delete_success": "Delete successful",
|
|
236
|
+
"crud_delete_failed": "Delete failed",
|
|
237
|
+
"crud_network_error": "Network error, please try again later",
|
|
238
|
+
"crud_filter_all": "All",
|
|
239
|
+
"crud_total": "Total {count}",
|
|
240
|
+
"crud_detail_empty": "-",
|
|
241
|
+
"crud_field_required": "This field is required"
|
|
242
|
+
}
|
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_comment": "@h-ai/ui 组件库内置翻译 - 简体中文",
|
|
3
|
+
"password_show": "显示密码",
|
|
4
|
+
"password_hide": "隐藏密码",
|
|
5
|
+
"password_strength_label": "密码强度:",
|
|
6
|
+
"password_strength_weak": "弱",
|
|
7
|
+
"password_strength_fair": "一般",
|
|
8
|
+
"password_strength_good": "良好",
|
|
9
|
+
"password_strength_strong": "强",
|
|
10
|
+
"login_username": "用户名 / 邮箱",
|
|
11
|
+
"login_username_placeholder": "请输入用户名或邮箱",
|
|
12
|
+
"login_password": "密码",
|
|
13
|
+
"login_password_placeholder": "请输入密码",
|
|
14
|
+
"login_remember_me": "记住我",
|
|
15
|
+
"login_forgot_password": "忘记密码?",
|
|
16
|
+
"login_submit": "登录",
|
|
17
|
+
"login_title": "登录",
|
|
18
|
+
"login_no_account": "还没有账号?",
|
|
19
|
+
"login_register_now": "立即注册",
|
|
20
|
+
"settings_title": "设置",
|
|
21
|
+
"settings_close": "关闭",
|
|
22
|
+
"settings_language": "语言",
|
|
23
|
+
"settings_theme": "主题",
|
|
24
|
+
"combobox_no_match": "无匹配结果",
|
|
25
|
+
"combobox_remove": "移除",
|
|
26
|
+
"data_table_actions": "操作",
|
|
27
|
+
"data_table_empty": "暂无数据",
|
|
28
|
+
"confirm_title": "确认",
|
|
29
|
+
"confirm_message": "确定要继续吗?",
|
|
30
|
+
"confirm_ok": "确认",
|
|
31
|
+
"confirm_cancel": "取消",
|
|
32
|
+
"empty_title": "暂无数据",
|
|
33
|
+
"tag_input_placeholder": "按 Enter 添加",
|
|
34
|
+
"common_close": "关闭",
|
|
35
|
+
"modal_close": "关闭模态框",
|
|
36
|
+
"drawer_close": "关闭侧边栏",
|
|
37
|
+
"toast_dismiss": "关闭",
|
|
38
|
+
"language_switch_label": "切换语言",
|
|
39
|
+
"theme_selector_label": "选择主题",
|
|
40
|
+
"rating_star": "{count} 星",
|
|
41
|
+
"rating_clear": "清除",
|
|
42
|
+
"encrypted_input_placeholder": "输入内容",
|
|
43
|
+
"encrypted_input_show": "显示",
|
|
44
|
+
"encrypted_input_hide": "隐藏",
|
|
45
|
+
"encrypted_input_result": "已加密",
|
|
46
|
+
"encrypted_input_copy": "复制",
|
|
47
|
+
"image_upload_placeholder": "点击上传图片",
|
|
48
|
+
"image_upload_max_size_hint": "最大:",
|
|
49
|
+
"image_upload_size_exceeded": "图片大小超出限制(最大",
|
|
50
|
+
"image_upload_invalid_type": "请选择图片文件",
|
|
51
|
+
"image_upload_get_url_failed": "获取上传地址失败",
|
|
52
|
+
"image_upload_failed": "上传失败",
|
|
53
|
+
"image_upload_preview_alt": "预览",
|
|
54
|
+
"image_upload_change": "更换图片",
|
|
55
|
+
"image_upload_delete": "删除图片",
|
|
56
|
+
"file_upload_drag_hint": "将文件拖到这里,或",
|
|
57
|
+
"file_upload_click_to_select": "点击选择",
|
|
58
|
+
"file_upload_supported_formats": "支持格式:",
|
|
59
|
+
"file_upload_max_size": "最大大小:",
|
|
60
|
+
"file_upload_max_files_hint": "最多",
|
|
61
|
+
"file_upload_files_unit": "个文件",
|
|
62
|
+
"file_upload_success": "上传成功",
|
|
63
|
+
"file_upload_failed": "上传失败",
|
|
64
|
+
"file_upload_network_error": "网络错误",
|
|
65
|
+
"file_upload_no_url": "未配置上传地址",
|
|
66
|
+
"file_upload_get_url_failed": "获取上传地址失败",
|
|
67
|
+
"file_upload_size_exceeded": "文件大小超出限制(最大",
|
|
68
|
+
"file_upload_unsupported_type": "不支持的文件类型",
|
|
69
|
+
"file_upload_max_files_exceeded": "最多上传:",
|
|
70
|
+
"file_upload_retry": "重试",
|
|
71
|
+
"file_upload_remove": "移除",
|
|
72
|
+
"file_list_no_files": "暂无文件",
|
|
73
|
+
"file_list_preview": "预览",
|
|
74
|
+
"file_list_download": "下载",
|
|
75
|
+
"file_list_delete": "删除",
|
|
76
|
+
"file_list_close": "关闭",
|
|
77
|
+
"avatar_upload_alt": "头像",
|
|
78
|
+
"avatar_upload_size_exceeded": "图片大小超出限制(最大",
|
|
79
|
+
"avatar_upload_invalid_type": "请选择图片文件",
|
|
80
|
+
"avatar_upload_get_url_failed": "获取上传地址失败",
|
|
81
|
+
"avatar_upload_failed": "上传失败",
|
|
82
|
+
"user_profile_avatar": "头像",
|
|
83
|
+
"user_profile_username": "用户名",
|
|
84
|
+
"user_profile_email": "邮箱",
|
|
85
|
+
"user_profile_display_name": "显示名称",
|
|
86
|
+
"user_profile_nickname": "昵称",
|
|
87
|
+
"user_profile_phone": "手机号",
|
|
88
|
+
"user_profile_bio": "个人简介",
|
|
89
|
+
"user_profile_avatar_hint": "支持 JPG、PNG,最大 2MB",
|
|
90
|
+
"user_profile_save": "保存",
|
|
91
|
+
"user_profile_cancel": "取消",
|
|
92
|
+
"user_profile_edit": "编辑资料",
|
|
93
|
+
"reset_password_code_label": "验证码",
|
|
94
|
+
"reset_password_code_placeholder": "请输入验证码",
|
|
95
|
+
"reset_password_new_label": "新密码",
|
|
96
|
+
"reset_password_new_placeholder": "请输入新密码",
|
|
97
|
+
"reset_password_confirm_label": "确认密码",
|
|
98
|
+
"reset_password_confirm_placeholder": "请再次输入新密码",
|
|
99
|
+
"reset_password_mismatch": "两次密码输入不一致",
|
|
100
|
+
"reset_password_submit": "重置密码",
|
|
101
|
+
"reset_password_title": "重置密码",
|
|
102
|
+
"reset_password_desc": "请输入您的新密码。",
|
|
103
|
+
"reset_password_back": "返回登录",
|
|
104
|
+
"register_username": "用户名",
|
|
105
|
+
"register_email": "邮箱",
|
|
106
|
+
"register_phone": "手机号",
|
|
107
|
+
"register_password": "密码",
|
|
108
|
+
"register_confirm_password": "确认密码",
|
|
109
|
+
"register_nickname": "昵称",
|
|
110
|
+
"register_username_placeholder": "请输入用户名",
|
|
111
|
+
"register_email_placeholder": "请输入邮箱地址",
|
|
112
|
+
"register_phone_placeholder": "请输入手机号",
|
|
113
|
+
"register_password_placeholder": "请输入密码",
|
|
114
|
+
"register_confirm_password_placeholder": "请再次输入密码",
|
|
115
|
+
"register_nickname_placeholder": "请输入昵称",
|
|
116
|
+
"register_password_mismatch": "两次密码输入不一致",
|
|
117
|
+
"register_submit": "注册",
|
|
118
|
+
"register_title": "创建账号",
|
|
119
|
+
"register_has_account": "已有账号?",
|
|
120
|
+
"register_login_now": "立即登录",
|
|
121
|
+
"agreement_prefix": "登录/注册即表示同意",
|
|
122
|
+
"agreement_user_agreement": "用户协议",
|
|
123
|
+
"agreement_and": "和",
|
|
124
|
+
"agreement_privacy_policy": "隐私政策",
|
|
125
|
+
"forgot_password_email_label": "邮箱地址",
|
|
126
|
+
"forgot_password_email_placeholder": "请输入注册邮箱",
|
|
127
|
+
"forgot_password_email_hint": "我们将向您的邮箱发送密码重置链接",
|
|
128
|
+
"forgot_password_phone_label": "手机号码",
|
|
129
|
+
"forgot_password_phone_placeholder": "请输入注册手机号",
|
|
130
|
+
"forgot_password_phone_hint": "我们将向您的手机发送验证码",
|
|
131
|
+
"forgot_password_submit": "发送验证码",
|
|
132
|
+
"forgot_password_title": "忘记密码",
|
|
133
|
+
"forgot_password_desc": "请输入您的注册邮箱,我们将向您发送密码重置链接。",
|
|
134
|
+
"forgot_password_back": "返回登录",
|
|
135
|
+
"change_password_old": "当前密码",
|
|
136
|
+
"change_password_new": "新密码",
|
|
137
|
+
"change_password_confirm": "确认密码",
|
|
138
|
+
"change_password_old_placeholder": "请输入当前密码",
|
|
139
|
+
"change_password_new_placeholder": "请输入新密码",
|
|
140
|
+
"change_password_confirm_placeholder": "请再次输入新密码",
|
|
141
|
+
"change_password_mismatch": "两次密码输入不一致",
|
|
142
|
+
"change_password_submit": "修改密码",
|
|
143
|
+
"change_password_relogin_hint": "提交后将立即使当前会话失效,请使用新密码重新登录。",
|
|
144
|
+
"feedback_title": "反馈",
|
|
145
|
+
"feedback_description": "我们重视您的反馈。请将问题或建议告诉我们。",
|
|
146
|
+
"feedback_type_label": "反馈类型",
|
|
147
|
+
"feedback_content_label": "内容",
|
|
148
|
+
"feedback_content_placeholder": "请详细描述您遇到的问题或建议...",
|
|
149
|
+
"feedback_contact_label": "联系方式(可选)",
|
|
150
|
+
"feedback_contact_placeholder": "用于回复的邮箱或手机号",
|
|
151
|
+
"feedback_cancel": "取消",
|
|
152
|
+
"feedback_submit": "提交反馈",
|
|
153
|
+
"feedback_error_empty": "请填写反馈内容",
|
|
154
|
+
"feedback_error_submit": "提交失败,请重试",
|
|
155
|
+
"feedback_type_bug": "Bug 报告",
|
|
156
|
+
"feedback_type_feature": "功能建议",
|
|
157
|
+
"feedback_type_question": "问题咨询",
|
|
158
|
+
"feedback_type_other": "其他",
|
|
159
|
+
"pagination_total": "共 {count}",
|
|
160
|
+
"pagination_jump_to": "跳转到",
|
|
161
|
+
"pagination_page": "页",
|
|
162
|
+
"severity_critical": "严重",
|
|
163
|
+
"severity_high": "高",
|
|
164
|
+
"severity_medium": "中",
|
|
165
|
+
"severity_low": "低",
|
|
166
|
+
"theme_switch_to_light": "切换到亮色主题",
|
|
167
|
+
"theme_switch_to_dark": "切换到暗色主题",
|
|
168
|
+
"hash_copy": "复制哈希",
|
|
169
|
+
"signature_label": "签名",
|
|
170
|
+
"signature_public_key": "公钥",
|
|
171
|
+
"signature_verified": "已验证",
|
|
172
|
+
"signature_verify_failed": "验证失败",
|
|
173
|
+
"signature_not_verified": "未验证",
|
|
174
|
+
"signature_no_signature": "无签名",
|
|
175
|
+
"signature_copy_signature": "复制签名",
|
|
176
|
+
"signature_copy_public_key": "复制公钥",
|
|
177
|
+
"theme_group_light": "亮色主题",
|
|
178
|
+
"theme_group_dark": "暗色主题",
|
|
179
|
+
"markdown_copy_code": "复制代码",
|
|
180
|
+
"markdown_copy_document": "复制全文",
|
|
181
|
+
"markdown_copied": "已复制",
|
|
182
|
+
"markdown_copy_failed": "复制失败",
|
|
183
|
+
"markdown_outline": "目录",
|
|
184
|
+
"markdown_show_outline": "显示目录",
|
|
185
|
+
"markdown_hide_outline": "收起",
|
|
186
|
+
"markdown_no_outline": "当前内容还没有可导航的标题。",
|
|
187
|
+
"markdown_undo": "撤销",
|
|
188
|
+
"markdown_redo": "重做",
|
|
189
|
+
"markdown_close": "关闭",
|
|
190
|
+
"markdown_rewrite": "AI 改写",
|
|
191
|
+
"markdown_rewriting": "正在改写",
|
|
192
|
+
"markdown_rewrite_polish": "润色这段内容",
|
|
193
|
+
"markdown_rewrite_expand": "把这段写得更完整",
|
|
194
|
+
"markdown_rewrite_shorten": "把这段写得更精简",
|
|
195
|
+
"markdown_rewrite_explain": "解释这段内容",
|
|
196
|
+
"markdown_document_eyebrow": "可编辑文档",
|
|
197
|
+
"markdown_download": "下载",
|
|
198
|
+
"markdown_download_markdown": "Markdown (.md)",
|
|
199
|
+
"markdown_download_markdown_menu": "Markdown",
|
|
200
|
+
"markdown_download_word": "Word (.doc)",
|
|
201
|
+
"markdown_download_word_menu": "Word",
|
|
202
|
+
"markdown_download_pdf": "PDF (.pdf)",
|
|
203
|
+
"markdown_download_pdf_menu": "PDF",
|
|
204
|
+
"markdown_history": "历史版本",
|
|
205
|
+
"markdown_view_version": "查看版本",
|
|
206
|
+
"markdown_format_heading": "标题",
|
|
207
|
+
"markdown_format_bullet": "列表",
|
|
208
|
+
"markdown_format_bold": "加粗",
|
|
209
|
+
"markdown_format_strike": "删除线",
|
|
210
|
+
"markdown_format_italic": "斜体",
|
|
211
|
+
"markdown_format_underline": "下划线",
|
|
212
|
+
"markdown_format_link": "链接",
|
|
213
|
+
"markdown_format_code": "代码",
|
|
214
|
+
"markdown_format_highlight": "高亮",
|
|
215
|
+
"markdown_copy_selection": "复制",
|
|
216
|
+
"markdown_annotation": "注释",
|
|
217
|
+
"markdown_run_preview": "运行预览",
|
|
218
|
+
"markdown_running": "运行中",
|
|
219
|
+
"markdown_run_failed": "运行失败",
|
|
220
|
+
"markdown_run_unavailable": "当前代码块未配置运行预览器。",
|
|
221
|
+
"crud_create": "新建",
|
|
222
|
+
"crud_edit": "编辑",
|
|
223
|
+
"crud_detail": "详情",
|
|
224
|
+
"crud_delete": "删除",
|
|
225
|
+
"crud_save": "保存",
|
|
226
|
+
"crud_cancel": "取消",
|
|
227
|
+
"crud_close": "关闭",
|
|
228
|
+
"crud_search_placeholder": "搜索...",
|
|
229
|
+
"crud_no_data": "暂无数据",
|
|
230
|
+
"crud_loading": "加载中...",
|
|
231
|
+
"crud_delete_title": "确认删除",
|
|
232
|
+
"crud_delete_message": "确定要删除此记录吗?此操作不可恢复。",
|
|
233
|
+
"crud_submit_success": "操作成功",
|
|
234
|
+
"crud_submit_failed": "操作失败",
|
|
235
|
+
"crud_delete_success": "删除成功",
|
|
236
|
+
"crud_delete_failed": "删除失败",
|
|
237
|
+
"crud_network_error": "网络错误,请稍后重试",
|
|
238
|
+
"crud_filter_all": "全部",
|
|
239
|
+
"crud_total": "共 {count}",
|
|
240
|
+
"crud_detail_empty": "-",
|
|
241
|
+
"crud_field_required": "此字段为必填项"
|
|
242
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @h-ai/ui — 内置消息获取器
|
|
3
|
+
*
|
|
4
|
+
* 为 UI 组件提供内置的多语言翻译支持
|
|
5
|
+
* @module messages
|
|
6
|
+
*/
|
|
7
|
+
import messagesZhCN from './messages/zh-CN.json';
|
|
8
|
+
export type UIMessageKey = keyof typeof messagesZhCN;
|
|
9
|
+
/**
|
|
10
|
+
* 获取 UI 组件翻译消息
|
|
11
|
+
*
|
|
12
|
+
* @param key - 消息 key
|
|
13
|
+
* @param params - 可选的插值参数
|
|
14
|
+
* @returns 当前 locale 对应的翻译文本
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```ts
|
|
18
|
+
* uiM('password_show') // => '显示密码' (zh-CN) 或 'Show password' (en-US)
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export declare function uiM(key: UIMessageKey, params?: Record<string, string | number | boolean>): string;
|
|
22
|
+
/**
|
|
23
|
+
* 获取当前 UI 模块使用的 locale
|
|
24
|
+
*/
|
|
25
|
+
export declare function getUILocale(): string;
|
|
26
|
+
/**
|
|
27
|
+
* 手动设置 UI 模块的 locale(通常不需要,会自动同步)
|
|
28
|
+
*/
|
|
29
|
+
export declare function setUILocale(locale: string): void;
|