♻️ refactor(i18n): Refactor i18n with api [#270]
parent
d4c4a48e80
commit
8753ef6369
|
|
@ -0,0 +1,16 @@
|
|||
const { description } = require('./package.json');
|
||||
const { defineConfig } = require('@lobehub/i18n-cli');
|
||||
const options = require('./locales/options.json');
|
||||
|
||||
const outputLocales = options.map((item) => item.value).filter((item) => item !== 'en_US');
|
||||
|
||||
module.exports = defineConfig({
|
||||
reference: description,
|
||||
entry: 'locales/en_US.json',
|
||||
entryLocale: 'en_US',
|
||||
output: 'locales',
|
||||
outputLocales: outputLocales,
|
||||
splitToken: 2500,
|
||||
temperature: 0,
|
||||
modelName: 'gpt-3.5-turbo',
|
||||
});
|
||||
|
|
@ -56,7 +56,7 @@
|
|||
- [x] 🎛️ 高定制侧边栏,左侧为快捷设置侧边栏,右侧为模型侧边栏
|
||||
- [x] 🖼️ 可调节画板比例,使生成图像始终置顶
|
||||
- [x] 📱 移动端友好,针对手机屏幕完成部分优化
|
||||
- [x] 🌍 支持 i18n 并欢迎提交 [PR](https://github.com/canisminor1990/sd-webui-lobe-theme/tree/main/src/i18n/lang) 贡献
|
||||
- [x] 🌍 支持 i18n 并欢迎提交 [PR](https://github.com/canisminor1990/sd-webui-lobe-theme/tree/main/locales) 贡献
|
||||
- [x] 📝 语法高亮的 Prompt 输入框
|
||||
- [x] 📦 支持 [PWA](https://support.google.com/chrome/answer/9658361?hl=zh-Hans) 渐进式 Web 应用
|
||||
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@ English · [简体中文](./README-zh_CN.md) · [Changelog](./CHANGELOG.md) · [
|
|||
- [x] 🎛️ Highly customizable sidebar, with a quick settings sidebar on the left and a model sidebar on the right
|
||||
- [x] 🖼️ Adjustable canvas ratio, ensuring that generated images are always displayed at the top
|
||||
- [x] 📱 Mobile-friendly, with partial optimization for mobile screens
|
||||
- [x] 🌍Support i18n and welcome [PR](https://github.com/canisminor1990/sd-webui-lobe-theme/tree/main/src/i18n/lang) contributions
|
||||
- [x] 🌍Support i18n and welcome [PR](https://github.com/canisminor1990/sd-webui-lobe-theme/tree/main/locales) contributions
|
||||
- [x] 📝 Syntax highlighting in the prompt input box
|
||||
- [x] 📦 Support [PWA](https://support.google.com/chrome/answer/9658361) progressive web app
|
||||
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1,79 @@
|
|||
{
|
||||
"community": "Community",
|
||||
"custom": "Custom",
|
||||
"extraNetwork": "Extra Network",
|
||||
"feedback": "Feedback",
|
||||
"fixed": "Fixed",
|
||||
"float": "Float",
|
||||
"help": "Help",
|
||||
"kitchen": "Kitchen",
|
||||
"loadPrompt": "Load Prompt",
|
||||
"lobe": "Lobe",
|
||||
"moreProducts": "More Products",
|
||||
"negative": "Negative",
|
||||
"positive": "Positive",
|
||||
"quickSetting": "Quick Setting",
|
||||
"resizable": "Resizable",
|
||||
"resources": "Resources",
|
||||
"scroll": "Scroll",
|
||||
"setPrompt": "Set Prompt",
|
||||
"setting": "Setting",
|
||||
"settingButtomReset": "Reset",
|
||||
"settingButtomSubmit": "Apply and Restart Interface",
|
||||
"settingCustomFont": "Load Custom Font",
|
||||
"settingCustomFontDesc": "When enabled, it will automatically load a webfont to enhance the display of text in Chinese, English, and code",
|
||||
"settingCustomLogo": "Custom Logo",
|
||||
"settingCustomLogoDesc": "Support URL / Base64 / Emoji symbols",
|
||||
"settingCustomTitle": "Custom Title",
|
||||
"settingCustomTitleDesc": "Custom Logo Title",
|
||||
"settingExtraNetworkSidebarDefaultCardSize": "Model Cover Size",
|
||||
"settingExtraNetworkSidebarDefaultCardSizeDesc": "Default value of model cover size when starting",
|
||||
"settingExtraNetworkSidebarDefaultExpand": "Default Expand",
|
||||
"settingExtraNetworkSidebarDefaultExpandDesc": "Whether to expand the sidebar by default when starting",
|
||||
"settingExtraNetworkSidebarDefaultWidth": "Default Width",
|
||||
"settingExtraNetworkSidebarDefaultWidthDesc": "Default width of the sidebar when starting",
|
||||
"settingExtraNetworkSidebarDisplayMode": "Display Mode",
|
||||
"settingExtraNetworkSidebarDisplayModeDesc": "Fixed as grid mode for constant display, auto-expand when the mouse moves to the side in floating mode",
|
||||
"settingExtraNetworkSidebarEnable": "Enable",
|
||||
"settingExtraNetworkSidebarEnableDesc": "Enable the extra network sidebar on the right side",
|
||||
"settingGroupExtraNetworkSidebar": "Extra Network Sidebar",
|
||||
"settingGroupLayout": "Layout Settings",
|
||||
"settingGroupPromotTextarea": "Prompt Textbox",
|
||||
"settingGroupQuickSettingSidebar": "Quick Setting Sidebar",
|
||||
"settingGroupTheme": "Theme Settings",
|
||||
"settingHideFooter": "Hide Footer",
|
||||
"settingHideFooterDesc": "Hide the theme footer and only display the default footer of stable diffusion webui",
|
||||
"settingLanguage": "Language",
|
||||
"settingLanguageDesc": "Lobe Theme language",
|
||||
"settingLogoPreview": "Preview",
|
||||
"settingLogoType": "Logo Type",
|
||||
"settingLogoTypeDesc": "Logo Type",
|
||||
"settingNeutralColor": "Neutral Color",
|
||||
"settingNeutralColorDesc": "Customize different shades of gray with different color tendencies, the second one is the original Kitchen neutral color",
|
||||
"settingPrimaryColor": "Primary Color",
|
||||
"settingPrimaryColorDesc": "Custom primary color, the second one is the original Kitchen theme color",
|
||||
"settingPromptDisplayMode": "Display Mode",
|
||||
"settingPromptDisplayModeDesc": "Fixed height or auto height with draggable resize support",
|
||||
"settingPromptEditor": "Prompt Editor",
|
||||
"settingPromptEditorDesc": "Provide a simple prompt editor at the top of the quick setting sidebar",
|
||||
"settingPromptHighlight": "Prompt Syntax Highlighting",
|
||||
"settingPromptHighlightDesc": "Automatically colorize prompt display according to the Stable Diffusion syntax rules",
|
||||
"settingQuickSettingSidebarDefaultExpand": "Default Expand",
|
||||
"settingQuickSettingSidebarDefaultExpandDesc": "Whether to expand the sidebar by default when starting",
|
||||
"settingQuickSettingSidebarDefaultWidth": "Default Width",
|
||||
"settingQuickSettingSidebarDefaultWidthDesc": "Default width of the sidebar when starting",
|
||||
"settingQuickSettingSidebarDisplayMode": "Display Mode",
|
||||
"settingQuickSettingSidebarDisplayModeDesc": "Fixed as grid mode for constant display, auto-expand when the mouse moves to the side in floating mode",
|
||||
"settingQuickSettingSidebarEnable": "Enable",
|
||||
"settingQuickSettingSidebarEnableDesc": "Enable the quick setting sidebar on the left side",
|
||||
"settingReduceAnimation": "Reduce Animation",
|
||||
"settingReduceAnimationDesc": "Reduce the blur effect and background flow color, which can improve smoothness and save CPU usage",
|
||||
"settingSplitPreviewer": "Split Previewer",
|
||||
"settingSplitPreviewerDesc": "Put the prompt input box on the left and the generate button on the right, ensuring that the generated image is always displayed at the top when scrolling (experimental)",
|
||||
"settingSvgIcons": "Use SVG Icons",
|
||||
"settingSvgIconsDesc": "Replace all Emoji icons in stable diffusion webui with SVG icons globally",
|
||||
"switchTheme": "Switch Light/Dark Theme",
|
||||
"sync": "Sync with webui setting",
|
||||
"themeFeedback": "Theme Feedback",
|
||||
"themeSetting": "Theme Settings"
|
||||
}
|
||||
|
|
@ -0,0 +1,79 @@
|
|||
{
|
||||
"community": "コミュニティ",
|
||||
"custom": "カスタム",
|
||||
"extraNetwork": "追加ネットワーク",
|
||||
"feedback": "フィードバック",
|
||||
"fixed": "固定",
|
||||
"float": "フロート",
|
||||
"help": "ヘルプ",
|
||||
"kitchen": "キッチン",
|
||||
"loadPrompt": "プロンプトをロード",
|
||||
"lobe": "ローブ",
|
||||
"moreProducts": "その他の製品",
|
||||
"negative": "ネガティブなヒント",
|
||||
"positive": "ポジティブなヒント",
|
||||
"quickSetting": "クイック設定",
|
||||
"resizable": "リサイズ可能",
|
||||
"resources": "関連リソース",
|
||||
"scroll": "スクロール",
|
||||
"setPrompt": "プロンプトを設定",
|
||||
"setting": "設定",
|
||||
"settingButtomReset": "リセット",
|
||||
"settingButtomSubmit": "適用して再起動",
|
||||
"settingCustomFont": "カスタムフォントの読み込み",
|
||||
"settingCustomFontDesc": "有効にすると、Webフォントを自動的に読み込んで、英語、中国語、およびコードの表示効果を最適化します",
|
||||
"settingCustomLogo": "カスタムロゴ",
|
||||
"settingCustomLogoDesc": "URL / Base64 / 絵文字をサポート",
|
||||
"settingCustomTitle": "カスタムタイトル",
|
||||
"settingCustomTitleDesc": "カスタムロゴのタイトル名",
|
||||
"settingExtraNetworkSidebarDefaultCardSize": "モデルカバーサイズ",
|
||||
"settingExtraNetworkSidebarDefaultCardSizeDesc": "起動時のモデルカバーサイズのデフォルト値",
|
||||
"settingExtraNetworkSidebarDefaultExpand": "デフォルトで展開",
|
||||
"settingExtraNetworkSidebarDefaultExpandDesc": "起動時にサイドバーをデフォルトで展開しますか?",
|
||||
"settingExtraNetworkSidebarDefaultWidth": "デフォルト幅",
|
||||
"settingExtraNetworkSidebarDefaultWidthDesc": "起動時のサイドバーのデフォルト幅",
|
||||
"settingExtraNetworkSidebarDisplayMode": "表示モード",
|
||||
"settingExtraNetworkSidebarDisplayModeDesc": "グリッドモードで常に表示するか、ホバー時に自動的に展開するフロートモードで表示するか",
|
||||
"settingExtraNetworkSidebarEnable": "有効にする",
|
||||
"settingExtraNetworkSidebarEnableDesc": "右側の追加ネットワークサイドバーを有効にする",
|
||||
"settingGroupExtraNetworkSidebar": "追加ネットワークサイドバー",
|
||||
"settingGroupLayout": "レイアウト設定",
|
||||
"settingGroupPromotTextarea": "プロンプトテキストエリア",
|
||||
"settingGroupQuickSettingSidebar": "クイック設定サイドバー",
|
||||
"settingGroupTheme": "テーマ設定",
|
||||
"settingHideFooter": "フッターを非表示にする",
|
||||
"settingHideFooterDesc": "テーマのフッターを非表示にし、stable diffusion webui のデフォルトフッターのみ表示します",
|
||||
"settingLanguage": "言語",
|
||||
"settingLanguageDesc": "Lobe Themeの言語",
|
||||
"settingLogoPreview": "プレビュー",
|
||||
"settingLogoType": "ロゴタイプ",
|
||||
"settingLogoTypeDesc": "ロゴタイプ",
|
||||
"settingNeutralColor": "中立色",
|
||||
"settingNeutralColorDesc": "異なる色相のグレースケールのカスタマイズ。2番目は元のKitchenの中立色です",
|
||||
"settingPrimaryColor": "プライマリカラー",
|
||||
"settingPrimaryColorDesc": "カスタムプライマリカラー。2番目は元のKitchenのプライマリカラーです",
|
||||
"settingPromptDisplayMode": "表示モード",
|
||||
"settingPromptDisplayModeDesc": "固定の高さまたはドラッグリサイズをサポートする自動の高さ",
|
||||
"settingPromptEditor": "プロンプトエディタ",
|
||||
"settingPromptEditorDesc": "クイック設定サイドバーの上部に簡単なプロンプトエディタを提供します",
|
||||
"settingPromptHighlight": "Promptのシンタックスハイライト",
|
||||
"settingPromptHighlightDesc": "Stable Diffusionのシンタックスルールに基づいて、promptの表示を自動的にハイライトします",
|
||||
"settingQuickSettingSidebarDefaultExpand": "デフォルトで展開",
|
||||
"settingQuickSettingSidebarDefaultExpandDesc": "起動時にサイドバーをデフォルトで展開しますか?",
|
||||
"settingQuickSettingSidebarDefaultWidth": "デフォルト幅",
|
||||
"settingQuickSettingSidebarDefaultWidthDesc": "起動時のサイドバーのデフォルト幅",
|
||||
"settingQuickSettingSidebarDisplayMode": "表示モード",
|
||||
"settingQuickSettingSidebarDisplayModeDesc": "グリッドモードで常に表示するか、ホバー時に自動的に展開するフロートモードで表示するか",
|
||||
"settingQuickSettingSidebarEnable": "有効にする",
|
||||
"settingQuickSettingSidebarEnableDesc": "左側のクイック設定サイドバーを有効にする",
|
||||
"settingReduceAnimation": "アニメーションを削減",
|
||||
"settingReduceAnimationDesc": "ガラスのエフェクトと背景の流れる色を削減し、スムーズさを向上させ、CPUの使用量を節約できます",
|
||||
"settingSplitPreviewer": "2列モード",
|
||||
"settingSplitPreviewerDesc": "プロンプト入力ボックスを左側に配置し、生成ボタンを右側に配置し、スクロール時に生成された画像が常にトップに表示されるようにします(実験的)",
|
||||
"settingSvgIcons": "SVGアイコンを使用",
|
||||
"settingSvgIconsDesc": "stable diffusion webuiの絵文字アイコンをすべてSVGアイコンに置き換えます",
|
||||
"switchTheme": "明暗テーマを切り替える",
|
||||
"sync": "WebUIの設定と同期する",
|
||||
"themeFeedback": "テーマのフィードバック",
|
||||
"themeSetting": "テーマ設定"
|
||||
}
|
||||
|
|
@ -0,0 +1,79 @@
|
|||
{
|
||||
"community": "커뮤니티",
|
||||
"custom": "사용자 정의",
|
||||
"extraNetwork": "추가 네트워크",
|
||||
"feedback": "피드백",
|
||||
"fixed": "고정",
|
||||
"float": "부유",
|
||||
"help": "도움말",
|
||||
"kitchen": "Kitchen",
|
||||
"loadPrompt": "로드 프롬프트",
|
||||
"lobe": "Lobe",
|
||||
"moreProducts": "더 많은 제품",
|
||||
"negative": "부정적인",
|
||||
"positive": "긍정적인",
|
||||
"quickSetting": "빠른 설정",
|
||||
"resizable": "크기 조절 가능",
|
||||
"resources": "관련 자료",
|
||||
"scroll": "스크롤",
|
||||
"setPrompt": "프롬프트 설정",
|
||||
"setting": "설정",
|
||||
"settingButtomReset": "재설정",
|
||||
"settingButtomSubmit": "적용 및 인터페이스 재시작",
|
||||
"settingCustomFont": "폰트 로드",
|
||||
"settingCustomFontDesc": "이 기능을 사용하면 웹 폰트를 자동으로 로드하여 영문, 한글 및 코드 표시 효과를 최적화합니다",
|
||||
"settingCustomLogo": "사용자 정의 로고",
|
||||
"settingCustomLogoDesc": "URL / Base64 / 이모지 표정을 지원합니다.",
|
||||
"settingCustomTitle": "사용자 정의 제목",
|
||||
"settingCustomTitleDesc": "사용자 정의 로고 제목",
|
||||
"settingExtraNetworkSidebarDefaultCardSize": "모델 커버 크기",
|
||||
"settingExtraNetworkSidebarDefaultCardSizeDesc": "시작시 모델 커버 크기 기본값",
|
||||
"settingExtraNetworkSidebarDefaultExpand": "기본 확장",
|
||||
"settingExtraNetworkSidebarDefaultExpandDesc": "시작시 사이드바 기본 확장 여부",
|
||||
"settingExtraNetworkSidebarDefaultWidth": "기본 너비",
|
||||
"settingExtraNetworkSidebarDefaultWidthDesc": "시작시 사이드바 기본 너비",
|
||||
"settingExtraNetworkSidebarDisplayMode": "표시 모드",
|
||||
"settingExtraNetworkSidebarDisplayModeDesc": "그리드 모드로 고정하여 항상 표시하거나, 부유 모드로 설정하여 사이드바에 마우스를 가져가면 자동으로 확장",
|
||||
"settingExtraNetworkSidebarEnable": "사용",
|
||||
"settingExtraNetworkSidebarEnableDesc": "오른쪽에 추가 네트워크 사이드바 활성화",
|
||||
"settingGroupExtraNetworkSidebar": "추가 네트워크 사이드바",
|
||||
"settingGroupLayout": "레이아웃 설정",
|
||||
"settingGroupPromotTextarea": "프롬프트 텍스트 영역",
|
||||
"settingGroupQuickSettingSidebar": "빠른 설정 사이드바",
|
||||
"settingGroupTheme": "테마 설정",
|
||||
"settingHideFooter": "푸터 숨기기",
|
||||
"settingHideFooterDesc": "테마 푸터를 숨기고 stable diffusion webui의 기본 푸터만 표시",
|
||||
"settingLanguage": "언어",
|
||||
"settingLanguageDesc": "Lobe Theme 테마 언어",
|
||||
"settingLogoPreview": "미리보기",
|
||||
"settingLogoType": "로고 유형",
|
||||
"settingLogoTypeDesc": "로고 유형",
|
||||
"settingNeutralColor": "중립색",
|
||||
"settingNeutralColorDesc": "다른 색상 경향의 그레이 스케일 사용자 정의, 두 번째는 원래 Kitchen의 중립색",
|
||||
"settingPrimaryColor": "기본 색상",
|
||||
"settingPrimaryColorDesc": "사용자 정의 기본 색상, 두 번째는 원래 Kitchen의 기본 색상",
|
||||
"settingPromptDisplayMode": "표시 모드",
|
||||
"settingPromptDisplayModeDesc": "고정 높이 또는 자동 높이 및 드래그 조절 지원",
|
||||
"settingPromptEditor": "프롬프트 편집기",
|
||||
"settingPromptEditorDesc": "빠른 설정 사이드바 상단에 간단한 프롬프트 편집기 제공",
|
||||
"settingPromptHighlight": "Prompt 구문 강조",
|
||||
"settingPromptHighlightDesc": "Stable Diffusion 구문 규칙에 따라 자동으로 prompt를 강조하여 표시합니다",
|
||||
"settingQuickSettingSidebarDefaultExpand": "기본 확장",
|
||||
"settingQuickSettingSidebarDefaultExpandDesc": "시작시 사이드바 기본 확장 여부",
|
||||
"settingQuickSettingSidebarDefaultWidth": "기본 너비",
|
||||
"settingQuickSettingSidebarDefaultWidthDesc": "시작시 사이드바 기본 너비",
|
||||
"settingQuickSettingSidebarDisplayMode": "표시 모드",
|
||||
"settingQuickSettingSidebarDisplayModeDesc": "그리드 모드로 고정하여 항상 표시하거나, 부유 모드로 설정하여 사이드바에 마우스를 가져가면 자동으로 확장",
|
||||
"settingQuickSettingSidebarEnable": "사용",
|
||||
"settingQuickSettingSidebarEnableDesc": "왼쪽에 빠른 설정 사이드바 활성화",
|
||||
"settingReduceAnimation": "애니메이션 줄이기",
|
||||
"settingReduceAnimationDesc": "유리 효과와 배경 흐름 색상을 줄여서 부드러움을 향상시키고 CPU 사용량을 줄일 수 있습니다.",
|
||||
"settingSplitPreviewer": "이중 열 모드",
|
||||
"settingSplitPreviewerDesc": "프롬프트 입력 상자를 왼쪽에 배치하고, 우측에 생성 버튼을 두어 스크롤 시 생성된 이미지가 항상 위에 표시되도록 합니다 (실험적)",
|
||||
"settingSvgIcons": "SVG 아이콘 사용",
|
||||
"settingSvgIconsDesc": "stable diffusion webui의 이모지 아이콘을 전역적으로 SVG 아이콘으로 교체합니다.",
|
||||
"switchTheme": "밝기 테마 전환",
|
||||
"sync": "웹 UI 설정과 동기화",
|
||||
"themeFeedback": "테마 피드백",
|
||||
"themeSetting": "테마 설정"
|
||||
}
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
[
|
||||
{
|
||||
"label": "English",
|
||||
"value": "en_US"
|
||||
},
|
||||
{
|
||||
"label": "简体中文",
|
||||
"value": "zh_CN"
|
||||
},
|
||||
{
|
||||
"label": "繁體中文",
|
||||
"value": "zh_HK"
|
||||
},
|
||||
{
|
||||
"label": "日本語",
|
||||
"value": "ja_JP"
|
||||
},
|
||||
{
|
||||
"label": "한국어",
|
||||
"value": "ko_KR"
|
||||
}
|
||||
]
|
||||
|
|
@ -0,0 +1,79 @@
|
|||
{
|
||||
"community": "社区",
|
||||
"custom": "自定义",
|
||||
"extraNetwork": "附加网络",
|
||||
"feedback": "反馈",
|
||||
"fixed": "固定",
|
||||
"float": "悬浮",
|
||||
"help": "帮助",
|
||||
"kitchen": "Kitchen",
|
||||
"loadPrompt": "加载提示",
|
||||
"lobe": "Lobe",
|
||||
"moreProducts": "更多产品",
|
||||
"negative": "反向提示词",
|
||||
"positive": "正面提示词",
|
||||
"quickSetting": "快捷设置",
|
||||
"resizable": "缩放",
|
||||
"resources": "相关资源",
|
||||
"scroll": "滚动",
|
||||
"setPrompt": "发送提示词",
|
||||
"setting": "设置",
|
||||
"settingButtomReset": "重置",
|
||||
"settingButtomSubmit": "应用并重启界面",
|
||||
"settingCustomFont": "加载字体美化",
|
||||
"settingCustomFontDesc": "开启后会自动加载 Webfont 美化字体,优化中英文和代码显示效果",
|
||||
"settingCustomLogo": "自定义 Logo",
|
||||
"settingCustomLogoDesc": "支持 URL / Base64 / Emoji 表情符号",
|
||||
"settingCustomTitle": "自定义标题",
|
||||
"settingCustomTitleDesc": "自定义 Logo 标题名称",
|
||||
"settingExtraNetworkSidebarDefaultCardSize": "模型封面尺寸",
|
||||
"settingExtraNetworkSidebarDefaultCardSizeDesc": "启动时模型封面尺寸默认值",
|
||||
"settingExtraNetworkSidebarDefaultExpand": "默认展开",
|
||||
"settingExtraNetworkSidebarDefaultExpandDesc": "是否在启动时将侧边栏默认展开",
|
||||
"settingExtraNetworkSidebarDefaultWidth": "默认宽度",
|
||||
"settingExtraNetworkSidebarDefaultWidthDesc": "侧边栏在启动时的默认宽度",
|
||||
"settingExtraNetworkSidebarDisplayMode": "显示模式",
|
||||
"settingExtraNetworkSidebarDisplayModeDesc": "固定为栅格模式常驻显示,悬浮模式时当鼠标移到侧边时自动展开",
|
||||
"settingExtraNetworkSidebarEnable": "启用",
|
||||
"settingExtraNetworkSidebarEnableDesc": "启用位于右侧的附加网络侧边栏",
|
||||
"settingGroupExtraNetworkSidebar": "附加网络侧边栏",
|
||||
"settingGroupLayout": "布局设置",
|
||||
"settingGroupPromotTextarea": "提示词文本框",
|
||||
"settingGroupQuickSettingSidebar": "快捷设置侧边栏",
|
||||
"settingGroupTheme": "主题设置",
|
||||
"settingHideFooter": "隐藏页脚",
|
||||
"settingHideFooterDesc": "隐藏主题页脚,只显示 stable diffusion webui 默认页脚",
|
||||
"settingLanguage": "语言",
|
||||
"settingLanguageDesc": "Lobe Theme 主题语言",
|
||||
"settingLogoPreview": "预览",
|
||||
"settingLogoType": "Logo 类型",
|
||||
"settingLogoTypeDesc": "Logo 类型",
|
||||
"settingNeutralColor": "中性色",
|
||||
"settingNeutralColorDesc": "不同色彩倾向的灰阶自定义,第二个为原始 Kitchen 中性色",
|
||||
"settingPrimaryColor": "主题色",
|
||||
"settingPrimaryColorDesc": "自定义主题色,第二个为原始 Kitchen 主题色",
|
||||
"settingPromptDisplayMode": "显示模式",
|
||||
"settingPromptDisplayModeDesc": "固定高度或自动高度并支持拖拽拉伸",
|
||||
"settingPromptEditor": "提示词编辑器",
|
||||
"settingPromptEditorDesc": "提供简易的提示词编辑器位于快捷设置侧边栏顶部",
|
||||
"settingPromptHighlight": "Prompt 语法高亮",
|
||||
"settingPromptHighlightDesc": "按 Stable Diffusion 语法规则,自动染色 prompt 显示",
|
||||
"settingQuickSettingSidebarDefaultExpand": "默认展开",
|
||||
"settingQuickSettingSidebarDefaultExpandDesc": "是否在启动时将侧边栏默认展开",
|
||||
"settingQuickSettingSidebarDefaultWidth": "默认宽度",
|
||||
"settingQuickSettingSidebarDefaultWidthDesc": "侧边栏在启动时的默认宽度",
|
||||
"settingQuickSettingSidebarDisplayMode": "显示模式",
|
||||
"settingQuickSettingSidebarDisplayModeDesc": "固定为栅格模式常驻显示,悬浮模式时当鼠标移到侧边时自动展开",
|
||||
"settingQuickSettingSidebarEnable": "启用",
|
||||
"settingQuickSettingSidebarEnableDesc": "启用位于左侧的快捷设置侧边栏",
|
||||
"settingReduceAnimation": "减少动画效果",
|
||||
"settingReduceAnimationDesc": "减少毛玻璃效果和背景流动色,可以提升流畅度并节省 CPU 使用",
|
||||
"settingSplitPreviewer": "双列模式",
|
||||
"settingSplitPreviewerDesc": "将提示词输入框放在左侧,生成按钮于右侧,确保在滚动时生成的图像始终显示在顶部 (实验性)",
|
||||
"settingSvgIcons": "使用 SVG 图标",
|
||||
"settingSvgIconsDesc": "将 stable diffusion webui 中的 Emoji 图标全局替换为 SVG 图标",
|
||||
"switchTheme": "切换亮暗色主题",
|
||||
"sync": "与 WebUI 设置同步",
|
||||
"themeFeedback": "主题反馈",
|
||||
"themeSetting": "主题设置"
|
||||
}
|
||||
|
|
@ -0,0 +1,79 @@
|
|||
{
|
||||
"community": "社區",
|
||||
"custom": "自訂",
|
||||
"extraNetwork": "附加網絡",
|
||||
"feedback": "反饋",
|
||||
"fixed": "固定",
|
||||
"float": "懸浮",
|
||||
"help": "幫助",
|
||||
"kitchen": "Kitchen",
|
||||
"loadPrompt": "加載提示",
|
||||
"lobe": "Lobe",
|
||||
"moreProducts": "更多產品",
|
||||
"negative": "反向提示詞",
|
||||
"positive": "正面提示詞",
|
||||
"quickSetting": "快捷設置",
|
||||
"resizable": "縮放",
|
||||
"resources": "相關資源",
|
||||
"scroll": "滾動",
|
||||
"setPrompt": "發送提示詞",
|
||||
"setting": "設置",
|
||||
"settingButtomReset": "重置",
|
||||
"settingButtomSubmit": "應用並重啟界面",
|
||||
"settingCustomFont": "載入字型美化",
|
||||
"settingCustomFontDesc": "開啟後會自動載入 Webfont 美化字型,優化中英文和程式碼顯示效果",
|
||||
"settingCustomLogo": "自定義 Logo",
|
||||
"settingCustomLogoDesc": "支持 URL / Base64 / Emoji 表情符號",
|
||||
"settingCustomTitle": "自定義標題",
|
||||
"settingCustomTitleDesc": "自定義 Logo 標題名稱",
|
||||
"settingExtraNetworkSidebarDefaultCardSize": "模型封面尺寸",
|
||||
"settingExtraNetworkSidebarDefaultCardSizeDesc": "啟動時模型封面尺寸默認值",
|
||||
"settingExtraNetworkSidebarDefaultExpand": "默認展開",
|
||||
"settingExtraNetworkSidebarDefaultExpandDesc": "是否在啟動時將側邊欄默認展開",
|
||||
"settingExtraNetworkSidebarDefaultWidth": "默認寬度",
|
||||
"settingExtraNetworkSidebarDefaultWidthDesc": "側邊欄在啟動時的默認寬度",
|
||||
"settingExtraNetworkSidebarDisplayMode": "顯示模式",
|
||||
"settingExtraNetworkSidebarDisplayModeDesc": "固定為格模式常駐顯示,懸浮模式時當鼠標移到側邊時自動展開",
|
||||
"settingExtraNetworkSidebarEnable": "啟用",
|
||||
"settingExtraNetworkSidebarEnableDesc": "啟用位於右側的附加網絡側邊欄",
|
||||
"settingGroupExtraNetworkSidebar": "附加網絡側邊欄",
|
||||
"settingGroupLayout": "佈局設置",
|
||||
"settingGroupPromotTextarea": "提示詞文本框",
|
||||
"settingGroupQuickSettingSidebar": "快捷設置側邊欄",
|
||||
"settingGroupTheme": "主題設置",
|
||||
"settingHideFooter": "隱藏頁腳",
|
||||
"settingHideFooterDesc": "隱藏主題頁腳,只顯示 stable diffusion webui 默認頁腳",
|
||||
"settingLanguage": "語言",
|
||||
"settingLanguageDesc": "Lobe Theme 主題語言",
|
||||
"settingLogoPreview": "預覽",
|
||||
"settingLogoType": "Logo 類型",
|
||||
"settingLogoTypeDesc": "Logo 類型",
|
||||
"settingNeutralColor": "中性色",
|
||||
"settingNeutralColorDesc": "不同色彩傾向的灰階自定義,第二個為原始 Kitchen 中性色",
|
||||
"settingPrimaryColor": "主題色",
|
||||
"settingPrimaryColorDesc": "自定義主題色,第二個為原始 Kitchen 主題色",
|
||||
"settingPromptDisplayMode": "顯示模式",
|
||||
"settingPromptDisplayModeDesc": "固定高度或自動高度並支持拖拽拉伸",
|
||||
"settingPromptEditor": "提示詞編輯器",
|
||||
"settingPromptEditorDesc": "提供簡易的提示詞編輯器位於快捷設置側邊欄頂部",
|
||||
"settingPromptHighlight": "Prompt 語法高亮",
|
||||
"settingPromptHighlightDesc": "按照 Stable Diffusion 語法規則,自動著色 prompt 顯示",
|
||||
"settingQuickSettingSidebarDefaultExpand": "默認展開",
|
||||
"settingQuickSettingSidebarDefaultExpandDesc": "是否在啟動時將側邊欄默認展開",
|
||||
"settingQuickSettingSidebarDefaultWidth": "默認寬度",
|
||||
"settingQuickSettingSidebarDefaultWidthDesc": "側邊欄在啟動時的默認寬度",
|
||||
"settingQuickSettingSidebarDisplayMode": "顯示模式",
|
||||
"settingQuickSettingSidebarDisplayModeDesc": "固定為格模式常駐顯示,懸浮模式時當鼠標移到側邊時自動展開",
|
||||
"settingQuickSettingSidebarEnable": "啟用",
|
||||
"settingQuickSettingSidebarEnableDesc": "啟用位於左側的快捷設置側邊欄",
|
||||
"settingReduceAnimation": "減少動畫效果",
|
||||
"settingReduceAnimationDesc": "減少毛玻璃效果和背景流動色,可以提升流暢度並節省 CPU 使用",
|
||||
"settingSplitPreviewer": "雙列模式",
|
||||
"settingSplitPreviewerDesc": "將提示詞輸入框放在左側,生成按鈕於右側,確保在滾動時生成的圖像始終顯示在頂部 (實驗性)",
|
||||
"settingSvgIcons": "使用 SVG 圖標",
|
||||
"settingSvgIconsDesc": "將 stable diffusion webui 中的 Emoji 圖標全局替換為 SVG 圖標",
|
||||
"switchTheme": "切換亮暗色主題",
|
||||
"sync": "與 WebUI 設置同步",
|
||||
"themeFeedback": "主題反饋",
|
||||
"themeSetting": "主題設置"
|
||||
}
|
||||
|
|
@ -28,6 +28,7 @@
|
|||
"build": "vite build",
|
||||
"dev": "vite",
|
||||
"dev:sd": "cd ../../ && ./webui.sh",
|
||||
"i18n": "lobe-i18n",
|
||||
"lint": "eslint \"src/**/*.{js,jsx,ts,tsx}\" --fix",
|
||||
"lint:md": "remark . --quiet --output",
|
||||
"lint:style": "stylelint \"src/**/*.{css,less,js,jsx,ts,tsx}\" --fix",
|
||||
|
|
@ -64,6 +65,7 @@
|
|||
"devDependencies": {
|
||||
"@babel/plugin-syntax-import-assertions": "^7",
|
||||
"@commitlint/cli": "^17",
|
||||
"@lobehub/i18n-cli": "latest",
|
||||
"@lobehub/lint": "latest",
|
||||
"@lobehub/ui": "latest",
|
||||
"@types/lodash-es": "^4",
|
||||
|
|
@ -86,6 +88,7 @@
|
|||
"fast-deep-equal": "^3",
|
||||
"husky": "^8",
|
||||
"i18next": "^23",
|
||||
"i18next-http-backend": "^2.2.1",
|
||||
"lint-staged": "^13",
|
||||
"lodash-es": "^4",
|
||||
"lucide-react": "latest",
|
||||
|
|
|
|||
|
|
@ -5,12 +5,14 @@ from fastapi import FastAPI, Response, Request
|
|||
|
||||
from scripts.lib.config import LobeConfig
|
||||
from scripts.lib.package import LobePackage
|
||||
from scripts.lib.locale import LobeLocale
|
||||
from scripts.lib.lobe_log import LobeLog
|
||||
|
||||
class LobeApi:
|
||||
def __init__(self, config: LobeConfig, package: LobePackage):
|
||||
def __init__(self, config: LobeConfig, package: LobePackage, locale: LobeLocale):
|
||||
self.package = package
|
||||
self.config = config
|
||||
self.locale = locale
|
||||
pass
|
||||
|
||||
def create_api_route(self, app: FastAPI):
|
||||
|
|
@ -23,6 +25,14 @@ class LobeApi:
|
|||
return Response(content=self.package.json(), media_type="application/json", status_code=404)
|
||||
return Response(content=self.package.json(), media_type="application/json", status_code=200)
|
||||
|
||||
@app.get("/lobe/locales/{lng}")
|
||||
async def lobe_locale_get(lng: str):
|
||||
LobeLog.debug(f"lobe_locale_get: {lng}")
|
||||
|
||||
language_data = self.locale.get_language_file(lng)
|
||||
|
||||
return Response(content=json.dumps(language_data), media_type="application/json", status_code=200)
|
||||
|
||||
@app.get("/lobe/config")
|
||||
async def lobe_config_get():
|
||||
LobeLog.debug("lobe_config_get")
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ class LobePackage:
|
|||
self.package = json.load(f)
|
||||
else:
|
||||
LobeLog.debug(f"Package file not found")
|
||||
self.package = LobeConfig.default()
|
||||
self.package = {"error": "Package file not found"}
|
||||
|
||||
def is_empty(self):
|
||||
return "empty" in self.package and self.package['empty']
|
||||
|
|
|
|||
|
|
@ -11,13 +11,15 @@ from scripts.lib.lobe_log import LobeLog
|
|||
from scripts.lib.api import LobeApi
|
||||
from scripts.lib.config import LobeConfig
|
||||
from scripts.lib.package import LobePackage
|
||||
from scripts.lib.locale import LobeLocale
|
||||
|
||||
def init_lobe(_: Any, app: FastAPI, **kwargs):
|
||||
LobeLog.info("Initializing Lobe")
|
||||
|
||||
package = LobePackage()
|
||||
locale = LobeLocale()
|
||||
config = LobeConfig()
|
||||
api = LobeApi(config, package)
|
||||
api = LobeApi(config, package, locale)
|
||||
api.create_api_route(app)
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -7,7 +7,6 @@ import { useTranslation } from 'react-i18next';
|
|||
import { shallow } from 'zustand/shallow';
|
||||
|
||||
import { CustomLogo } from '@/components';
|
||||
import { I18nOptions } from '@/i18n';
|
||||
import { NeutralColor, PrimaryColor, WebuiSetting, defaultSetting, useAppStore } from '@/store';
|
||||
|
||||
import { colors, findKey, neutralColors, primaryColors } from './data';
|
||||
|
|
@ -15,8 +14,8 @@ import { useStyles } from './style';
|
|||
|
||||
const SettingForm = memo(() => {
|
||||
const setting = useAppStore((st) => st.setting, isEqual);
|
||||
const { onSetSetting } = useAppStore(
|
||||
(st) => ({ onSetSetting: st.onSetSetting, themeMode: st.themeMode }),
|
||||
const { onSetSetting, localeOptions } = useAppStore(
|
||||
(st) => ({ localeOptions: st.localeOptions, onSetSetting: st.onSetSetting }),
|
||||
shallow,
|
||||
);
|
||||
const [rawSetting, setRawSetting] = useState<WebuiSetting>(setting);
|
||||
|
|
@ -47,7 +46,7 @@ const SettingForm = memo(() => {
|
|||
{
|
||||
children: [
|
||||
{
|
||||
children: <Select options={I18nOptions} />,
|
||||
children: <Select options={localeOptions} />,
|
||||
desc: t('settingLanguageDesc'),
|
||||
label: t('settingLanguage'),
|
||||
name: 'i18n',
|
||||
|
|
|
|||
|
|
@ -1,35 +1,19 @@
|
|||
import i18next from 'i18next';
|
||||
import HttpBackend, { HttpBackendOptions } from 'i18next-http-backend';
|
||||
import { initReactI18next } from 'react-i18next';
|
||||
|
||||
import { SETTING_KEY, WebuiSetting } from '@/store';
|
||||
|
||||
import en_US from './lang/en_US';
|
||||
import ja_JP from './lang/ja_JP';
|
||||
import ko_KR from './lang/ko_KR';
|
||||
import zh_CN from './lang/zh_CN';
|
||||
import zh_HK from './lang/zh_HK';
|
||||
|
||||
const localSetting = JSON.parse(localStorage.getItem(SETTING_KEY) as any) as WebuiSetting;
|
||||
|
||||
i18next.use(initReactI18next).init({
|
||||
debug: process.env.NODE_ENV === 'development',
|
||||
fallbackLng: 'en_US',
|
||||
lng: localSetting?.i18n || 'en_US',
|
||||
resources: {
|
||||
en_US: {
|
||||
translation: en_US,
|
||||
i18next
|
||||
.use(initReactI18next)
|
||||
.use(HttpBackend)
|
||||
.init<HttpBackendOptions>({
|
||||
backend: {
|
||||
loadPath: '/lobe/locales/{{lng}}.json',
|
||||
},
|
||||
ja_JP: {
|
||||
translation: ja_JP,
|
||||
},
|
||||
ko_KR: {
|
||||
translation: ko_KR,
|
||||
},
|
||||
zh_CN: {
|
||||
translation: zh_CN,
|
||||
},
|
||||
zh_HK: {
|
||||
translation: zh_HK,
|
||||
},
|
||||
},
|
||||
});
|
||||
debug: process.env.NODE_ENV === 'development',
|
||||
fallbackLng: 'en_US',
|
||||
lng: localSetting?.i18n || 'en_US',
|
||||
});
|
||||
|
|
|
|||
|
|
@ -1,26 +0,0 @@
|
|||
import { type SelectProps } from 'antd';
|
||||
|
||||
export type I18n = 'en_US' | 'zh-CN' | 'zh_HK' | 'ja_JP' | 'ko_KR';
|
||||
|
||||
export const I18nOptions: SelectProps['options'] = [
|
||||
{
|
||||
label: 'English',
|
||||
value: 'en_US',
|
||||
},
|
||||
{
|
||||
label: '简体中文',
|
||||
value: 'zh_CN',
|
||||
},
|
||||
{
|
||||
label: '繁體中文',
|
||||
value: 'zh_HK',
|
||||
},
|
||||
{
|
||||
label: '日本語',
|
||||
value: 'ja_JP',
|
||||
},
|
||||
{
|
||||
label: '한국어',
|
||||
value: 'ko_KR',
|
||||
},
|
||||
];
|
||||
|
|
@ -1,92 +0,0 @@
|
|||
const translation = {
|
||||
community: 'Community',
|
||||
custom: 'Custom',
|
||||
extraNetwork: 'Extra Network',
|
||||
feedback: 'Feedback',
|
||||
fixed: 'Fixed',
|
||||
float: 'Float',
|
||||
help: 'Help',
|
||||
kitchen: 'Kitchen',
|
||||
loadPrompt: 'Load Prompt',
|
||||
lobe: 'Lobe',
|
||||
moreProducts: 'More Products',
|
||||
negative: 'Negative',
|
||||
positive: 'Positive',
|
||||
quickSetting: 'Quick Setting',
|
||||
resizable: 'Resizable',
|
||||
resources: 'Resources',
|
||||
scroll: 'Scroll',
|
||||
setPrompt: 'Set Prompt',
|
||||
setting: 'Setting',
|
||||
settingButtomReset: 'Reset',
|
||||
settingButtomSubmit: 'Apply and Restart Interface',
|
||||
settingCustomFont: 'Load Custom Font',
|
||||
settingCustomFontDesc:
|
||||
'When enabled, it will automatically load a webfont to enhance the display of text in Chinese, English, and code',
|
||||
settingCustomLogo: 'Custom Logo',
|
||||
settingCustomLogoDesc: 'Support URL / Base64 / Emoji symbols',
|
||||
settingCustomTitle: 'Custom Title',
|
||||
settingCustomTitleDesc: 'Custom Logo Title',
|
||||
settingExtraNetworkSidebarDefaultCardSize: 'Model Cover Size',
|
||||
settingExtraNetworkSidebarDefaultCardSizeDesc: 'Default value of model cover size when starting',
|
||||
settingExtraNetworkSidebarDefaultExpand: 'Default Expand',
|
||||
settingExtraNetworkSidebarDefaultExpandDesc:
|
||||
'Whether to expand the sidebar by default when starting',
|
||||
settingExtraNetworkSidebarDefaultWidth: 'Default Width',
|
||||
settingExtraNetworkSidebarDefaultWidthDesc: 'Default width of the sidebar when starting',
|
||||
settingExtraNetworkSidebarDisplayMode: 'Display Mode',
|
||||
settingExtraNetworkSidebarDisplayModeDesc:
|
||||
'Fixed as grid mode for constant display, auto-expand when the mouse moves to the side in floating mode',
|
||||
settingExtraNetworkSidebarEnable: 'Enable',
|
||||
settingExtraNetworkSidebarEnableDesc: 'Enable the extra network sidebar on the right side',
|
||||
settingGroupExtraNetworkSidebar: 'Extra Network Sidebar',
|
||||
settingGroupLayout: 'Layout Settings',
|
||||
settingGroupPromotTextarea: 'Prompt Textbox',
|
||||
settingGroupQuickSettingSidebar: 'Quick Setting Sidebar',
|
||||
settingGroupTheme: 'Theme Settings',
|
||||
settingHideFooter: 'Hide Footer',
|
||||
settingHideFooterDesc:
|
||||
'Hide the theme footer and only display the default footer of stable diffusion webui',
|
||||
settingLanguage: 'Language',
|
||||
settingLanguageDesc: 'Lobe Theme language',
|
||||
settingLogoPreview: 'Preview',
|
||||
settingLogoType: 'Logo Type',
|
||||
settingLogoTypeDesc: 'Logo Type',
|
||||
settingNeutralColor: 'Neutral Color',
|
||||
settingNeutralColorDesc:
|
||||
'Customize different shades of gray with different color tendencies, the second one is the original Kitchen neutral color',
|
||||
settingPrimaryColor: 'Primary Color',
|
||||
settingPrimaryColorDesc:
|
||||
'Custom primary color, the second one is the original Kitchen theme color',
|
||||
settingPromptDisplayMode: 'Display Mode',
|
||||
settingPromptDisplayModeDesc: 'Fixed height or auto height with draggable resize support',
|
||||
settingPromptEditor: 'Prompt Editor',
|
||||
settingPromptEditorDesc: 'Provide a simple prompt editor at the top of the quick setting sidebar',
|
||||
settingPromptHighlight: 'Prompt Syntax Highlighting',
|
||||
settingPromptHighlightDesc:
|
||||
'Automatically colorize prompt display according to the Stable Diffusion syntax rules',
|
||||
settingQuickSettingSidebarDefaultExpand: 'Default Expand',
|
||||
settingQuickSettingSidebarDefaultExpandDesc:
|
||||
'Whether to expand the sidebar by default when starting',
|
||||
settingQuickSettingSidebarDefaultWidth: 'Default Width',
|
||||
settingQuickSettingSidebarDefaultWidthDesc: 'Default width of the sidebar when starting',
|
||||
settingQuickSettingSidebarDisplayMode: 'Display Mode',
|
||||
settingQuickSettingSidebarDisplayModeDesc:
|
||||
'Fixed as grid mode for constant display, auto-expand when the mouse moves to the side in floating mode',
|
||||
settingQuickSettingSidebarEnable: 'Enable',
|
||||
settingQuickSettingSidebarEnableDesc: 'Enable the quick setting sidebar on the left side',
|
||||
settingReduceAnimation: 'Reduce Animation',
|
||||
settingReduceAnimationDesc:
|
||||
'Reduce the blur effect and background flow color, which can improve smoothness and save CPU usage',
|
||||
settingSplitPreviewer: 'Split Previewer',
|
||||
settingSplitPreviewerDesc:
|
||||
'Put the prompt input box on the left and the generate button on the right, ensuring that the generated image is always displayed at the top when scrolling (experimental)',
|
||||
settingSvgIcons: 'Use SVG Icons',
|
||||
settingSvgIconsDesc: 'Replace all Emoji icons in stable diffusion webui with SVG icons globally',
|
||||
switchTheme: 'Switch Light/Dark Theme',
|
||||
sync: 'Sync with webui setting',
|
||||
themeFeedback: 'Theme Feedback',
|
||||
themeSetting: 'Theme Settings',
|
||||
};
|
||||
|
||||
export default translation;
|
||||
|
|
@ -1,91 +0,0 @@
|
|||
import type { Translation } from '@/types';
|
||||
|
||||
const translation: Translation = {
|
||||
community: 'コミュニティ',
|
||||
custom: 'カスタム',
|
||||
extraNetwork: '追加ネットワーク',
|
||||
feedback: 'フィードバック',
|
||||
fixed: '固定',
|
||||
float: 'フロート',
|
||||
help: 'ヘルプ',
|
||||
kitchen: 'キッチン',
|
||||
loadPrompt: 'プロンプトをロード',
|
||||
lobe: 'ローブ',
|
||||
moreProducts: 'その他の製品',
|
||||
negative: 'ネガティブなヒント',
|
||||
positive: 'ポジティブなヒント',
|
||||
quickSetting: 'クイック設定',
|
||||
resizable: 'リサイズ可能',
|
||||
resources: '関連リソース',
|
||||
scroll: 'スクロール',
|
||||
setPrompt: 'プロンプトを設定',
|
||||
setting: '設定',
|
||||
settingButtomReset: 'リセット',
|
||||
settingButtomSubmit: '適用して再起動',
|
||||
settingCustomFont: 'カスタムフォントの読み込み',
|
||||
settingCustomFontDesc:
|
||||
'有効にすると、Webフォントを自動的に読み込んで、英語、中国語、およびコードの表示効果を最適化します',
|
||||
settingCustomLogo: 'カスタムロゴ',
|
||||
settingCustomLogoDesc: 'URL / Base64 / 絵文字をサポート',
|
||||
settingCustomTitle: 'カスタムタイトル',
|
||||
settingCustomTitleDesc: 'カスタムロゴのタイトル名',
|
||||
settingExtraNetworkSidebarDefaultCardSize: 'モデルカバーサイズ',
|
||||
settingExtraNetworkSidebarDefaultCardSizeDesc: '起動時のモデルカバーサイズのデフォルト値',
|
||||
settingExtraNetworkSidebarDefaultExpand: 'デフォルトで展開',
|
||||
settingExtraNetworkSidebarDefaultExpandDesc: '起動時にサイドバーをデフォルトで展開しますか?',
|
||||
settingExtraNetworkSidebarDefaultWidth: 'デフォルト幅',
|
||||
settingExtraNetworkSidebarDefaultWidthDesc: '起動時のサイドバーのデフォルト幅',
|
||||
settingExtraNetworkSidebarDisplayMode: '表示モード',
|
||||
settingExtraNetworkSidebarDisplayModeDesc:
|
||||
'グリッドモードで常に表示するか、ホバー時に自動的に展開するフロートモードで表示するか',
|
||||
settingExtraNetworkSidebarEnable: '有効にする',
|
||||
settingExtraNetworkSidebarEnableDesc: '右側の追加ネットワークサイドバーを有効にする',
|
||||
settingGroupExtraNetworkSidebar: '追加ネットワークサイドバー',
|
||||
settingGroupLayout: 'レイアウト設定',
|
||||
settingGroupPromotTextarea: 'プロンプトテキストエリア',
|
||||
settingGroupQuickSettingSidebar: 'クイック設定サイドバー',
|
||||
settingGroupTheme: 'テーマ設定',
|
||||
settingHideFooter: 'フッターを非表示にする',
|
||||
settingHideFooterDesc:
|
||||
'テーマのフッターを非表示にし、stable diffusion webui のデフォルトフッターのみ表示します',
|
||||
settingLanguage: '言語',
|
||||
settingLanguageDesc: 'Lobe Themeの言語',
|
||||
settingLogoPreview: 'プレビュー',
|
||||
settingLogoType: 'ロゴタイプ',
|
||||
settingLogoTypeDesc: 'ロゴタイプ',
|
||||
settingNeutralColor: '中立色',
|
||||
settingNeutralColorDesc:
|
||||
'異なる色相のグレースケールのカスタマイズ。2番目は元のKitchenの中立色です',
|
||||
settingPrimaryColor: 'プライマリカラー',
|
||||
settingPrimaryColorDesc: 'カスタムプライマリカラー。2番目は元のKitchenのプライマリカラーです',
|
||||
settingPromptDisplayMode: '表示モード',
|
||||
settingPromptDisplayModeDesc: '固定の高さまたはドラッグリサイズをサポートする自動の高さ',
|
||||
settingPromptEditor: 'プロンプトエディタ',
|
||||
settingPromptEditorDesc: 'クイック設定サイドバーの上部に簡単なプロンプトエディタを提供します',
|
||||
settingPromptHighlight: 'Promptのシンタックスハイライト',
|
||||
settingPromptHighlightDesc:
|
||||
'Stable Diffusionのシンタックスルールに基づいて、promptの表示を自動的にハイライトします',
|
||||
settingQuickSettingSidebarDefaultExpand: 'デフォルトで展開',
|
||||
settingQuickSettingSidebarDefaultExpandDesc: '起動時にサイドバーをデフォルトで展開しますか?',
|
||||
settingQuickSettingSidebarDefaultWidth: 'デフォルト幅',
|
||||
settingQuickSettingSidebarDefaultWidthDesc: '起動時のサイドバーのデフォルト幅',
|
||||
settingQuickSettingSidebarDisplayMode: '表示モード',
|
||||
settingQuickSettingSidebarDisplayModeDesc:
|
||||
'グリッドモードで常に表示するか、ホバー時に自動的に展開するフロートモードで表示するか',
|
||||
settingQuickSettingSidebarEnable: '有効にする',
|
||||
settingQuickSettingSidebarEnableDesc: '左側のクイック設定サイドバーを有効にする',
|
||||
settingReduceAnimation: 'アニメーションを削減',
|
||||
settingReduceAnimationDesc:
|
||||
'ガラスのエフェクトと背景の流れる色を削減し、スムーズさを向上させ、CPUの使用量を節約できます',
|
||||
settingSplitPreviewer: '2列モード',
|
||||
settingSplitPreviewerDesc:
|
||||
'プロンプト入力ボックスを左側に配置し、生成ボタンを右側に配置し、スクロール時に生成された画像が常にトップに表示されるようにします(実験的)',
|
||||
settingSvgIcons: 'SVGアイコンを使用',
|
||||
settingSvgIconsDesc: 'stable diffusion webuiの絵文字アイコンをすべてSVGアイコンに置き換えます',
|
||||
switchTheme: '明暗テーマを切り替える',
|
||||
sync: 'WebUIの設定と同期する',
|
||||
themeFeedback: 'テーマのフィードバック',
|
||||
themeSetting: 'テーマ設定',
|
||||
};
|
||||
|
||||
export default translation;
|
||||
|
|
@ -1,91 +0,0 @@
|
|||
import type { Translation } from '@/types';
|
||||
|
||||
const translation: Translation = {
|
||||
community: '커뮤니티',
|
||||
custom: '사용자 정의',
|
||||
extraNetwork: '추가 네트워크',
|
||||
feedback: '피드백',
|
||||
fixed: '고정',
|
||||
float: '부유',
|
||||
help: '도움말',
|
||||
kitchen: 'Kitchen',
|
||||
loadPrompt: '로드 프롬프트',
|
||||
lobe: 'Lobe',
|
||||
moreProducts: '더 많은 제품',
|
||||
negative: '부정적인',
|
||||
positive: '긍정적인',
|
||||
quickSetting: '빠른 설정',
|
||||
resizable: '크기 조절 가능',
|
||||
resources: '관련 자료',
|
||||
scroll: '스크롤',
|
||||
setPrompt: '프롬프트 설정',
|
||||
setting: '설정',
|
||||
settingButtomReset: '재설정',
|
||||
settingButtomSubmit: '적용 및 인터페이스 재시작',
|
||||
settingCustomFont: '폰트 로드',
|
||||
settingCustomFontDesc:
|
||||
'이 기능을 사용하면 웹 폰트를 자동으로 로드하여 영문, 한글 및 코드 표시 효과를 최적화합니다',
|
||||
settingCustomLogo: '사용자 정의 로고',
|
||||
settingCustomLogoDesc: 'URL / Base64 / 이모지 표정을 지원합니다.',
|
||||
settingCustomTitle: '사용자 정의 제목',
|
||||
settingCustomTitleDesc: '사용자 정의 로고 제목',
|
||||
settingExtraNetworkSidebarDefaultCardSize: '모델 커버 크기',
|
||||
settingExtraNetworkSidebarDefaultCardSizeDesc: '시작시 모델 커버 크기 기본값',
|
||||
settingExtraNetworkSidebarDefaultExpand: '기본 확장',
|
||||
settingExtraNetworkSidebarDefaultExpandDesc: '시작시 사이드바 기본 확장 여부',
|
||||
settingExtraNetworkSidebarDefaultWidth: '기본 너비',
|
||||
settingExtraNetworkSidebarDefaultWidthDesc: '시작시 사이드바 기본 너비',
|
||||
settingExtraNetworkSidebarDisplayMode: '표시 모드',
|
||||
settingExtraNetworkSidebarDisplayModeDesc:
|
||||
'그리드 모드로 고정하여 항상 표시하거나, 부유 모드로 설정하여 사이드바에 마우스를 가져가면 자동으로 확장',
|
||||
settingExtraNetworkSidebarEnable: '사용',
|
||||
settingExtraNetworkSidebarEnableDesc: '오른쪽에 추가 네트워크 사이드바 활성화',
|
||||
settingGroupExtraNetworkSidebar: '추가 네트워크 사이드바',
|
||||
settingGroupLayout: '레이아웃 설정',
|
||||
settingGroupPromotTextarea: '프롬프트 텍스트 영역',
|
||||
settingGroupQuickSettingSidebar: '빠른 설정 사이드바',
|
||||
settingGroupTheme: '테마 설정',
|
||||
settingHideFooter: '푸터 숨기기',
|
||||
settingHideFooterDesc: '테마 푸터를 숨기고 stable diffusion webui의 기본 푸터만 표시',
|
||||
settingLanguage: '언어',
|
||||
settingLanguageDesc: 'Lobe Theme 테마 언어',
|
||||
settingLogoPreview: '미리보기',
|
||||
settingLogoType: '로고 유형',
|
||||
settingLogoTypeDesc: '로고 유형',
|
||||
settingNeutralColor: '중립색',
|
||||
settingNeutralColorDesc:
|
||||
'다른 색상 경향의 그레이 스케일 사용자 정의, 두 번째는 원래 Kitchen의 중립색',
|
||||
settingPrimaryColor: '기본 색상',
|
||||
settingPrimaryColorDesc: '사용자 정의 기본 색상, 두 번째는 원래 Kitchen의 기본 색상',
|
||||
settingPromptDisplayMode: '표시 모드',
|
||||
settingPromptDisplayModeDesc: '고정 높이 또는 자동 높이 및 드래그 조절 지원',
|
||||
settingPromptEditor: '프롬프트 편집기',
|
||||
settingPromptEditorDesc: '빠른 설정 사이드바 상단에 간단한 프롬프트 편집기 제공',
|
||||
settingPromptHighlight: 'Prompt 구문 강조',
|
||||
settingPromptHighlightDesc:
|
||||
'Stable Diffusion 구문 규칙에 따라 자동으로 prompt를 강조하여 표시합니다',
|
||||
settingQuickSettingSidebarDefaultExpand: '기본 확장',
|
||||
settingQuickSettingSidebarDefaultExpandDesc: '시작시 사이드바 기본 확장 여부',
|
||||
settingQuickSettingSidebarDefaultWidth: '기본 너비',
|
||||
settingQuickSettingSidebarDefaultWidthDesc: '시작시 사이드바 기본 너비',
|
||||
settingQuickSettingSidebarDisplayMode: '표시 모드',
|
||||
settingQuickSettingSidebarDisplayModeDesc:
|
||||
'그리드 모드로 고정하여 항상 표시하거나, 부유 모드로 설정하여 사이드바에 마우스를 가져가면 자동으로 확장',
|
||||
settingQuickSettingSidebarEnable: '사용',
|
||||
settingQuickSettingSidebarEnableDesc: '왼쪽에 빠른 설정 사이드바 활성화',
|
||||
settingReduceAnimation: '애니메이션 줄이기',
|
||||
settingReduceAnimationDesc:
|
||||
'유리 효과와 배경 흐름 색상을 줄여서 부드러움을 향상시키고 CPU 사용량을 줄일 수 있습니다.',
|
||||
settingSplitPreviewer: '이중 열 모드',
|
||||
settingSplitPreviewerDesc:
|
||||
'프롬프트 입력 상자를 왼쪽에 배치하고, 우측에 생성 버튼을 두어 스크롤 시 생성된 이미지가 항상 위에 표시되도록 합니다 (실험적)',
|
||||
settingSvgIcons: 'SVG 아이콘 사용',
|
||||
settingSvgIconsDesc:
|
||||
'stable diffusion webui의 이모지 아이콘을 전역적으로 SVG 아이콘으로 교체합니다.',
|
||||
switchTheme: '밝기 테마 전환',
|
||||
sync: '웹 UI 설정과 동기화',
|
||||
themeFeedback: '테마 피드백',
|
||||
themeSetting: '테마 설정',
|
||||
};
|
||||
|
||||
export default translation;
|
||||
|
|
@ -1,86 +0,0 @@
|
|||
import type { Translation } from '@/types';
|
||||
|
||||
const translation: Translation = {
|
||||
community: '社区',
|
||||
custom: '自定义',
|
||||
extraNetwork: '附加网络',
|
||||
feedback: '反馈',
|
||||
fixed: '固定',
|
||||
float: '悬浮',
|
||||
help: '帮助',
|
||||
kitchen: 'Kitchen',
|
||||
loadPrompt: '加载提示',
|
||||
lobe: 'Lobe',
|
||||
moreProducts: '更多产品',
|
||||
negative: '反向提示词',
|
||||
positive: '正面提示词',
|
||||
quickSetting: '快捷设置',
|
||||
resizable: '缩放',
|
||||
resources: '相关资源',
|
||||
scroll: '滚动',
|
||||
setPrompt: '发送提示词',
|
||||
setting: '设置',
|
||||
settingButtomReset: '重置',
|
||||
settingButtomSubmit: '应用并重启界面',
|
||||
settingCustomFont: '加载字体美化',
|
||||
settingCustomFontDesc: '开启后会自动加载 Webfont 美化字体,优化中英文和代码显示效果',
|
||||
settingCustomLogo: '自定义 Logo',
|
||||
settingCustomLogoDesc: '支持 URL / Base64 / Emoji 表情符号',
|
||||
settingCustomTitle: '自定义标题',
|
||||
settingCustomTitleDesc: '自定义 Logo 标题名称',
|
||||
settingExtraNetworkSidebarDefaultCardSize: '模型封面尺寸',
|
||||
settingExtraNetworkSidebarDefaultCardSizeDesc: '启动时模型封面尺寸默认值',
|
||||
settingExtraNetworkSidebarDefaultExpand: '默认展开',
|
||||
settingExtraNetworkSidebarDefaultExpandDesc: '是否在启动时将侧边栏默认展开',
|
||||
settingExtraNetworkSidebarDefaultWidth: '默认宽度',
|
||||
settingExtraNetworkSidebarDefaultWidthDesc: '侧边栏在启动时的默认宽度',
|
||||
settingExtraNetworkSidebarDisplayMode: '显示模式',
|
||||
settingExtraNetworkSidebarDisplayModeDesc:
|
||||
'固定为栅格模式常驻显示,悬浮模式时当鼠标移到侧边时自动展开',
|
||||
settingExtraNetworkSidebarEnable: '启用',
|
||||
settingExtraNetworkSidebarEnableDesc: '启用位于右侧的附加网络侧边栏',
|
||||
settingGroupExtraNetworkSidebar: '附加网络侧边栏',
|
||||
settingGroupLayout: '布局设置',
|
||||
settingGroupPromotTextarea: '提示词文本框',
|
||||
settingGroupQuickSettingSidebar: '快捷设置侧边栏',
|
||||
settingGroupTheme: '主题设置',
|
||||
settingHideFooter: '隐藏页脚',
|
||||
settingHideFooterDesc: '隐藏主题页脚,只显示 stable diffusion webui 默认页脚',
|
||||
settingLanguage: '语言',
|
||||
settingLanguageDesc: 'Lobe Theme 主题语言',
|
||||
settingLogoPreview: '预览',
|
||||
settingLogoType: 'Logo 类型',
|
||||
settingLogoTypeDesc: 'Logo 类型',
|
||||
settingNeutralColor: '中性色',
|
||||
settingNeutralColorDesc: '不同色彩倾向的灰阶自定义,第二个为原始 Kitchen 中性色',
|
||||
settingPrimaryColor: '主题色',
|
||||
settingPrimaryColorDesc: '自定义主题色,第二个为原始 Kitchen 主题色',
|
||||
settingPromptDisplayMode: '显示模式',
|
||||
settingPromptDisplayModeDesc: '固定高度或自动高度并支持拖拽拉伸',
|
||||
settingPromptEditor: '提示词编辑器',
|
||||
settingPromptEditorDesc: '提供简易的提示词编辑器位于快捷设置侧边栏顶部',
|
||||
settingPromptHighlight: 'Prompt 语法高亮',
|
||||
settingPromptHighlightDesc: '按 Stable Diffusion 语法规则,自动染色 prompt 显示',
|
||||
settingQuickSettingSidebarDefaultExpand: '默认展开',
|
||||
settingQuickSettingSidebarDefaultExpandDesc: '是否在启动时将侧边栏默认展开',
|
||||
settingQuickSettingSidebarDefaultWidth: '默认宽度',
|
||||
settingQuickSettingSidebarDefaultWidthDesc: '侧边栏在启动时的默认宽度',
|
||||
settingQuickSettingSidebarDisplayMode: '显示模式',
|
||||
settingQuickSettingSidebarDisplayModeDesc:
|
||||
'固定为栅格模式常驻显示,悬浮模式时当鼠标移到侧边时自动展开',
|
||||
settingQuickSettingSidebarEnable: '启用',
|
||||
settingQuickSettingSidebarEnableDesc: '启用位于左侧的快捷设置侧边栏',
|
||||
settingReduceAnimation: '减少动画效果',
|
||||
settingReduceAnimationDesc: '减少毛玻璃效果和背景流动色,可以提升流畅度并节省 CPU 使用',
|
||||
settingSplitPreviewer: '双列模式',
|
||||
settingSplitPreviewerDesc:
|
||||
'将提示词输入框放在左侧,生成按钮于右侧,确保在滚动时生成的图像始终显示在顶部 (实验性)',
|
||||
settingSvgIcons: '使用 SVG 图标',
|
||||
settingSvgIconsDesc: '将 stable diffusion webui 中的 Emoji 图标全局替换为 SVG 图标',
|
||||
switchTheme: '切换亮暗色主题',
|
||||
sync: '与 WebUI 设置同步',
|
||||
themeFeedback: '主题反馈',
|
||||
themeSetting: '主题设置',
|
||||
};
|
||||
|
||||
export default translation;
|
||||
|
|
@ -1,86 +0,0 @@
|
|||
import type { Translation } from '@/types';
|
||||
|
||||
const translation: Translation = {
|
||||
community: '社區',
|
||||
custom: '自訂',
|
||||
extraNetwork: '附加網絡',
|
||||
feedback: '反饋',
|
||||
fixed: '固定',
|
||||
float: '懸浮',
|
||||
help: '幫助',
|
||||
kitchen: 'Kitchen',
|
||||
loadPrompt: '加載提示',
|
||||
lobe: 'Lobe',
|
||||
moreProducts: '更多產品',
|
||||
negative: '反向提示詞',
|
||||
positive: '正面提示詞',
|
||||
quickSetting: '快捷設置',
|
||||
resizable: '縮放',
|
||||
resources: '相關資源',
|
||||
scroll: '滾動',
|
||||
setPrompt: '發送提示詞',
|
||||
setting: '設置',
|
||||
settingButtomReset: '重置',
|
||||
settingButtomSubmit: '應用並重啟界面',
|
||||
settingCustomFont: '載入字型美化',
|
||||
settingCustomFontDesc: '開啟後會自動載入 Webfont 美化字型,優化中英文和程式碼顯示效果',
|
||||
settingCustomLogo: '自定義 Logo',
|
||||
settingCustomLogoDesc: '支持 URL / Base64 / Emoji 表情符號',
|
||||
settingCustomTitle: '自定義標題',
|
||||
settingCustomTitleDesc: '自定義 Logo 標題名稱',
|
||||
settingExtraNetworkSidebarDefaultCardSize: '模型封面尺寸',
|
||||
settingExtraNetworkSidebarDefaultCardSizeDesc: '啟動時模型封面尺寸默認值',
|
||||
settingExtraNetworkSidebarDefaultExpand: '默認展開',
|
||||
settingExtraNetworkSidebarDefaultExpandDesc: '是否在啟動時將側邊欄默認展開',
|
||||
settingExtraNetworkSidebarDefaultWidth: '默認寬度',
|
||||
settingExtraNetworkSidebarDefaultWidthDesc: '側邊欄在啟動時的默認寬度',
|
||||
settingExtraNetworkSidebarDisplayMode: '顯示模式',
|
||||
settingExtraNetworkSidebarDisplayModeDesc:
|
||||
'固定為格模式常駐顯示,懸浮模式時當鼠標移到側邊時自動展開',
|
||||
settingExtraNetworkSidebarEnable: '啟用',
|
||||
settingExtraNetworkSidebarEnableDesc: '啟用位於右側的附加網絡側邊欄',
|
||||
settingGroupExtraNetworkSidebar: '附加網絡側邊欄',
|
||||
settingGroupLayout: '佈局設置',
|
||||
settingGroupPromotTextarea: '提示詞文本框',
|
||||
settingGroupQuickSettingSidebar: '快捷設置側邊欄',
|
||||
settingGroupTheme: '主題設置',
|
||||
settingHideFooter: '隱藏頁腳',
|
||||
settingHideFooterDesc: '隱藏主題頁腳,只顯示 stable diffusion webui 默認頁腳',
|
||||
settingLanguage: '語言',
|
||||
settingLanguageDesc: 'Lobe Theme 主題語言',
|
||||
settingLogoPreview: '預覽',
|
||||
settingLogoType: 'Logo 類型',
|
||||
settingLogoTypeDesc: 'Logo 類型',
|
||||
settingNeutralColor: '中性色',
|
||||
settingNeutralColorDesc: '不同色彩傾向的灰階自定義,第二個為原始 Kitchen 中性色',
|
||||
settingPrimaryColor: '主題色',
|
||||
settingPrimaryColorDesc: '自定義主題色,第二個為原始 Kitchen 主題色',
|
||||
settingPromptDisplayMode: '顯示模式',
|
||||
settingPromptDisplayModeDesc: '固定高度或自動高度並支持拖拽拉伸',
|
||||
settingPromptEditor: '提示詞編輯器',
|
||||
settingPromptEditorDesc: '提供簡易的提示詞編輯器位於快捷設置側邊欄頂部',
|
||||
settingPromptHighlight: 'Prompt 語法高亮',
|
||||
settingPromptHighlightDesc: '按照 Stable Diffusion 語法規則,自動著色 prompt 顯示',
|
||||
settingQuickSettingSidebarDefaultExpand: '默認展開',
|
||||
settingQuickSettingSidebarDefaultExpandDesc: '是否在啟動時將側邊欄默認展開',
|
||||
settingQuickSettingSidebarDefaultWidth: '默認寬度',
|
||||
settingQuickSettingSidebarDefaultWidthDesc: '側邊欄在啟動時的默認寬度',
|
||||
settingQuickSettingSidebarDisplayMode: '顯示模式',
|
||||
settingQuickSettingSidebarDisplayModeDesc:
|
||||
'固定為格模式常駐顯示,懸浮模式時當鼠標移到側邊時自動展開',
|
||||
settingQuickSettingSidebarEnable: '啟用',
|
||||
settingQuickSettingSidebarEnableDesc: '啟用位於左側的快捷設置側邊欄',
|
||||
settingReduceAnimation: '減少動畫效果',
|
||||
settingReduceAnimationDesc: '減少毛玻璃效果和背景流動色,可以提升流暢度並節省 CPU 使用',
|
||||
settingSplitPreviewer: '雙列模式',
|
||||
settingSplitPreviewerDesc:
|
||||
'將提示詞輸入框放在左側,生成按鈕於右側,確保在滾動時生成的圖像始終顯示在頂部 (實驗性)',
|
||||
settingSvgIcons: '使用 SVG 圖標',
|
||||
settingSvgIconsDesc: '將 stable diffusion webui 中的 Emoji 圖標全局替換為 SVG 圖標',
|
||||
switchTheme: '切換亮暗色主題',
|
||||
sync: '與 WebUI 設置同步',
|
||||
themeFeedback: '主題反饋',
|
||||
themeSetting: '主題設置',
|
||||
};
|
||||
|
||||
export default translation;
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
import { ActionIcon } from '@lobehub/ui';
|
||||
import { Space } from 'antd';
|
||||
import { useResponsive } from 'antd-style';
|
||||
import { Github, LucideIcon, Moon, Settings, Sun } from 'lucide-react';
|
||||
import { Github, Moon, Settings, Sun, createLucideIcon } from 'lucide-react';
|
||||
import qs from 'query-string';
|
||||
import { memo, useCallback, useState } from 'react';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
|
|
@ -10,11 +10,15 @@ import { shallow } from 'zustand/shallow';
|
|||
import { Giscus, Setting } from '@/components';
|
||||
import { useAppStore } from '@/store';
|
||||
|
||||
const CivitaiLogo: LucideIcon = ({ size }) => (
|
||||
<svg fill="currentColor" height={size} viewBox="0 0 16 16" width={size}>
|
||||
<path d="M2 4.5L8 1l6 3.5v7L8 15l-6-3.5v-7zm6-1.194L3.976 5.653v4.694L8 12.694l4.024-2.347V5.653L8 3.306zm0 1.589l2.662 1.552v.824H9.25L8 6.54l-1.25.73v1.458L8 9.46l1.25-.73h1.412v.824L8 11.105 5.338 9.553V6.447L8 4.895z" />
|
||||
</svg>
|
||||
);
|
||||
const CivitaiLogo = createLucideIcon('CivitaiLogo', [
|
||||
[
|
||||
'path',
|
||||
{
|
||||
d: 'M2 4.5L8 1l6 3.5v7L8 15l-6-3.5v-7zm6-1.194L3.976 5.653v4.694L8 12.694l4.024-2.347V5.653L8 3.306zm0 1.589l2.662 1.552v.824H9.25L8 6.54l-1.25.73v1.458L8 9.46l1.25-.73h1.412v.824L8 11.105 5.338 9.553V6.447L8 4.895z',
|
||||
key: '18tl5t',
|
||||
},
|
||||
],
|
||||
]);
|
||||
|
||||
interface ActionsProps {
|
||||
themeMode: 'dark' | 'light';
|
||||
|
|
|
|||
|
|
@ -1,4 +1,6 @@
|
|||
import { I18n } from '@/i18n';
|
||||
import { SelectProps } from 'antd';
|
||||
|
||||
import { I18n } from '@/types';
|
||||
|
||||
export const SETTING_KEY = 'SD-LOBE-SETTING';
|
||||
export const FALLBACK_SETTING_KEY = 'SD-KITCHEN-SETTING';
|
||||
|
|
@ -50,8 +52,10 @@ export interface AppState {
|
|||
currentTab: string;
|
||||
latestVersion: string;
|
||||
loading: boolean;
|
||||
localeOptions: SelectProps['options'];
|
||||
onInit: () => void;
|
||||
onLoadLatestVersion: () => void;
|
||||
onLoadLocalOptions: () => void;
|
||||
onLoadSetting: () => void;
|
||||
onLoadVersion: () => void;
|
||||
onSetSetting: (setting: WebuiSetting) => void;
|
||||
|
|
|
|||
|
|
@ -1,8 +1,12 @@
|
|||
import { SelectProps } from 'antd';
|
||||
import semver from 'semver';
|
||||
|
||||
import defualtLocaleOptions from '@/../locales/options.json';
|
||||
import { homepage, version } from '@/../package.json';
|
||||
import { WebuiSetting } from '@/store/AppState';
|
||||
|
||||
export const DEFAULT_VERSION: string = version;
|
||||
export const DEFAULT_LOCALE_OPTIONS: SelectProps['options'] = defualtLocaleOptions;
|
||||
export const getSetting = async(): Promise<WebuiSetting | undefined> => {
|
||||
const res = await fetch('/lobe/config');
|
||||
const data = (await res.json()) as WebuiSetting;
|
||||
|
|
@ -23,15 +27,22 @@ export const postSetting = async(setting: WebuiSetting) => {
|
|||
export const getVersion = async(): Promise<string> => {
|
||||
const res = await fetch('/lobe/package');
|
||||
const data = (await res.json()) as any;
|
||||
if (!data || data.empty || !data.version) return version;
|
||||
if (!data || data.empty || !data.version) return DEFAULT_VERSION;
|
||||
return data.version;
|
||||
};
|
||||
|
||||
export const getLocaleOptions = async(): Promise<SelectProps['options']> => {
|
||||
const res = await fetch('/lobe/locales/options');
|
||||
const data = (await res.json()) as SelectProps['options'];
|
||||
if (!data || data?.length === 0) return DEFAULT_LOCALE_OPTIONS;
|
||||
return data;
|
||||
};
|
||||
|
||||
export const getLatestVersion = async(): Promise<string> => {
|
||||
const res = await fetch(
|
||||
`https://api.github.com/repos/${homepage.replace('https://github.com/', '')}/releases/latest`,
|
||||
);
|
||||
const data = (await res.json()) as any;
|
||||
if (!data || !data.tag_name) return version;
|
||||
return semver.clean(data.tag_name as string) || version;
|
||||
if (!data || !data.tag_name) return DEFAULT_VERSION;
|
||||
return semver.clean(data.tag_name as string) || DEFAULT_VERSION;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,10 +1,16 @@
|
|||
import { create } from 'zustand';
|
||||
import { devtools } from 'zustand/middleware';
|
||||
|
||||
import { version } from '@/../package.json';
|
||||
|
||||
import { AppState, FALLBACK_SETTING_KEY, SETTING_KEY, WebuiSetting } from './AppState';
|
||||
import { getLatestVersion, getSetting, getVersion, postSetting } from './api';
|
||||
import {
|
||||
DEFAULT_LOCALE_OPTIONS,
|
||||
DEFAULT_VERSION,
|
||||
getLatestVersion,
|
||||
getLocaleOptions,
|
||||
getSetting,
|
||||
getVersion,
|
||||
postSetting,
|
||||
} from './api';
|
||||
|
||||
export * from './AppState';
|
||||
|
||||
|
|
@ -37,11 +43,13 @@ export const defaultSetting: WebuiSetting = {
|
|||
export const useAppStore = create<AppState>()(
|
||||
devtools((set, get) => ({
|
||||
currentTab: 'tab_txt2img',
|
||||
latestVersion: version,
|
||||
latestVersion: DEFAULT_VERSION,
|
||||
loading: true,
|
||||
localeOptions: DEFAULT_LOCALE_OPTIONS,
|
||||
onInit: async() => {
|
||||
set(() => ({ loading: true }), false, 'onInit');
|
||||
const { onLoadSetting, onLoadVersion, onLoadLatestVersion } = get();
|
||||
const { onLoadSetting, onLoadVersion, onLoadLatestVersion, onLoadLocalOptions } = get();
|
||||
await onLoadLocalOptions();
|
||||
await onLoadVersion();
|
||||
await onLoadLatestVersion();
|
||||
await onLoadSetting();
|
||||
|
|
@ -51,6 +59,10 @@ export const useAppStore = create<AppState>()(
|
|||
const latestVersion = await getLatestVersion();
|
||||
set(() => ({ latestVersion }), false, 'onLoadLatestVersion');
|
||||
},
|
||||
onLoadLocalOptions: async() => {
|
||||
const localeOptions = await getLocaleOptions();
|
||||
set(() => ({ localeOptions }), false, 'onLoadLocalOptions');
|
||||
},
|
||||
onLoadSetting: async() => {
|
||||
console.time('🤯 [setting] loaded');
|
||||
let themeSetting;
|
||||
|
|
@ -110,6 +122,6 @@ export const useAppStore = create<AppState>()(
|
|||
},
|
||||
setting: defaultSetting,
|
||||
themeMode: 'dark',
|
||||
version: version,
|
||||
version: DEFAULT_VERSION,
|
||||
})),
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1,6 +1,9 @@
|
|||
import { type HTMLAttributes } from 'react';
|
||||
|
||||
import translation from '@/i18n/lang/en_US';
|
||||
import translation from '@/../locales/en_US.json';
|
||||
import i18nOptions from '@/../locales/options.json';
|
||||
|
||||
export type I18n = (typeof i18nOptions)[number]['value'];
|
||||
|
||||
export const resources = {
|
||||
translation,
|
||||
|
|
|
|||
Loading…
Reference in New Issue