From bf01f4ba8ce97d8e34575d0b68832c61ddf18a91 Mon Sep 17 00:00:00 2001 From: Mahiru Date: Sun, 26 Oct 2025 22:06:57 +0800 Subject: [PATCH 1/5] feat: add template config and font config --- packages/origine2/src/api/Api.ts | 11 + packages/origine2/src/locales/en.po | 89 ++++- packages/origine2/src/locales/ja.po | 89 ++++- packages/origine2/src/locales/zhCn.po | 89 ++++- .../TemplateConfigDialog.module.scss | 51 +++ .../TemplateConfigDialog.tsx | 304 ++++++++++++++++++ .../TemplateEditorSidebar.tsx | 37 ++- .../manage-template/manage-template.dto.ts | 21 ++ 8 files changed, 650 insertions(+), 41 deletions(-) create mode 100644 packages/origine2/src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.module.scss create mode 100644 packages/origine2/src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx diff --git a/packages/origine2/src/api/Api.ts b/packages/origine2/src/api/Api.ts index 3138d4e5..95de704b 100644 --- a/packages/origine2/src/api/Api.ts +++ b/packages/origine2/src/api/Api.ts @@ -55,6 +55,15 @@ export interface EditTextFileDto { textFile: string; } +export interface TemplateFontConfigDto { + /** The font-family name */ + "font-family": string; + /** The url of the font file */ + url: string; + /** The font format type */ + type: string; +} + export interface TemplateConfigDto { /** The name of the template */ name: string; @@ -62,6 +71,8 @@ export interface TemplateConfigDto { id: string; /** The webgal version of the template */ "webgal-version": string; + /** The font registrations of the template */ + fonts?: TemplateFontConfigDto[]; } export interface GameInfoDto { diff --git a/packages/origine2/src/locales/en.po b/packages/origine2/src/locales/en.po index 01822e14..398cc607 100644 --- a/packages/origine2/src/locales/en.po +++ b/packages/origine2/src/locales/en.po @@ -17,7 +17,7 @@ msgstr "" msgid ";注释" msgstr "Comment" -#: src/pages/editor/GraphicalEditor/components/EffectEditor.tsx:436 +#: src/pages/editor/GraphicalEditor/components/EffectEditor.tsx:437 msgid "*设置拾色器后,点击此按钮以保存更改" msgstr "*Click this button to save changes after setting color picker" @@ -86,6 +86,10 @@ msgstr "CSS Property Name" msgid "end;" msgstr "end;" +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:215 +msgid "font-family" +msgstr "" + #: src/pages/editor/GraphicalEditor/SentenceEditor/index.tsx:245 msgid "getUserInput:;" msgstr "getUserInput:;" @@ -213,6 +217,10 @@ msgstr "Previous" msgid "上传" msgstr "Upload" +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:262 +msgid "上传字体文件" +msgstr "" + #: src/components/Assets/Assets.tsx:445 #: src/components/Assets/Assets.tsx:451 msgid "上传资源" @@ -309,7 +317,7 @@ msgstr "Gamma" #~ msgid "你已启用实验性快速预览,该功能将大幅提升实时预览效率,但可能出现异常。特别提示:不要在上一次实时预览跳转还没有完全结束时(尤其是有动画没有结束时)再次跳转。" #~ msgstr "You have enabled the experimental fast preview, which will greatly improve the efficiency of real-time preview, but there may be exceptions. Special tips: Do not jump again when the last real-time preview jump is not completely finished (especially when the animation is not finished)." -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:159 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:184 msgid "使用中的模板:" msgstr "Template in use: " @@ -360,9 +368,18 @@ msgid "侧边栏游戏预览" msgstr "Sidebar Game Preview" #: src/components/IconCreator/IconCreator.tsx:798 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:287 msgid "保存" msgstr "Save" +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:287 +msgid "保存中..." +msgstr "" + +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:179 +msgid "保存模板配置失败,请稍后重试" +msgstr "" + #: src/pages/editor/GraphicalEditor/SentenceEditor/ChangeFigure.tsx:505 msgid "保持闭眼(毫秒)" msgstr "Closed duration (ms)" @@ -440,7 +457,7 @@ msgstr "About" msgid "关联立绘" msgstr "Associated figure" -#: src/pages/editor/GraphicalEditor/components/EffectEditor.tsx:372 +#: src/pages/editor/GraphicalEditor/components/EffectEditor.tsx:373 #: src/pages/editor/GraphicalEditor/components/SearchableCascader.tsx:228 #: src/pages/editor/GraphicalEditor/SentenceEditor/ChangeFigure.tsx:149 #: src/pages/editor/GraphicalEditor/SentenceEditor/SetAnimation.tsx:96 @@ -562,6 +579,7 @@ msgstr "Create new game" #: src/pages/dashboard/TemplateElement.tsx:133 #: src/pages/editor/GraphicalEditor/SentenceEditor/Intro.tsx:206 #: src/pages/editor/GraphicalEditor/SentenceEditor/Say.tsx:181 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:269 #: src/pages/templateEditor/TemplateGraphicalEditor/WebgalClassEditor/index.tsx:103 msgid "删除" msgstr "Delete" @@ -645,7 +663,8 @@ msgstr "New version detected" #: src/components/ColorPickerPopup/ColorPickerPopup.tsx:115 #: src/components/IconCreator/IconCreator.tsx:775 #: src/pages/editor/ChooseFile/ChooseFile.tsx:67 -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:171 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:284 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:196 msgid "取消" msgstr "Cancel" @@ -813,6 +832,22 @@ msgstr "Font optimization will disable the outline of dialogue text when the gam msgid "字体大小" msgstr "Font size" +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:224 +msgid "字体文件 URL" +msgstr "" + +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:124 +msgid "字体文件上传失败,请重试" +msgstr "" + +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:231 +msgid "字体类型" +msgstr "" + +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:199 +msgid "字体配置" +msgstr "" + #: src/pages/templateEditor/TemplateGraphicalEditor/WebgalClassEditor/editorTable.ts:43 msgid "字母间距" msgstr "Letter spacing" @@ -896,8 +931,8 @@ msgstr "Export Failed!" msgid "导出成功!" msgstr "Export Success!" -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:123 -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:131 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:140 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:156 msgid "将当前模板应用到选定的游戏" msgstr "Apply the current template to selected games" @@ -917,6 +952,10 @@ msgstr "Mini avatar container" msgid "小头像文件" msgstr "Avatar file" +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:209 +msgid "尚未配置任何字体" +msgstr "" + #: src/pages/templateEditor/TemplateGraphicalEditor/WebgalClassEditor/editorTable.ts:57 msgid "层级顺序" msgstr "Z Index" @@ -981,7 +1020,7 @@ msgstr "Regular performance" msgid "平铺" msgstr "Tiling" -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:173 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:198 msgid "应用" msgstr "Apply" @@ -989,7 +1028,7 @@ msgstr "Apply" msgid "应用的模板" msgstr "Applied template" -#: src/pages/editor/GraphicalEditor/components/EffectEditor.tsx:438 +#: src/pages/editor/GraphicalEditor/components/EffectEditor.tsx:439 #: src/pages/editor/GraphicalEditor/SentenceEditor/Intro.tsx:311 msgid "应用颜色变化" msgstr "Apply color changes" @@ -998,7 +1037,7 @@ msgstr "Apply color changes" msgid "延迟时间(秒)" msgstr "Delay time (seconds)" -#: src/pages/editor/GraphicalEditor/components/EffectEditor.tsx:371 +#: src/pages/editor/GraphicalEditor/components/EffectEditor.tsx:372 #: src/pages/editor/GraphicalEditor/SentenceEditor/ChangeFigure.tsx:148 #: src/pages/editor/GraphicalEditor/SentenceEditor/SetAnimation.tsx:96 #: src/pages/editor/GraphicalEditor/SentenceEditor/SetTransform.tsx:145 @@ -1132,7 +1171,7 @@ msgstr "Tip: The effect will only take place when switching to a different chara msgid "提示:效果只有在切换到不同背景或关闭之前的背景再重新添加时生效。如果你要为现有的背景设置效果,请使用单独的设置效果命令" msgstr "Tip: The effect will only take place when switching to a different background or removing the current background and adding it again. If you want to set an effect for an existing background, please use a separate command for setting effects." -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:76 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:80 msgid "提示:样式中用到的资源放在 assets 目录下" msgstr "Tips: Resources used in styles are placed in the assets directory" @@ -1274,6 +1313,10 @@ msgstr "Text Shadow" msgid "文档" msgstr "Document" +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:205 +msgid "新增字体" +msgstr "" + #: src/components/Assets/Assets.tsx:337 #: src/components/Assets/Assets.tsx:352 msgid "新建文件" @@ -1484,9 +1527,14 @@ msgstr "Template list" #: src/pages/dashboard/TemplateSidebar.tsx:58 #: src/pages/dashboard/TemplateSidebar.tsx:67 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:195 msgid "模板名称" msgstr "Template name" +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:140 +msgid "模板名称不能为空" +msgstr "" + #: src/pages/dashboard/TemplateSidebar.tsx:69 #: src/pages/dashboard/TemplateSidebar.tsx:75 msgid "模板目录" @@ -1505,6 +1553,14 @@ msgstr "Blur" msgid "櫻花" msgstr "Cherry blossoms" +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:262 +msgid "正在上传" +msgstr "" + +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:192 +msgid "正在加载模板配置" +msgstr "" + #: src/pages/templateEditor/TemplateGraphicalEditor/WebgalClassEditor/propertyEditor/WGFontWeight.tsx:15 msgid "正常" msgstr "Normal" @@ -2155,6 +2211,10 @@ msgstr "Language" msgid "语音" msgstr "Voice" +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:157 +msgid "请完整填写每个字体的信息" +msgstr "" + #: src/pages/editor/GraphicalEditor/components/SearchableCascader.tsx:211 msgid "请输入搜索提示词..." msgstr "Please enter a search hint..." @@ -2389,7 +2449,7 @@ msgstr "Selection Button (disabled)" msgid "选项按钮外层" msgstr "Selection Button Wrapper" -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:112 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:122 msgid "选项菜单" msgstr "Option Menu" @@ -2406,6 +2466,11 @@ msgstr "Enter different scenes through options" msgid "配置" msgstr "Configuration" +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:189 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:131 +msgid "配置模板" +msgstr "" + #: src/components/Assets/FileElement.tsx:142 #: src/components/Assets/FileElement.tsx:161 #: src/components/Assets/FileElement.tsx:185 @@ -2545,7 +2610,7 @@ msgid "高斯模糊" msgstr "Gaussian Blur" #: src/hooks/useEaseTypeOptions.ts:6 -#: src/pages/editor/GraphicalEditor/components/EffectEditor.tsx:370 +#: src/pages/editor/GraphicalEditor/components/EffectEditor.tsx:371 #: src/pages/editor/GraphicalEditor/SentenceEditor/ChangeFigure.tsx:147 #: src/pages/editor/GraphicalEditor/SentenceEditor/Say.tsx:58 msgid "默认" diff --git a/packages/origine2/src/locales/ja.po b/packages/origine2/src/locales/ja.po index c0d3bfc0..11ae2999 100644 --- a/packages/origine2/src/locales/ja.po +++ b/packages/origine2/src/locales/ja.po @@ -17,7 +17,7 @@ msgstr "" msgid ";注释" msgstr ";コメント" -#: src/pages/editor/GraphicalEditor/components/EffectEditor.tsx:436 +#: src/pages/editor/GraphicalEditor/components/EffectEditor.tsx:437 msgid "*设置拾色器后,点击此按钮以保存更改" msgstr "*カラーピッカー設定後、このボタンで保存" @@ -86,6 +86,10 @@ msgstr "CSS プロパティ名:" msgid "end;" msgstr "end;" +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:215 +msgid "font-family" +msgstr "" + #: src/pages/editor/GraphicalEditor/SentenceEditor/index.tsx:245 msgid "getUserInput:;" msgstr "getUserInput:;" @@ -216,6 +220,10 @@ msgstr "先の" msgid "上传" msgstr "アップロード" +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:262 +msgid "上传字体文件" +msgstr "" + #: src/components/Assets/Assets.tsx:445 #: src/components/Assets/Assets.tsx:451 msgid "上传资源" @@ -312,7 +320,7 @@ msgstr "ガンマ" #~ msgid "你已启用实验性快速预览,该功能将大幅提升实时预览效率,但可能出现异常。特别提示:不要在上一次实时预览跳转还没有完全结束时(尤其是有动画没有结束时)再次跳转。" #~ msgstr "実験的な高速プレビューを有効にすると、リアルタイムプレビューの効率が大幅に向上しますが、異常が発生する可能性があります。特別なヒント:前回のリアルタイムプレビューのジャンプが完全に終了していない(特にアニメーションが終了していない)ときに、再度ジャンプしないでください。" -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:159 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:184 msgid "使用中的模板:" msgstr "使用中のテンプレート:" @@ -363,9 +371,18 @@ msgid "侧边栏游戏预览" msgstr "サイドバーゲームプレビュー" #: src/components/IconCreator/IconCreator.tsx:798 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:287 msgid "保存" msgstr "セーブ" +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:287 +msgid "保存中..." +msgstr "" + +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:179 +msgid "保存模板配置失败,请稍后重试" +msgstr "" + #: src/pages/editor/GraphicalEditor/SentenceEditor/ChangeFigure.tsx:505 msgid "保持闭眼(毫秒)" msgstr "目を閉じたままにする時間(ミリ秒)" @@ -443,7 +460,7 @@ msgstr "About" msgid "关联立绘" msgstr "関連する立ち絵" -#: src/pages/editor/GraphicalEditor/components/EffectEditor.tsx:372 +#: src/pages/editor/GraphicalEditor/components/EffectEditor.tsx:373 #: src/pages/editor/GraphicalEditor/components/SearchableCascader.tsx:228 #: src/pages/editor/GraphicalEditor/SentenceEditor/ChangeFigure.tsx:149 #: src/pages/editor/GraphicalEditor/SentenceEditor/SetAnimation.tsx:96 @@ -565,6 +582,7 @@ msgstr "新しいゲームを作成" #: src/pages/dashboard/TemplateElement.tsx:133 #: src/pages/editor/GraphicalEditor/SentenceEditor/Intro.tsx:206 #: src/pages/editor/GraphicalEditor/SentenceEditor/Say.tsx:181 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:269 #: src/pages/templateEditor/TemplateGraphicalEditor/WebgalClassEditor/index.tsx:103 msgid "删除" msgstr "削除" @@ -648,7 +666,8 @@ msgstr "新しいバージョンが検出されました" #: src/components/ColorPickerPopup/ColorPickerPopup.tsx:115 #: src/components/IconCreator/IconCreator.tsx:775 #: src/pages/editor/ChooseFile/ChooseFile.tsx:67 -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:171 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:284 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:196 msgid "取消" msgstr "キャンセル" @@ -816,6 +835,22 @@ msgstr "フォント最適化は、ゲームプレビューウィンドウが特 msgid "字体大小" msgstr "フォントサイズ" +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:224 +msgid "字体文件 URL" +msgstr "" + +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:124 +msgid "字体文件上传失败,请重试" +msgstr "" + +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:231 +msgid "字体类型" +msgstr "" + +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:199 +msgid "字体配置" +msgstr "" + #: src/pages/templateEditor/TemplateGraphicalEditor/WebgalClassEditor/editorTable.ts:43 msgid "字母间距" msgstr "文字間隔" @@ -899,8 +934,8 @@ msgstr "失敗を導き出します!" msgid "导出成功!" msgstr "導出成功です!" -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:123 -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:131 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:140 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:156 msgid "将当前模板应用到选定的游戏" msgstr "選択したゲームに現在のテンプレートを適用する" @@ -920,6 +955,10 @@ msgstr "アバターコンテナ" msgid "小头像文件" msgstr "アバターファイル" +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:209 +msgid "尚未配置任何字体" +msgstr "" + #: src/pages/templateEditor/TemplateGraphicalEditor/WebgalClassEditor/editorTable.ts:57 msgid "层级顺序" msgstr "階層順序" @@ -984,7 +1023,7 @@ msgstr "通常演出" msgid "平铺" msgstr "タイリング" -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:173 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:198 msgid "应用" msgstr "適用" @@ -992,7 +1031,7 @@ msgstr "適用" msgid "应用的模板" msgstr "すでに適用されているテンプレート" -#: src/pages/editor/GraphicalEditor/components/EffectEditor.tsx:438 +#: src/pages/editor/GraphicalEditor/components/EffectEditor.tsx:439 #: src/pages/editor/GraphicalEditor/SentenceEditor/Intro.tsx:311 msgid "应用颜色变化" msgstr "色の変更を適用" @@ -1001,7 +1040,7 @@ msgstr "色の変更を適用" msgid "延迟时间(秒)" msgstr "遅延時間(秒)" -#: src/pages/editor/GraphicalEditor/components/EffectEditor.tsx:371 +#: src/pages/editor/GraphicalEditor/components/EffectEditor.tsx:372 #: src/pages/editor/GraphicalEditor/SentenceEditor/ChangeFigure.tsx:148 #: src/pages/editor/GraphicalEditor/SentenceEditor/SetAnimation.tsx:96 #: src/pages/editor/GraphicalEditor/SentenceEditor/SetTransform.tsx:145 @@ -1135,7 +1174,7 @@ msgstr "ヒント:この効果は、異なる立ち絵に切り替えるか、 msgid "提示:效果只有在切换到不同背景或关闭之前的背景再重新添加时生效。如果你要为现有的背景设置效果,请使用单独的设置效果命令" msgstr "ヒント:エフェクトは、異なる背景に切り替えるか、一度背景を削除してから再度追加した場合にのみ有効になります。既存の背景にエフェクトを設定する場合は、専用の「エフェクト設定」コマンドを使用してください。" -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:76 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:80 msgid "提示:样式中用到的资源放在 assets 目录下" msgstr "ヒント:スタイルで使用されるリソースは assets ディレクトリにあります" @@ -1273,6 +1312,10 @@ msgstr "テキストシャドウ" msgid "文档" msgstr "ドキュメント" +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:205 +msgid "新增字体" +msgstr "" + #: src/components/Assets/Assets.tsx:337 #: src/components/Assets/Assets.tsx:352 msgid "新建文件" @@ -1483,9 +1526,14 @@ msgstr "テンプレートリスト" #: src/pages/dashboard/TemplateSidebar.tsx:58 #: src/pages/dashboard/TemplateSidebar.tsx:67 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:195 msgid "模板名称" msgstr "テンプレート名" +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:140 +msgid "模板名称不能为空" +msgstr "" + #: src/pages/dashboard/TemplateSidebar.tsx:69 #: src/pages/dashboard/TemplateSidebar.tsx:75 msgid "模板目录" @@ -1504,6 +1552,14 @@ msgstr "ぼやける" msgid "櫻花" msgstr "桜" +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:262 +msgid "正在上传" +msgstr "" + +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:192 +msgid "正在加载模板配置" +msgstr "" + #: src/pages/templateEditor/TemplateGraphicalEditor/WebgalClassEditor/propertyEditor/WGFontWeight.tsx:15 msgid "正常" msgstr "通常" @@ -2154,6 +2210,10 @@ msgstr "言語" msgid "语音" msgstr "ボイス" +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:157 +msgid "请完整填写每个字体的信息" +msgstr "" + #: src/pages/editor/GraphicalEditor/components/SearchableCascader.tsx:211 msgid "请输入搜索提示词..." msgstr "検索ヒントを入力してください..." @@ -2388,7 +2448,7 @@ msgstr "選択肢ボタン(無効状態)" msgid "选项按钮外层" msgstr "選択肢ボタン外層" -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:112 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:122 msgid "选项菜单" msgstr "オプションメニュー" @@ -2405,6 +2465,11 @@ msgstr "選択肢からシーンに切り替えることが可能です" msgid "配置" msgstr "構成" +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:189 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:131 +msgid "配置模板" +msgstr "" + #: src/components/Assets/FileElement.tsx:142 #: src/components/Assets/FileElement.tsx:161 #: src/components/Assets/FileElement.tsx:185 @@ -2544,7 +2609,7 @@ msgid "高斯模糊" msgstr "ぼかし" #: src/hooks/useEaseTypeOptions.ts:6 -#: src/pages/editor/GraphicalEditor/components/EffectEditor.tsx:370 +#: src/pages/editor/GraphicalEditor/components/EffectEditor.tsx:371 #: src/pages/editor/GraphicalEditor/SentenceEditor/ChangeFigure.tsx:147 #: src/pages/editor/GraphicalEditor/SentenceEditor/Say.tsx:58 msgid "默认" diff --git a/packages/origine2/src/locales/zhCn.po b/packages/origine2/src/locales/zhCn.po index f159529e..5ab8ab4e 100644 --- a/packages/origine2/src/locales/zhCn.po +++ b/packages/origine2/src/locales/zhCn.po @@ -17,7 +17,7 @@ msgstr "" msgid ";注释" msgstr ";注释" -#: src/pages/editor/GraphicalEditor/components/EffectEditor.tsx:436 +#: src/pages/editor/GraphicalEditor/components/EffectEditor.tsx:437 msgid "*设置拾色器后,点击此按钮以保存更改" msgstr "*设置拾色器后,点击此按钮以保存更改" @@ -86,6 +86,10 @@ msgstr "CSS 属性名:" msgid "end;" msgstr "end;" +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:215 +msgid "font-family" +msgstr "font-family" + #: src/pages/editor/GraphicalEditor/SentenceEditor/index.tsx:245 msgid "getUserInput:;" msgstr "getUserInput:;" @@ -215,6 +219,10 @@ msgstr "上一步" msgid "上传" msgstr "上传" +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:262 +msgid "上传字体文件" +msgstr "上传字体文件" + #: src/components/Assets/Assets.tsx:445 #: src/components/Assets/Assets.tsx:451 msgid "上传资源" @@ -311,7 +319,7 @@ msgstr "伽马值" #~ msgid "你已启用实验性快速预览,该功能将大幅提升实时预览效率,但可能出现异常。特别提示:不要在上一次实时预览跳转还没有完全结束时(尤其是有动画没有结束时)再次跳转。" #~ msgstr "你已启用实验性快速预览,该功能将大幅提升实时预览效率,但可能出现异常。特别提示:不要在上一次实时预览跳转还没有完全结束时(尤其是有动画没有结束时)再次跳转。" -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:159 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:184 msgid "使用中的模板:" msgstr "使用中的模板:" @@ -362,9 +370,18 @@ msgid "侧边栏游戏预览" msgstr "侧边栏游戏预览" #: src/components/IconCreator/IconCreator.tsx:798 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:287 msgid "保存" msgstr "保存" +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:287 +msgid "保存中..." +msgstr "保存中..." + +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:179 +msgid "保存模板配置失败,请稍后重试" +msgstr "保存模板配置失败,请稍后重试" + #: src/pages/editor/GraphicalEditor/SentenceEditor/ChangeFigure.tsx:505 msgid "保持闭眼(毫秒)" msgstr "保持闭眼(毫秒)" @@ -442,7 +459,7 @@ msgstr "关于" msgid "关联立绘" msgstr "关联立绘" -#: src/pages/editor/GraphicalEditor/components/EffectEditor.tsx:372 +#: src/pages/editor/GraphicalEditor/components/EffectEditor.tsx:373 #: src/pages/editor/GraphicalEditor/components/SearchableCascader.tsx:228 #: src/pages/editor/GraphicalEditor/SentenceEditor/ChangeFigure.tsx:149 #: src/pages/editor/GraphicalEditor/SentenceEditor/SetAnimation.tsx:96 @@ -564,6 +581,7 @@ msgstr "创建新游戏" #: src/pages/dashboard/TemplateElement.tsx:133 #: src/pages/editor/GraphicalEditor/SentenceEditor/Intro.tsx:206 #: src/pages/editor/GraphicalEditor/SentenceEditor/Say.tsx:181 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:269 #: src/pages/templateEditor/TemplateGraphicalEditor/WebgalClassEditor/index.tsx:103 msgid "删除" msgstr "删除" @@ -647,7 +665,8 @@ msgstr "发现新版本" #: src/components/ColorPickerPopup/ColorPickerPopup.tsx:115 #: src/components/IconCreator/IconCreator.tsx:775 #: src/pages/editor/ChooseFile/ChooseFile.tsx:67 -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:171 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:284 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:196 msgid "取消" msgstr "取消" @@ -815,6 +834,22 @@ msgstr "字体优化将在游戏预览窗口低于特定尺寸时,关闭对话 msgid "字体大小" msgstr "字体大小" +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:224 +msgid "字体文件 URL" +msgstr "字体文件 URL" + +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:124 +msgid "字体文件上传失败,请重试" +msgstr "字体文件上传失败,请重试" + +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:231 +msgid "字体类型" +msgstr "字体类型" + +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:199 +msgid "字体配置" +msgstr "字体配置" + #: src/pages/templateEditor/TemplateGraphicalEditor/WebgalClassEditor/editorTable.ts:43 msgid "字母间距" msgstr "字母间距" @@ -898,8 +933,8 @@ msgstr "导出失败!" msgid "导出成功!" msgstr "导出成功!" -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:123 -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:131 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:140 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:156 msgid "将当前模板应用到选定的游戏" msgstr "将当前模板应用到选定的游戏" @@ -919,6 +954,10 @@ msgstr "小头像容器" msgid "小头像文件" msgstr "小头像文件" +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:209 +msgid "尚未配置任何字体" +msgstr "尚未配置任何字体" + #: src/pages/templateEditor/TemplateGraphicalEditor/WebgalClassEditor/editorTable.ts:57 msgid "层级顺序" msgstr "层级顺序" @@ -983,7 +1022,7 @@ msgstr "常规演出" msgid "平铺" msgstr "平铺" -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:173 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:198 msgid "应用" msgstr "应用" @@ -991,7 +1030,7 @@ msgstr "应用" msgid "应用的模板" msgstr "应用的模板" -#: src/pages/editor/GraphicalEditor/components/EffectEditor.tsx:438 +#: src/pages/editor/GraphicalEditor/components/EffectEditor.tsx:439 #: src/pages/editor/GraphicalEditor/SentenceEditor/Intro.tsx:311 msgid "应用颜色变化" msgstr "应用颜色变化" @@ -1000,7 +1039,7 @@ msgstr "应用颜色变化" msgid "延迟时间(秒)" msgstr "延迟时间(秒)" -#: src/pages/editor/GraphicalEditor/components/EffectEditor.tsx:371 +#: src/pages/editor/GraphicalEditor/components/EffectEditor.tsx:372 #: src/pages/editor/GraphicalEditor/SentenceEditor/ChangeFigure.tsx:148 #: src/pages/editor/GraphicalEditor/SentenceEditor/SetAnimation.tsx:96 #: src/pages/editor/GraphicalEditor/SentenceEditor/SetTransform.tsx:145 @@ -1134,7 +1173,7 @@ msgstr "提示:效果只有在切换到不同立绘或关闭之前的立绘再 msgid "提示:效果只有在切换到不同背景或关闭之前的背景再重新添加时生效。如果你要为现有的背景设置效果,请使用单独的设置效果命令" msgstr "提示:效果只有在切换到不同背景或关闭之前的背景再重新添加时生效。如果你要为现有的背景设置效果,请使用单独的设置效果命令" -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:76 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:80 msgid "提示:样式中用到的资源放在 assets 目录下" msgstr "提示:样式中用到的资源放在 assets 目录下" @@ -1272,6 +1311,10 @@ msgstr "文本阴影" msgid "文档" msgstr "文档" +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:205 +msgid "新增字体" +msgstr "新增字体" + #: src/components/Assets/Assets.tsx:337 #: src/components/Assets/Assets.tsx:352 msgid "新建文件" @@ -1482,9 +1525,14 @@ msgstr "模板列表" #: src/pages/dashboard/TemplateSidebar.tsx:58 #: src/pages/dashboard/TemplateSidebar.tsx:67 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:195 msgid "模板名称" msgstr "模板名称" +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:140 +msgid "模板名称不能为空" +msgstr "模板名称不能为空" + #: src/pages/dashboard/TemplateSidebar.tsx:69 #: src/pages/dashboard/TemplateSidebar.tsx:75 msgid "模板目录" @@ -1503,6 +1551,14 @@ msgstr "模糊" msgid "櫻花" msgstr "櫻花" +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:262 +msgid "正在上传" +msgstr "正在上传" + +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:192 +msgid "正在加载模板配置" +msgstr "正在加载模板配置" + #: src/pages/templateEditor/TemplateGraphicalEditor/WebgalClassEditor/propertyEditor/WGFontWeight.tsx:15 msgid "正常" msgstr "正常" @@ -2153,6 +2209,10 @@ msgstr "语言" msgid "语音" msgstr "语音" +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:157 +msgid "请完整填写每个字体的信息" +msgstr "请完整填写每个字体的信息" + #: src/pages/editor/GraphicalEditor/components/SearchableCascader.tsx:211 msgid "请输入搜索提示词..." msgstr "请输入搜索提示词..." @@ -2387,7 +2447,7 @@ msgstr "选项按钮(禁用)" msgid "选项按钮外层" msgstr "选项按钮外层" -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:112 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:122 msgid "选项菜单" msgstr "选项菜单" @@ -2404,6 +2464,11 @@ msgstr "通过选项进入不同的场景" msgid "配置" msgstr "配置" +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:189 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:131 +msgid "配置模板" +msgstr "配置模板" + #: src/components/Assets/FileElement.tsx:142 #: src/components/Assets/FileElement.tsx:161 #: src/components/Assets/FileElement.tsx:185 @@ -2543,7 +2608,7 @@ msgid "高斯模糊" msgstr "高斯模糊" #: src/hooks/useEaseTypeOptions.ts:6 -#: src/pages/editor/GraphicalEditor/components/EffectEditor.tsx:370 +#: src/pages/editor/GraphicalEditor/components/EffectEditor.tsx:371 #: src/pages/editor/GraphicalEditor/SentenceEditor/ChangeFigure.tsx:147 #: src/pages/editor/GraphicalEditor/SentenceEditor/Say.tsx:58 msgid "默认" diff --git a/packages/origine2/src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.module.scss b/packages/origine2/src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.module.scss new file mode 100644 index 00000000..5e16e2f4 --- /dev/null +++ b/packages/origine2/src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.module.scss @@ -0,0 +1,51 @@ +.dialogContent { + display: flex; + flex-direction: column; + gap: 16px; +} + +.fontHeader { + display: flex; + align-items: center; + justify-content: space-between; + gap: 8px; +} + +.fontList { + display: flex; + flex-direction: column; + gap: 12px; +} + +.fontItem { + border: var(--border-md); + border-radius: var(--radius-md); + padding: 12px; + background: var(--bg-layer); + display: flex; + flex-direction: column; + gap: 12px; +} + +.fontFields { + display: grid; + gap: 12px; + grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); +} + +.fontActions { + display: flex; + flex-wrap: wrap; + gap: 8px; + justify-content: flex-end; +} + +.emptyHint { + color: var(--text-sub); + font-size: 14px; +} + +.errorMessage { + color: var(--status-danger-text); + font-size: 14px; +} diff --git a/packages/origine2/src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx b/packages/origine2/src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx new file mode 100644 index 00000000..9612326d --- /dev/null +++ b/packages/origine2/src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx @@ -0,0 +1,304 @@ +import { useEffect, useMemo, useRef, useState } from 'react'; +import { + Button, + Dialog, + DialogActions, + DialogBody, + DialogContent, + DialogSurface, + DialogTitle, + Field, + Input, + Select, + Spinner, +} from '@fluentui/react-components'; +import { t } from '@lingui/macro'; +import { TemplateConfigDto, TemplateFontConfigDto } from '@/api/Api'; +import { api } from '@/api'; +import styles from './TemplateConfigDialog.module.scss'; +import axios from 'axios'; +import { + AddCircle20Filled, + AddCircle20Regular, + ArrowUpload20Filled, + ArrowUpload20Regular, + Delete20Filled, + Delete20Regular, + bundleIcon, +} from '@fluentui/react-icons'; + +const AddCircleIcon = bundleIcon(AddCircle20Filled, AddCircle20Regular); +const DeleteIcon = bundleIcon(Delete20Filled, Delete20Regular); +const UploadIcon = bundleIcon(ArrowUpload20Filled, ArrowUpload20Regular); + +const FONT_TYPE_OPTIONS = ['truetype', 'opentype', 'woff', 'woff2', 'embedded-opentype', 'svg'] as const; + +type FontTypeOption = (typeof FONT_TYPE_OPTIONS)[number]; + +export interface TemplateConfigDialogProps { + open: boolean; + templateConfig?: TemplateConfigDto; + templateDir: string; + onOpenChange: (open: boolean) => void; + onTemplateConfigUpdated?: () => void | Promise; +} + +type FontFormState = TemplateFontConfigDto; + +export default function TemplateConfigDialog({ + open, + templateConfig, + templateDir, + onOpenChange, + onTemplateConfigUpdated, +}: TemplateConfigDialogProps) { + const [name, setName] = useState(''); + const [fonts, setFonts] = useState([]); + const [saving, setSaving] = useState(false); + const [errorMessage, setErrorMessage] = useState(null); + const [uploadingIndex, setUploadingIndex] = useState(null); + + const fileInputRefs = useRef>({}); + + const isLoading = open && !templateConfig; + const defaultFontType: FontTypeOption = useMemo(() => FONT_TYPE_OPTIONS[0], []); + + useEffect(() => { + if (!open) { + return; + } + if (!templateConfig) { + setName(''); + setFonts([]); + return; + } + setName(templateConfig.name ?? ''); + setFonts( + (templateConfig.fonts ?? []).map((font) => ({ + 'font-family': font['font-family'] ?? '', + url: font.url ?? '', + type: font.type ?? defaultFontType, + })) + ); + setErrorMessage(null); + }, [open, templateConfig, defaultFontType]); + + const updateFont = (index: number, partial: Partial) => { + setFonts((prev) => + prev.map((font, idx) => (idx === index ? { ...font, ...partial } : font)) + ); + }; + + const handleAddFont = () => { + setFonts((prev) => [ + ...prev, + { + 'font-family': '', + url: '', + type: defaultFontType, + }, + ]); + setErrorMessage(null); + }; + + const handleRemoveFont = (index: number) => { + setFonts((prev) => prev.filter((_, idx) => idx !== index)); + }; + + const handleFontFileSelected = async (index: number, files: FileList | null) => { + if (!files || files.length === 0) { + return; + } + const file = files[0]; + setUploadingIndex(index); + setErrorMessage(null); + try { + try { + await api.assetsControllerCreateNewFolder({ + source: `templates/${templateDir}`, + name: 'assets', + }); + } catch { + // folder already exists or failed quietly; ignore + } + + const targetDirectory = ['templates', templateDir, 'assets'].join('/'); + + const formData = new FormData(); + formData.append('targetDirectory', targetDirectory); + formData.append('files', file, file.name); + await axios.post('/api/assets/upload', formData); + updateFont(index, { url: `assets/${file.name}` }); + } catch (error) { + console.error(error); + setErrorMessage(t`字体文件上传失败,请重试`); + } finally { + setUploadingIndex(null); + const input = fileInputRefs.current[index]; + if (input) { + input.value = ''; + } + } + }; + + const handleSave = async () => { + if (!templateConfig) { + return; + } + const trimmedName = name.trim(); + if (!trimmedName) { + setErrorMessage(t`模板名称不能为空`); + return; + } + + const sanitizedFonts = fonts + .map((font) => ({ + 'font-family': font['font-family'].trim(), + url: font.url.trim(), + type: font.type.trim(), + })) + .filter((font) => font['font-family'] || font.url || font.type); + + const hasPartialFont = sanitizedFonts.some( + (font) => !font['font-family'] || !font.url || !font.type + ); + + if (hasPartialFont) { + setErrorMessage(t`请完整填写每个字体的信息`); + return; + } + + setSaving(true); + setErrorMessage(null); + + try { + await api.manageTemplateControllerUpdateTemplateConfig({ + templateDir, + newTemplateConfig: { + ...templateConfig, + name: trimmedName, + fonts: sanitizedFonts.length ? sanitizedFonts : undefined, + }, + }); + if (onTemplateConfigUpdated) { + await onTemplateConfigUpdated(); + } + onOpenChange(false); + } catch (error) { + console.error(error); + setErrorMessage(t`保存模板配置失败,请稍后重试`); + } finally { + setSaving(false); + } + }; + + return ( + onOpenChange(data.open)}> + + + {t`配置模板`} + + {isLoading ? ( + + ) : ( + <> + + setName(data.value)} /> + +
+ {t`字体配置`} + +
+ {fonts.length === 0 ? ( + {t`尚未配置任何字体`} + ) : ( +
+ {fonts.map((font, index) => ( +
+
+ + + updateFont(index, { 'font-family': data.value }) + } + placeholder="ExampleFont" + /> + + + updateFont(index, { url: data.value })} + placeholder="assets/ExampleFont.ttf" + /> + + + + +
+
+ { + fileInputRefs.current[index] = element; + }} + onChange={(event) => handleFontFileSelected(index, event.target.files)} + /> + + +
+
+ ))} +
+ )} + {errorMessage && ( + {errorMessage} + )} + + )} +
+ + + + +
+
+
+ ); +} diff --git a/packages/origine2/src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx b/packages/origine2/src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx index df7e6e06..acde852d 100644 --- a/packages/origine2/src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx +++ b/packages/origine2/src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx @@ -1,4 +1,4 @@ -import React, {ReactNode, useEffect, useState} from 'react'; +import React, {useEffect, useState} from 'react'; import Assets, {IFileFunction} from '@/components/Assets/Assets'; import ComponentTree from './ComponentTree/ComponentTree'; import styles from './templateEditorSidebar.module.scss'; @@ -12,9 +12,10 @@ import BackDashboardButton from "@/pages/editor/Topbar/components/BackDashboardB import {redirect} from "@/hooks/useHashRoute"; import CommonTips from "@/pages/editor/GraphicalEditor/components/CommonTips"; import { api } from '@/api'; -import { GameInfoDto } from '@/api/Api'; +import { GameInfoDto, TemplateConfigDto } from '@/api/Api'; import { List, ListItem } from "@fluentui/react-list-preview"; import useSWR, { mutate } from 'swr'; +import TemplateConfigDialog from './TemplateConfigDialog'; const ArrowLeftIcon = bundleIcon(ArrowLeftFilled, ArrowLeftRegular); const NavigationIcon = bundleIcon(NavigationFilled, NavigationRegular); @@ -28,7 +29,7 @@ export default function TemplateEditorSidebar() { const updateTabs = useTemplateEditorContext((state) => state.updateTabs); const updateCurrentTab = useTemplateEditorContext((state) => state.updateCurrentTab); - const {data: templateConfig} = useSWR( + const {data: templateConfig, mutate: mutateTemplateConfig} = useSWR( `/templateConfig/${templateDir}`, async () => (await api.manageTemplateControllerGetTemplateConfig(templateDir)).data ); @@ -66,7 +67,12 @@ export default function TemplateEditorSidebar() { {templateConfig ? templateConfig.name : templateDir} - + { + await mutateTemplateConfig(); + }} + />
@@ -84,10 +90,16 @@ export default function TemplateEditorSidebar() { ); } -const OptionMenu = () => { +interface OptionMenuProps { + templateConfig?: TemplateConfigDto; + onTemplateConfigUpdated?: () => void | Promise; +} + +const OptionMenu = ({ templateConfig, onTemplateConfigUpdated }: OptionMenuProps) => { const templateDir = useEditorStore.use.subPage(); const [applyTemplateDialogIsOpen, setApplyTemplateDialogIsOpen] = useState(false); + const [configDialogIsOpen, setConfigDialogIsOpen] = useState(false); const [gameList, setGameList] = useState([]); const [selectedGameDirs, setSelectedGameDirs] = useState([]); @@ -113,6 +125,13 @@ const OptionMenu = () => { + { + setConfigDialogIsOpen(true); + }} + > + {t`配置模板`} + { @@ -125,6 +144,14 @@ const OptionMenu = () => { + + setApplyTemplateDialogIsOpen(data.open)}> diff --git a/packages/terre2/src/Modules/manage-template/manage-template.dto.ts b/packages/terre2/src/Modules/manage-template/manage-template.dto.ts index dba995ca..36426344 100644 --- a/packages/terre2/src/Modules/manage-template/manage-template.dto.ts +++ b/packages/terre2/src/Modules/manage-template/manage-template.dto.ts @@ -1,5 +1,19 @@ import { ApiProperty } from '@nestjs/swagger'; +export class TemplateFontConfigDto { + @ApiProperty({ description: 'The font-family name' }) + ['font-family']: string; + + @ApiProperty({ description: 'The url of the font file' }) + url: string; + + @ApiProperty({ + description: 'The font type used for @font-face format', + enum: ['truetype', 'opentype', 'woff', 'woff2', 'embedded-opentype', 'svg'], + }) + type: string; +} + export class TemplateConfigDto { @ApiProperty({ description: 'The name of the template' }) name: string; @@ -7,6 +21,13 @@ export class TemplateConfigDto { id?: string; @ApiProperty({ description: 'The webgal version of the template' }) 'webgal-version': string; + @ApiProperty({ + description: 'The font registrations of the template', + required: false, + type: TemplateFontConfigDto, + isArray: true, + }) + fonts?: TemplateFontConfigDto[]; } export class TemplateInfoDto extends TemplateConfigDto { From 529f8e8d2941db30519f4a114b7870aba036d284 Mon Sep 17 00:00:00 2001 From: Mahiru Date: Sun, 26 Oct 2025 23:17:16 +0800 Subject: [PATCH 2/5] feat: font editor --- .../WebgalClassEditor/editorTable.ts | 4 +- .../propertyEditor/WGFontFamily.module.scss | 40 ++++ .../propertyEditor/WGFontFamily.tsx | 216 ++++++++++++++++++ 3 files changed, 258 insertions(+), 2 deletions(-) create mode 100644 packages/origine2/src/pages/templateEditor/TemplateGraphicalEditor/WebgalClassEditor/propertyEditor/WGFontFamily.module.scss create mode 100644 packages/origine2/src/pages/templateEditor/TemplateGraphicalEditor/WebgalClassEditor/propertyEditor/WGFontFamily.tsx diff --git a/packages/origine2/src/pages/templateEditor/TemplateGraphicalEditor/WebgalClassEditor/editorTable.ts b/packages/origine2/src/pages/templateEditor/TemplateGraphicalEditor/WebgalClassEditor/editorTable.ts index 9b0d0e05..06eae9be 100644 --- a/packages/origine2/src/pages/templateEditor/TemplateGraphicalEditor/WebgalClassEditor/editorTable.ts +++ b/packages/origine2/src/pages/templateEditor/TemplateGraphicalEditor/WebgalClassEditor/editorTable.ts @@ -9,7 +9,6 @@ import WGCommonLengthEditor import WGCursor from "./propertyEditor/WGCursor"; import WGCommonNumberEditor from "@/pages/templateEditor/TemplateGraphicalEditor/WebgalClassEditor/propertyEditor/WGCommonNumberEditor"; -import WGCommonEditor from "./propertyEditor/WGCommonEditor"; import WGCommonLengthEditor4Values from "@/pages/templateEditor/TemplateGraphicalEditor/WebgalClassEditor/propertyEditor/WGCommonLengthEditor4Values"; import WGTextAlignEditor from "./propertyEditor/WGText"; @@ -20,6 +19,7 @@ import WGBackgroundSize from "@/pages/templateEditor/TemplateGraphicalEditor/WebgalClassEditor/propertyEditor/WGBackgroundSize"; import WGBackgroundPosition from "@/pages/templateEditor/TemplateGraphicalEditor/WebgalClassEditor/propertyEditor/WGBackgroundPosition"; +import WGFontFamily from "@/pages/templateEditor/TemplateGraphicalEditor/WebgalClassEditor/propertyEditor/WGFontFamily"; export interface IPropertyEditorProps { prop: IWebgalCssProp, @@ -55,7 +55,7 @@ export function getEditorTable(): IWebGALStylePropertyEditItem[] { {propName: 'bottom', propLable: t`偏移底部距离(定位用)`, editor: WGCommonLengthEditor, initialValue: '5px'}, {propName: 'cursor', propLable: t`鼠标指针`, editor: WGCursor, initialValue: 'pointer'}, {propName: 'z-index', propLable: t`层级顺序`, editor: WGCommonNumberEditor, initialValue: '1'}, - {propName: 'font-family', propLable: t`字体`, editor: WGCommonEditor, initialValue: `"思源宋体", serif`}, + {propName: 'font-family', propLable: t`字体`, editor: WGFontFamily, initialValue: `"思源宋体", "LXGW", WebgalUI`}, {propName: 'border-radius', propLable: t`圆角`, editor: WGCommonLengthEditor4Values, initialValue: `10px 10px 10px 10px`}, {propName: 'text-align', propLable: t`文本对齐`, editor: WGTextAlignEditor, initialValue: `left`}, {propName: 'text-shadow', propLable: t`文本阴影`, editor: WGTextShadowEditor, initialValue: `10px 10px 10px white`}, diff --git a/packages/origine2/src/pages/templateEditor/TemplateGraphicalEditor/WebgalClassEditor/propertyEditor/WGFontFamily.module.scss b/packages/origine2/src/pages/templateEditor/TemplateGraphicalEditor/WebgalClassEditor/propertyEditor/WGFontFamily.module.scss new file mode 100644 index 00000000..54e7fe7f --- /dev/null +++ b/packages/origine2/src/pages/templateEditor/TemplateGraphicalEditor/WebgalClassEditor/propertyEditor/WGFontFamily.module.scss @@ -0,0 +1,40 @@ +.container { + display: flex; + flex-direction: column; + gap: 12px; +} + +.fontList { + display: flex; + flex-direction: column; + gap: 12px; +} + +.fontRow { + display: flex; + flex-wrap: wrap; + align-items: center; + gap: 12px; +} + +.fontInput { + flex: 1 1 200px; + min-width: 200px; +} + +.rowActions { + display: flex; + flex-wrap: wrap; + gap: 8px; +} + +.emptyHint { + color: var(--text-sub); + font-size: 14px; +} + +.footerActions { + display: flex; + flex-wrap: wrap; + gap: 8px; +} diff --git a/packages/origine2/src/pages/templateEditor/TemplateGraphicalEditor/WebgalClassEditor/propertyEditor/WGFontFamily.tsx b/packages/origine2/src/pages/templateEditor/TemplateGraphicalEditor/WebgalClassEditor/propertyEditor/WGFontFamily.tsx new file mode 100644 index 00000000..6c05dff0 --- /dev/null +++ b/packages/origine2/src/pages/templateEditor/TemplateGraphicalEditor/WebgalClassEditor/propertyEditor/WGFontFamily.tsx @@ -0,0 +1,216 @@ +import { useCallback, useEffect, useMemo, useRef, useState } from "react"; +import { + Button, + Combobox, + Option, + Tooltip, +} from "@fluentui/react-components"; +import { t } from "@lingui/macro"; +import { bundleIcon, ArrowUp20Filled, ArrowUp20Regular, ArrowDown20Filled, ArrowDown20Regular, Delete20Filled, Delete20Regular, Add20Filled, Add20Regular } from "@fluentui/react-icons"; +import styles from "./WGFontFamily.module.scss"; +import { IPropertyEditorProps } from "@/pages/templateEditor/TemplateGraphicalEditor/WebgalClassEditor/editorTable"; +import useEditorStore from "@/store/useEditorStore"; +import { api } from "@/api"; +import useSWR from "swr"; + +const DEFAULT_FONT_CHAIN = ["思源宋体", "LXGW", "WebgalUI"] as const; +// const GENERIC_FONTS = ["serif", "sans-serif", "monospace", "cursive", "fantasy", "system-ui"] as const; +const GENERIC_FONTS = [] as const; + +const MoveUpIcon = bundleIcon(ArrowUp20Filled, ArrowUp20Regular); +const MoveDownIcon = bundleIcon(ArrowDown20Filled, ArrowDown20Regular); +const DeleteIcon = bundleIcon(Delete20Filled, Delete20Regular); +const AddIcon = bundleIcon(Add20Filled, Add20Regular); + +const parseFontList = (value: string): string[] => { + if (!value) return []; + const matches = value.match(/"[^"]*"|'[^']*'|[^,]+/g); + if (!matches) return []; + return matches + .map((item) => item.trim()) + .map((item) => item.replace(/^['"]|['"]$/g, "")) + .map((item) => item.replace(/\s+/g, " ").trim()) + .filter((item) => item.length > 0); +}; + +const stringifyFontList = (fonts: string[]): string => { + const cleaned = fonts + .map((font) => font.trim()) + .filter((font) => font.length > 0); + if (!cleaned.length) return ""; + + return cleaned + .map((font) => { + if (/["]/.test(font)) { + return `"${font.replace(/"/g, '\\"')}"`; + } + if (/[\s,]/.test(font) || /[^\x20-\x7E]/.test(font)) { + return `"${font}"`; + } + return font; + }) + .join(", "); +}; + +const normalizeValue = (value: string): string => stringifyFontList(parseFontList(value)); + +export default function WGFontFamily({ prop, onSubmit }: IPropertyEditorProps) { + const templateDir = useEditorStore.use.subPage(); + const { data: templateConfig } = useSWR( + templateDir ? `/templateConfig/${templateDir}` : null, + async () => (await api.manageTemplateControllerGetTemplateConfig(templateDir)).data, + { revalidateOnFocus: false } + ); + + const [fonts, setFonts] = useState(() => { + const parsed = parseFontList(prop.propValue); + return parsed.length ? parsed : [...DEFAULT_FONT_CHAIN]; + }); + + const lastAppliedRef = useRef(normalizeValue(prop.propValue)); + + useEffect(() => { + const normalized = normalizeValue(prop.propValue); + if (normalized !== lastAppliedRef.current) { + lastAppliedRef.current = normalized; + const parsed = parseFontList(normalized); + setFonts(parsed.length ? parsed : [...DEFAULT_FONT_CHAIN]); + } + }, [prop.propValue]); + + const templateFonts = useMemo(() => { + return ( + templateConfig?.fonts?.map((item) => item["font-family"]?.trim()).filter((item): item is string => !!item && item.length > 0) ?? [] + ); + }, [templateConfig]); + + const suggestionOptions = useMemo(() => { + const ordered = [ + ...DEFAULT_FONT_CHAIN, + ...templateFonts, + ...fonts, + ...GENERIC_FONTS, + ]; + const seen = new Set(); + return ordered + .map((item) => item.trim()) + .filter((item) => { + if (!item) return false; + if (seen.has(item)) return false; + seen.add(item); + return true; + }); + }, [fonts, templateFonts]); + + const applyFonts = useCallback( + (draft: string[]) => { + setFonts(draft); + const normalized = stringifyFontList(draft); + lastAppliedRef.current = normalized; + prop.propValue = normalized; + onSubmit(); + }, + [onSubmit, prop] + ); + + const updateFontAt = (index: number, value: string) => { + const draft = [...fonts]; + draft[index] = value; + applyFonts(draft); + }; + + const handleRemove = (index: number) => { + const draft = fonts.filter((_, i) => i !== index); + applyFonts(draft); + }; + + const handleMove = (index: number, offset: number) => { + const target = index + offset; + if (target < 0 || target >= fonts.length) return; + const draft = [...fonts]; + const [item] = draft.splice(index, 1); + draft.splice(target, 0, item); + applyFonts(draft); + }; + + const handleAppend = () => { + applyFonts([...fonts, ""]); + }; + + const effectiveFonts = fonts.length ? fonts : [...DEFAULT_FONT_CHAIN]; + + return ( +
+
+ {effectiveFonts.length === 0 && ( + {t`尚未添加任何字体`} + )} + {effectiveFonts.map((font, index) => ( +
+ + updateFontAt( + index, + data.optionValue ?? data.optionText ?? "", + ) + } + onChange={(event) => + updateFontAt( + index, + event.currentTarget.value, + ) + } + > + {suggestionOptions.map((option) => ( + + ))} + +
+ +
+
+ ))} +
+
+ +
+
+ ); +} From 094cfc7d14943bedbd3b2adcb5fd060383bfd5ea Mon Sep 17 00:00:00 2001 From: Mahiru Date: Sun, 26 Oct 2025 23:25:47 +0800 Subject: [PATCH 3/5] fix: font path encode --- .../TemplateEditorSidebar/TemplateConfigDialog.tsx | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/origine2/src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx b/packages/origine2/src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx index 9612326d..949a2580 100644 --- a/packages/origine2/src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx +++ b/packages/origine2/src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx @@ -113,20 +113,20 @@ export default function TemplateConfigDialog({ setUploadingIndex(index); setErrorMessage(null); try { + const targetDirectory = ['templates', templateDir, 'assets'].join('/'); try { await api.assetsControllerCreateNewFolder({ - source: `templates/${templateDir}`, - name: 'assets', + source: targetDirectory, + name: '', }); } catch { - // folder already exists or failed quietly; ignore + // ignore if creation fails (likely already exists) } - const targetDirectory = ['templates', templateDir, 'assets'].join('/'); - + const fileName = encodeURIComponent(file.name); const formData = new FormData(); formData.append('targetDirectory', targetDirectory); - formData.append('files', file, file.name); + formData.append('files', file, fileName); await axios.post('/api/assets/upload', formData); updateFont(index, { url: `assets/${file.name}` }); } catch (error) { From 7b981dd74e3b8a97fbbade6edc0e45bfac908d49 Mon Sep 17 00:00:00 2001 From: Mahiru Date: Tue, 25 Nov 2025 23:36:24 +0800 Subject: [PATCH 4/5] fix: template editor sidebar style of config and application button --- packages/origine2/src/locales/en.po | 73 ++++++++++++------- packages/origine2/src/locales/ja.po | 73 ++++++++++++------- packages/origine2/src/locales/zhCn.po | 72 +++++++++++------- .../backDashboardButton.module.scss | 1 + .../TemplateEditorSidebar.tsx | 72 +++++++++--------- .../templateEditorSidebar.module.scss | 10 ++- 6 files changed, 186 insertions(+), 115 deletions(-) diff --git a/packages/origine2/src/locales/en.po b/packages/origine2/src/locales/en.po index 3d571186..3e9e4e06 100644 --- a/packages/origine2/src/locales/en.po +++ b/packages/origine2/src/locales/en.po @@ -17,7 +17,6 @@ msgstr "" msgid ";注释" msgstr "Comment" -#: src/pages/editor/GraphicalEditor/components/EffectEditor.tsx:437 #: src/pages/editor/GraphicalEditor/components/EffectEditor.tsx:437 msgid "*设置拾色器后,点击此按钮以保存更改" msgstr "*Click this button to save changes after setting color picker" @@ -87,7 +86,7 @@ msgstr "CSS Property Name" msgid "end;" msgstr "end;" -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:215 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:225 msgid "font-family" msgstr "" @@ -218,7 +217,7 @@ msgstr "Previous" msgid "上传" msgstr "Upload" -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:262 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:272 msgid "上传字体文件" msgstr "" @@ -227,10 +226,18 @@ msgstr "" msgid "上传资源" msgstr "Upload asset" +#: src/pages/templateEditor/TemplateGraphicalEditor/WebgalClassEditor/propertyEditor/WGFontFamily.tsx:178 +msgid "上移" +msgstr "" + #: src/components/IconCreator/IconCreator.tsx:776 msgid "下一步" msgstr "Next" +#: src/pages/templateEditor/TemplateGraphicalEditor/WebgalClassEditor/propertyEditor/WGFontFamily.tsx:186 +msgid "下移" +msgstr "" + #: src/pages/templateEditor/TemplateEditorSidebar/ComponentTree/ComponentTree.tsx:58 msgid "不可选项" msgstr "Not selectable item" @@ -369,15 +376,15 @@ msgid "侧边栏游戏预览" msgstr "Sidebar Game Preview" #: src/components/IconCreator/IconCreator.tsx:798 -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:287 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:297 msgid "保存" msgstr "Save" -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:287 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:297 msgid "保存中..." msgstr "" -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:179 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:189 msgid "保存模板配置失败,请稍后重试" msgstr "" @@ -580,8 +587,9 @@ msgstr "Create new game" #: src/pages/dashboard/TemplateElement.tsx:133 #: src/pages/editor/GraphicalEditor/SentenceEditor/Intro.tsx:206 #: src/pages/editor/GraphicalEditor/SentenceEditor/Say.tsx:190 -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:269 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:279 #: src/pages/templateEditor/TemplateGraphicalEditor/WebgalClassEditor/index.tsx:103 +#: src/pages/templateEditor/TemplateGraphicalEditor/WebgalClassEditor/propertyEditor/WGFontFamily.tsx:194 msgid "删除" msgstr "Delete" @@ -664,7 +672,7 @@ msgstr "New version detected" #: src/components/ColorPickerPopup/ColorPickerPopup.tsx:115 #: src/components/IconCreator/IconCreator.tsx:775 #: src/pages/editor/ChooseFile/ChooseFile.tsx:67 -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:284 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:294 #: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:196 msgid "取消" msgstr "Cancel" @@ -833,19 +841,19 @@ msgstr "Font optimization will disable the outline of dialogue text when the gam msgid "字体大小" msgstr "Font size" -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:224 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:234 msgid "字体文件 URL" msgstr "" -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:124 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:134 msgid "字体文件上传失败,请重试" msgstr "" -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:231 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:241 msgid "字体类型" msgstr "" -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:199 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:209 msgid "字体配置" msgstr "" @@ -932,7 +940,9 @@ msgstr "Export Failed!" msgid "导出成功!" msgstr "Export Success!" -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:140 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:134 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:135 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:141 #: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:156 msgid "将当前模板应用到选定的游戏" msgstr "Apply the current template to selected games" @@ -953,7 +963,11 @@ msgstr "Mini avatar container" msgid "小头像文件" msgstr "Avatar file" -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:209 +#: src/pages/templateEditor/TemplateGraphicalEditor/WebgalClassEditor/propertyEditor/WGFontFamily.tsx:146 +msgid "尚未添加任何字体" +msgstr "" + +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:219 msgid "尚未配置任何字体" msgstr "" @@ -1172,7 +1186,7 @@ msgstr "Tip: The effect will only take place when switching to a different chara msgid "提示:效果只有在切换到不同背景或关闭之前的背景再重新添加时生效。如果你要为现有的背景设置效果,请使用单独的设置效果命令" msgstr "Tip: The effect will only take place when switching to a different background or removing the current background and adding it again. If you want to set an effect for an existing background, please use a separate command for setting effects." -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:80 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:79 msgid "提示:样式中用到的资源放在 assets 目录下" msgstr "Tips: Resources used in styles are placed in the assets directory" @@ -1314,7 +1328,8 @@ msgstr "Text Shadow" msgid "文档" msgstr "Document" -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:205 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:215 +#: src/pages/templateEditor/TemplateGraphicalEditor/WebgalClassEditor/propertyEditor/WGFontFamily.tsx:211 msgid "新增字体" msgstr "" @@ -1528,11 +1543,11 @@ msgstr "Template list" #: src/pages/dashboard/TemplateSidebar.tsx:58 #: src/pages/dashboard/TemplateSidebar.tsx:67 -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:195 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:205 msgid "模板名称" msgstr "Template name" -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:140 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:150 msgid "模板名称不能为空" msgstr "" @@ -1554,11 +1569,11 @@ msgstr "Blur" msgid "櫻花" msgstr "Cherry blossoms" -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:262 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:272 msgid "正在上传" msgstr "" -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:192 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:202 msgid "正在加载模板配置" msgstr "" @@ -2217,10 +2232,14 @@ msgstr "Language" msgid "语音" msgstr "Voice" -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:157 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:167 msgid "请完整填写每个字体的信息" msgstr "" +#: src/pages/templateEditor/TemplateGraphicalEditor/WebgalClassEditor/propertyEditor/WGFontFamily.tsx:154 +msgid "请输入或选择字体名称" +msgstr "" + #: src/pages/editor/GraphicalEditor/components/SearchableCascader.tsx:211 msgid "请输入搜索提示词..." msgstr "Please enter a search hint..." @@ -2455,9 +2474,9 @@ msgstr "Selection Button (disabled)" msgid "选项按钮外层" msgstr "Selection Button Wrapper" -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:122 -msgid "选项菜单" -msgstr "Option Menu" +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:124 +#~ msgid "选项菜单" +#~ msgstr "Option Menu" #: src/pages/editor/GraphicalEditor/utils/useEffectEditorConfig.ts:83 #: src/pages/editor/GraphicalEditor/utils/useEffectEditorConfig.ts:99 @@ -2472,8 +2491,10 @@ msgstr "Enter different scenes through options" msgid "配置" msgstr "Configuration" -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:189 -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:131 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:199 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:124 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:125 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:128 msgid "配置模板" msgstr "" diff --git a/packages/origine2/src/locales/ja.po b/packages/origine2/src/locales/ja.po index dffe42a3..c415216e 100644 --- a/packages/origine2/src/locales/ja.po +++ b/packages/origine2/src/locales/ja.po @@ -17,7 +17,6 @@ msgstr "" msgid ";注释" msgstr ";コメント" -#: src/pages/editor/GraphicalEditor/components/EffectEditor.tsx:437 #: src/pages/editor/GraphicalEditor/components/EffectEditor.tsx:437 msgid "*设置拾色器后,点击此按钮以保存更改" msgstr "*カラーピッカー設定後、このボタンで保存" @@ -87,7 +86,7 @@ msgstr "CSS プロパティ名:" msgid "end;" msgstr "end;" -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:215 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:225 msgid "font-family" msgstr "" @@ -221,7 +220,7 @@ msgstr "先の" msgid "上传" msgstr "アップロード" -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:262 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:272 msgid "上传字体文件" msgstr "" @@ -230,10 +229,18 @@ msgstr "" msgid "上传资源" msgstr "アセットのアップロード" +#: src/pages/templateEditor/TemplateGraphicalEditor/WebgalClassEditor/propertyEditor/WGFontFamily.tsx:178 +msgid "上移" +msgstr "" + #: src/components/IconCreator/IconCreator.tsx:776 msgid "下一步" msgstr "次に" +#: src/pages/templateEditor/TemplateGraphicalEditor/WebgalClassEditor/propertyEditor/WGFontFamily.tsx:186 +msgid "下移" +msgstr "" + #: src/pages/templateEditor/TemplateEditorSidebar/ComponentTree/ComponentTree.tsx:58 msgid "不可选项" msgstr "選択できない選択肢" @@ -372,15 +379,15 @@ msgid "侧边栏游戏预览" msgstr "サイドバーゲームプレビュー" #: src/components/IconCreator/IconCreator.tsx:798 -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:287 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:297 msgid "保存" msgstr "セーブ" -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:287 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:297 msgid "保存中..." msgstr "" -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:179 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:189 msgid "保存模板配置失败,请稍后重试" msgstr "" @@ -583,8 +590,9 @@ msgstr "新しいゲームを作成" #: src/pages/dashboard/TemplateElement.tsx:133 #: src/pages/editor/GraphicalEditor/SentenceEditor/Intro.tsx:206 #: src/pages/editor/GraphicalEditor/SentenceEditor/Say.tsx:190 -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:269 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:279 #: src/pages/templateEditor/TemplateGraphicalEditor/WebgalClassEditor/index.tsx:103 +#: src/pages/templateEditor/TemplateGraphicalEditor/WebgalClassEditor/propertyEditor/WGFontFamily.tsx:194 msgid "删除" msgstr "削除" @@ -667,7 +675,7 @@ msgstr "新しいバージョンが検出されました" #: src/components/ColorPickerPopup/ColorPickerPopup.tsx:115 #: src/components/IconCreator/IconCreator.tsx:775 #: src/pages/editor/ChooseFile/ChooseFile.tsx:67 -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:284 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:294 #: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:196 msgid "取消" msgstr "キャンセル" @@ -836,19 +844,19 @@ msgstr "フォント最適化は、ゲームプレビューウィンドウが特 msgid "字体大小" msgstr "フォントサイズ" -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:224 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:234 msgid "字体文件 URL" msgstr "" -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:124 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:134 msgid "字体文件上传失败,请重试" msgstr "" -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:231 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:241 msgid "字体类型" msgstr "" -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:199 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:209 msgid "字体配置" msgstr "" @@ -935,7 +943,9 @@ msgstr "失敗を導き出します!" msgid "导出成功!" msgstr "導出成功です!" -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:140 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:134 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:135 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:141 #: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:156 msgid "将当前模板应用到选定的游戏" msgstr "選択したゲームに現在のテンプレートを適用する" @@ -956,7 +966,11 @@ msgstr "アバターコンテナ" msgid "小头像文件" msgstr "アバターファイル" -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:209 +#: src/pages/templateEditor/TemplateGraphicalEditor/WebgalClassEditor/propertyEditor/WGFontFamily.tsx:146 +msgid "尚未添加任何字体" +msgstr "" + +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:219 msgid "尚未配置任何字体" msgstr "" @@ -1175,7 +1189,7 @@ msgstr "ヒント:この効果は、異なる立ち絵に切り替えるか、 msgid "提示:效果只有在切换到不同背景或关闭之前的背景再重新添加时生效。如果你要为现有的背景设置效果,请使用单独的设置效果命令" msgstr "ヒント:エフェクトは、異なる背景に切り替えるか、一度背景を削除してから再度追加した場合にのみ有効になります。既存の背景にエフェクトを設定する場合は、専用の「エフェクト設定」コマンドを使用してください。" -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:80 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:79 msgid "提示:样式中用到的资源放在 assets 目录下" msgstr "ヒント:スタイルで使用されるリソースは assets ディレクトリにあります" @@ -1313,7 +1327,8 @@ msgstr "テキストシャドウ" msgid "文档" msgstr "ドキュメント" -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:205 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:215 +#: src/pages/templateEditor/TemplateGraphicalEditor/WebgalClassEditor/propertyEditor/WGFontFamily.tsx:211 msgid "新增字体" msgstr "" @@ -1527,11 +1542,11 @@ msgstr "テンプレートリスト" #: src/pages/dashboard/TemplateSidebar.tsx:58 #: src/pages/dashboard/TemplateSidebar.tsx:67 -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:195 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:205 msgid "模板名称" msgstr "テンプレート名" -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:140 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:150 msgid "模板名称不能为空" msgstr "" @@ -1553,11 +1568,11 @@ msgstr "ぼやける" msgid "櫻花" msgstr "桜" -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:262 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:272 msgid "正在上传" msgstr "" -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:192 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:202 msgid "正在加载模板配置" msgstr "" @@ -2216,10 +2231,14 @@ msgstr "言語" msgid "语音" msgstr "ボイス" -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:157 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:167 msgid "请完整填写每个字体的信息" msgstr "" +#: src/pages/templateEditor/TemplateGraphicalEditor/WebgalClassEditor/propertyEditor/WGFontFamily.tsx:154 +msgid "请输入或选择字体名称" +msgstr "" + #: src/pages/editor/GraphicalEditor/components/SearchableCascader.tsx:211 msgid "请输入搜索提示词..." msgstr "検索ヒントを入力してください..." @@ -2454,9 +2473,9 @@ msgstr "選択肢ボタン(無効状態)" msgid "选项按钮外层" msgstr "選択肢ボタン外層" -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:122 -msgid "选项菜单" -msgstr "オプションメニュー" +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:124 +#~ msgid "选项菜单" +#~ msgstr "オプションメニュー" #: src/pages/editor/GraphicalEditor/utils/useEffectEditorConfig.ts:83 #: src/pages/editor/GraphicalEditor/utils/useEffectEditorConfig.ts:99 @@ -2471,8 +2490,10 @@ msgstr "選択肢からシーンに切り替えることが可能です" msgid "配置" msgstr "構成" -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:189 -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:131 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:199 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:124 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:125 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:128 msgid "配置模板" msgstr "" diff --git a/packages/origine2/src/locales/zhCn.po b/packages/origine2/src/locales/zhCn.po index 61dca7c0..cf48ba40 100644 --- a/packages/origine2/src/locales/zhCn.po +++ b/packages/origine2/src/locales/zhCn.po @@ -86,7 +86,7 @@ msgstr "CSS 属性名:" msgid "end;" msgstr "end;" -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:215 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:225 msgid "font-family" msgstr "font-family" @@ -219,7 +219,7 @@ msgstr "上一步" msgid "上传" msgstr "上传" -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:262 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:272 msgid "上传字体文件" msgstr "上传字体文件" @@ -228,10 +228,18 @@ msgstr "上传字体文件" msgid "上传资源" msgstr "上传资源" +#: src/pages/templateEditor/TemplateGraphicalEditor/WebgalClassEditor/propertyEditor/WGFontFamily.tsx:178 +msgid "上移" +msgstr "上移" + #: src/components/IconCreator/IconCreator.tsx:776 msgid "下一步" msgstr "下一步" +#: src/pages/templateEditor/TemplateGraphicalEditor/WebgalClassEditor/propertyEditor/WGFontFamily.tsx:186 +msgid "下移" +msgstr "下移" + #: src/pages/templateEditor/TemplateEditorSidebar/ComponentTree/ComponentTree.tsx:58 msgid "不可选项" msgstr "不可选项" @@ -370,15 +378,15 @@ msgid "侧边栏游戏预览" msgstr "侧边栏游戏预览" #: src/components/IconCreator/IconCreator.tsx:798 -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:287 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:297 msgid "保存" msgstr "保存" -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:287 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:297 msgid "保存中..." msgstr "保存中..." -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:179 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:189 msgid "保存模板配置失败,请稍后重试" msgstr "保存模板配置失败,请稍后重试" @@ -581,8 +589,9 @@ msgstr "创建新游戏" #: src/pages/dashboard/TemplateElement.tsx:133 #: src/pages/editor/GraphicalEditor/SentenceEditor/Intro.tsx:206 #: src/pages/editor/GraphicalEditor/SentenceEditor/Say.tsx:190 -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:269 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:279 #: src/pages/templateEditor/TemplateGraphicalEditor/WebgalClassEditor/index.tsx:103 +#: src/pages/templateEditor/TemplateGraphicalEditor/WebgalClassEditor/propertyEditor/WGFontFamily.tsx:194 msgid "删除" msgstr "删除" @@ -665,7 +674,7 @@ msgstr "发现新版本" #: src/components/ColorPickerPopup/ColorPickerPopup.tsx:115 #: src/components/IconCreator/IconCreator.tsx:775 #: src/pages/editor/ChooseFile/ChooseFile.tsx:67 -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:284 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:294 #: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:196 msgid "取消" msgstr "取消" @@ -834,19 +843,19 @@ msgstr "字体优化将在游戏预览窗口低于特定尺寸时,关闭对话 msgid "字体大小" msgstr "字体大小" -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:224 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:234 msgid "字体文件 URL" msgstr "字体文件 URL" -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:124 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:134 msgid "字体文件上传失败,请重试" msgstr "字体文件上传失败,请重试" -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:231 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:241 msgid "字体类型" msgstr "字体类型" -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:199 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:209 msgid "字体配置" msgstr "字体配置" @@ -933,7 +942,9 @@ msgstr "导出失败!" msgid "导出成功!" msgstr "导出成功!" -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:140 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:134 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:135 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:141 #: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:156 msgid "将当前模板应用到选定的游戏" msgstr "将当前模板应用到选定的游戏" @@ -954,7 +965,11 @@ msgstr "小头像容器" msgid "小头像文件" msgstr "小头像文件" -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:209 +#: src/pages/templateEditor/TemplateGraphicalEditor/WebgalClassEditor/propertyEditor/WGFontFamily.tsx:146 +msgid "尚未添加任何字体" +msgstr "尚未添加任何字体" + +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:219 msgid "尚未配置任何字体" msgstr "尚未配置任何字体" @@ -1173,7 +1188,7 @@ msgstr "提示:效果只有在切换到不同立绘或关闭之前的立绘再 msgid "提示:效果只有在切换到不同背景或关闭之前的背景再重新添加时生效。如果你要为现有的背景设置效果,请使用单独的设置效果命令" msgstr "提示:效果只有在切换到不同背景或关闭之前的背景再重新添加时生效。如果你要为现有的背景设置效果,请使用单独的设置效果命令" -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:80 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:79 msgid "提示:样式中用到的资源放在 assets 目录下" msgstr "提示:样式中用到的资源放在 assets 目录下" @@ -1311,7 +1326,8 @@ msgstr "文本阴影" msgid "文档" msgstr "文档" -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:205 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:215 +#: src/pages/templateEditor/TemplateGraphicalEditor/WebgalClassEditor/propertyEditor/WGFontFamily.tsx:211 msgid "新增字体" msgstr "新增字体" @@ -1525,11 +1541,11 @@ msgstr "模板列表" #: src/pages/dashboard/TemplateSidebar.tsx:58 #: src/pages/dashboard/TemplateSidebar.tsx:67 -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:195 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:205 msgid "模板名称" msgstr "模板名称" -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:140 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:150 msgid "模板名称不能为空" msgstr "模板名称不能为空" @@ -1551,11 +1567,11 @@ msgstr "模糊" msgid "櫻花" msgstr "櫻花" -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:262 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:272 msgid "正在上传" msgstr "正在上传" -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:192 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:202 msgid "正在加载模板配置" msgstr "正在加载模板配置" @@ -2214,10 +2230,14 @@ msgstr "语言" msgid "语音" msgstr "语音" -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:157 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:167 msgid "请完整填写每个字体的信息" msgstr "请完整填写每个字体的信息" +#: src/pages/templateEditor/TemplateGraphicalEditor/WebgalClassEditor/propertyEditor/WGFontFamily.tsx:154 +msgid "请输入或选择字体名称" +msgstr "请输入或选择字体名称" + #: src/pages/editor/GraphicalEditor/components/SearchableCascader.tsx:211 msgid "请输入搜索提示词..." msgstr "请输入搜索提示词..." @@ -2452,9 +2472,9 @@ msgstr "选项按钮(禁用)" msgid "选项按钮外层" msgstr "选项按钮外层" -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:122 -msgid "选项菜单" -msgstr "选项菜单" +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:124 +#~ msgid "选项菜单" +#~ msgstr "选项菜单" #: src/pages/editor/GraphicalEditor/utils/useEffectEditorConfig.ts:83 #: src/pages/editor/GraphicalEditor/utils/useEffectEditorConfig.ts:99 @@ -2469,8 +2489,10 @@ msgstr "通过选项进入不同的场景" msgid "配置" msgstr "配置" -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:189 -#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:131 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:199 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:124 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:125 +#: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:128 msgid "配置模板" msgstr "配置模板" diff --git a/packages/origine2/src/pages/editor/Topbar/components/backDashboardButton.module.scss b/packages/origine2/src/pages/editor/Topbar/components/backDashboardButton.module.scss index ee9c40aa..0badcc39 100644 --- a/packages/origine2/src/pages/editor/Topbar/components/backDashboardButton.module.scss +++ b/packages/origine2/src/pages/editor/Topbar/components/backDashboardButton.module.scss @@ -9,6 +9,7 @@ border: none; display: inline-flex; align-items: center; + margin: 0 0 0 6px; .backIcon { width: 0; diff --git a/packages/origine2/src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx b/packages/origine2/src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx index 329e8579..9f4d753b 100644 --- a/packages/origine2/src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx +++ b/packages/origine2/src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx @@ -3,9 +3,8 @@ import Assets, {IFileFunction} from '@/components/Assets/Assets'; import ComponentTree from './ComponentTree/ComponentTree'; import styles from './templateEditorSidebar.module.scss'; import useEditorStore from '@/store/useEditorStore'; -import {Button, Dialog, DialogActions, DialogBody, DialogContent, DialogSurface, DialogTitle, DialogTrigger, Menu, MenuButton, MenuItem, MenuList, MenuPopover, MenuTrigger} from '@fluentui/react-components'; +import {Button, Dialog, DialogActions, DialogBody, DialogContent, DialogSurface, DialogTitle, DialogTrigger} from '@fluentui/react-components'; import {useTemplateEditorContext} from '@/store/useTemplateEditorStore'; -import {ArrowLeftFilled, ArrowLeftRegular, bundleIcon, NavigationFilled, NavigationRegular} from "@fluentui/react-icons"; import {ITab} from '@/types/templateEditor'; import {t} from "@lingui/macro"; import BackDashboardButton from "@/pages/editor/Topbar/components/BackDashboardButton"; @@ -16,9 +15,7 @@ import { GameInfoDto, TemplateConfigDto } from '@/api/Api'; import { List, ListItem } from "@fluentui/react-list-preview"; import useSWR, { mutate } from 'swr'; import TemplateConfigDialog from './TemplateConfigDialog'; - -const ArrowLeftIcon = bundleIcon(ArrowLeftFilled, ArrowLeftRegular); -const NavigationIcon = bundleIcon(NavigationFilled, NavigationRegular); +import {PlugConnected20Regular, Settings20Regular} from "@fluentui/react-icons"; export default function TemplateEditorSidebar() { const templateDir = useEditorStore.use.subPage(); @@ -67,13 +64,13 @@ export default function TemplateEditorSidebar() { {templateConfig ? templateConfig.name : templateDir} - { - await mutateTemplateConfig(); - }} - />
+ { + await mutateTemplateConfig(); + }} + />
@@ -90,12 +87,12 @@ export default function TemplateEditorSidebar() { ); } -interface OptionMenuProps { +interface TemplateActionsProps { templateConfig?: TemplateConfigDto; onTemplateConfigUpdated?: () => void | Promise; } -const OptionMenu = ({ templateConfig, onTemplateConfigUpdated }: OptionMenuProps) => { +const TemplateActions = ({ templateConfig, onTemplateConfigUpdated }: TemplateActionsProps) => { const templateDir = useEditorStore.use.subPage(); const [applyTemplateDialogIsOpen, setApplyTemplateDialogIsOpen] = useState(false); @@ -119,30 +116,31 @@ const OptionMenu = ({ templateConfig, onTemplateConfigUpdated }: OptionMenuProps return ( <> - - - } title={t`选项菜单`} style={{ minWidth: 0, textWrap: 'nowrap' }} /> - - - - { - setConfigDialogIsOpen(true); - }} - > - {t`配置模板`} - - { - setApplyTemplateDialogIsOpen(true); - getGameList(); - } - } - >{t`将当前模板应用到选定的游戏`} - - - +
+ + +
Date: Tue, 25 Nov 2025 23:44:57 +0800 Subject: [PATCH 5/5] update locales --- packages/origine2/src/locales/en.po | 38 ++++++++++++++--------------- packages/origine2/src/locales/ja.po | 38 ++++++++++++++--------------- 2 files changed, 38 insertions(+), 38 deletions(-) diff --git a/packages/origine2/src/locales/en.po b/packages/origine2/src/locales/en.po index 3e9e4e06..73aa5590 100644 --- a/packages/origine2/src/locales/en.po +++ b/packages/origine2/src/locales/en.po @@ -88,7 +88,7 @@ msgstr "end;" #: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:225 msgid "font-family" -msgstr "" +msgstr "font-family" #: src/pages/editor/GraphicalEditor/SentenceEditor/index.tsx:245 msgid "getUserInput:;" @@ -219,7 +219,7 @@ msgstr "Upload" #: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:272 msgid "上传字体文件" -msgstr "" +msgstr "Upload font file" #: src/components/Assets/Assets.tsx:445 #: src/components/Assets/Assets.tsx:451 @@ -228,7 +228,7 @@ msgstr "Upload asset" #: src/pages/templateEditor/TemplateGraphicalEditor/WebgalClassEditor/propertyEditor/WGFontFamily.tsx:178 msgid "上移" -msgstr "" +msgstr "Move up" #: src/components/IconCreator/IconCreator.tsx:776 msgid "下一步" @@ -236,7 +236,7 @@ msgstr "Next" #: src/pages/templateEditor/TemplateGraphicalEditor/WebgalClassEditor/propertyEditor/WGFontFamily.tsx:186 msgid "下移" -msgstr "" +msgstr "Move down" #: src/pages/templateEditor/TemplateEditorSidebar/ComponentTree/ComponentTree.tsx:58 msgid "不可选项" @@ -382,11 +382,11 @@ msgstr "Save" #: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:297 msgid "保存中..." -msgstr "" +msgstr "Saving..." #: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:189 msgid "保存模板配置失败,请稍后重试" -msgstr "" +msgstr "Failed to save template configuration, please try again later" #: src/pages/editor/GraphicalEditor/SentenceEditor/ChangeFigure.tsx:505 msgid "保持闭眼(毫秒)" @@ -843,19 +843,19 @@ msgstr "Font size" #: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:234 msgid "字体文件 URL" -msgstr "" +msgstr "Font file URL" #: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:134 msgid "字体文件上传失败,请重试" -msgstr "" +msgstr "Font file upload failed, please retry" #: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:241 msgid "字体类型" -msgstr "" +msgstr "Font type" #: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:209 msgid "字体配置" -msgstr "" +msgstr "Font configuration" #: src/pages/templateEditor/TemplateGraphicalEditor/WebgalClassEditor/editorTable.ts:43 msgid "字母间距" @@ -965,11 +965,11 @@ msgstr "Avatar file" #: src/pages/templateEditor/TemplateGraphicalEditor/WebgalClassEditor/propertyEditor/WGFontFamily.tsx:146 msgid "尚未添加任何字体" -msgstr "" +msgstr "No fonts added yet" #: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:219 msgid "尚未配置任何字体" -msgstr "" +msgstr "No fonts configured yet" #: src/pages/templateEditor/TemplateGraphicalEditor/WebgalClassEditor/editorTable.ts:57 msgid "层级顺序" @@ -1331,7 +1331,7 @@ msgstr "Document" #: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:215 #: src/pages/templateEditor/TemplateGraphicalEditor/WebgalClassEditor/propertyEditor/WGFontFamily.tsx:211 msgid "新增字体" -msgstr "" +msgstr "Add font" #: src/components/Assets/Assets.tsx:337 #: src/components/Assets/Assets.tsx:352 @@ -1549,7 +1549,7 @@ msgstr "Template name" #: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:150 msgid "模板名称不能为空" -msgstr "" +msgstr "Template name cannot be empty" #: src/pages/dashboard/TemplateSidebar.tsx:69 #: src/pages/dashboard/TemplateSidebar.tsx:75 @@ -1571,11 +1571,11 @@ msgstr "Cherry blossoms" #: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:272 msgid "正在上传" -msgstr "" +msgstr "Uploading" #: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:202 msgid "正在加载模板配置" -msgstr "" +msgstr "Loading template configuration" #: src/pages/templateEditor/TemplateGraphicalEditor/WebgalClassEditor/propertyEditor/WGFontWeight.tsx:15 msgid "正常" @@ -2234,11 +2234,11 @@ msgstr "Voice" #: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:167 msgid "请完整填写每个字体的信息" -msgstr "" +msgstr "Please complete all font information" #: src/pages/templateEditor/TemplateGraphicalEditor/WebgalClassEditor/propertyEditor/WGFontFamily.tsx:154 msgid "请输入或选择字体名称" -msgstr "" +msgstr "Please enter or select a font name" #: src/pages/editor/GraphicalEditor/components/SearchableCascader.tsx:211 msgid "请输入搜索提示词..." @@ -2496,7 +2496,7 @@ msgstr "Configuration" #: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:125 #: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:128 msgid "配置模板" -msgstr "" +msgstr "Configure template" #: src/components/Assets/FileElement.tsx:142 #: src/components/Assets/FileElement.tsx:161 diff --git a/packages/origine2/src/locales/ja.po b/packages/origine2/src/locales/ja.po index c415216e..c84b827d 100644 --- a/packages/origine2/src/locales/ja.po +++ b/packages/origine2/src/locales/ja.po @@ -88,7 +88,7 @@ msgstr "end;" #: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:225 msgid "font-family" -msgstr "" +msgstr "font-family" #: src/pages/editor/GraphicalEditor/SentenceEditor/index.tsx:245 msgid "getUserInput:;" @@ -222,7 +222,7 @@ msgstr "アップロード" #: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:272 msgid "上传字体文件" -msgstr "" +msgstr "フォントファイルをアップロード" #: src/components/Assets/Assets.tsx:445 #: src/components/Assets/Assets.tsx:451 @@ -231,7 +231,7 @@ msgstr "アセットのアップロード" #: src/pages/templateEditor/TemplateGraphicalEditor/WebgalClassEditor/propertyEditor/WGFontFamily.tsx:178 msgid "上移" -msgstr "" +msgstr "上へ移動" #: src/components/IconCreator/IconCreator.tsx:776 msgid "下一步" @@ -239,7 +239,7 @@ msgstr "次に" #: src/pages/templateEditor/TemplateGraphicalEditor/WebgalClassEditor/propertyEditor/WGFontFamily.tsx:186 msgid "下移" -msgstr "" +msgstr "下へ移動" #: src/pages/templateEditor/TemplateEditorSidebar/ComponentTree/ComponentTree.tsx:58 msgid "不可选项" @@ -385,11 +385,11 @@ msgstr "セーブ" #: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:297 msgid "保存中..." -msgstr "" +msgstr "保存中..." #: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:189 msgid "保存模板配置失败,请稍后重试" -msgstr "" +msgstr "テンプレート設定の保存に失敗しました。しばらくしてからお試しください。" #: src/pages/editor/GraphicalEditor/SentenceEditor/ChangeFigure.tsx:505 msgid "保持闭眼(毫秒)" @@ -846,19 +846,19 @@ msgstr "フォントサイズ" #: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:234 msgid "字体文件 URL" -msgstr "" +msgstr "フォントファイルのURL" #: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:134 msgid "字体文件上传失败,请重试" -msgstr "" +msgstr "フォントファイルのアップロードに失敗しました。再試行してください。" #: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:241 msgid "字体类型" -msgstr "" +msgstr "フォントタイプ" #: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:209 msgid "字体配置" -msgstr "" +msgstr "フォント設定" #: src/pages/templateEditor/TemplateGraphicalEditor/WebgalClassEditor/editorTable.ts:43 msgid "字母间距" @@ -968,11 +968,11 @@ msgstr "アバターファイル" #: src/pages/templateEditor/TemplateGraphicalEditor/WebgalClassEditor/propertyEditor/WGFontFamily.tsx:146 msgid "尚未添加任何字体" -msgstr "" +msgstr "まだフォントが追加されていません" #: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:219 msgid "尚未配置任何字体" -msgstr "" +msgstr "まだフォントが設定されていません" #: src/pages/templateEditor/TemplateGraphicalEditor/WebgalClassEditor/editorTable.ts:57 msgid "层级顺序" @@ -1330,7 +1330,7 @@ msgstr "ドキュメント" #: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:215 #: src/pages/templateEditor/TemplateGraphicalEditor/WebgalClassEditor/propertyEditor/WGFontFamily.tsx:211 msgid "新增字体" -msgstr "" +msgstr "フォントを追加" #: src/components/Assets/Assets.tsx:337 #: src/components/Assets/Assets.tsx:352 @@ -1548,7 +1548,7 @@ msgstr "テンプレート名" #: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:150 msgid "模板名称不能为空" -msgstr "" +msgstr "テンプレート名は空にできません" #: src/pages/dashboard/TemplateSidebar.tsx:69 #: src/pages/dashboard/TemplateSidebar.tsx:75 @@ -1570,11 +1570,11 @@ msgstr "桜" #: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:272 msgid "正在上传" -msgstr "" +msgstr "アップロード中" #: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:202 msgid "正在加载模板配置" -msgstr "" +msgstr "テンプレート設定を読み込み中" #: src/pages/templateEditor/TemplateGraphicalEditor/WebgalClassEditor/propertyEditor/WGFontWeight.tsx:15 msgid "正常" @@ -2233,11 +2233,11 @@ msgstr "ボイス" #: src/pages/templateEditor/TemplateEditorSidebar/TemplateConfigDialog.tsx:167 msgid "请完整填写每个字体的信息" -msgstr "" +msgstr "各フォントの情報をすべて入力してください" #: src/pages/templateEditor/TemplateGraphicalEditor/WebgalClassEditor/propertyEditor/WGFontFamily.tsx:154 msgid "请输入或选择字体名称" -msgstr "" +msgstr "フォント名を入力または選択してください" #: src/pages/editor/GraphicalEditor/components/SearchableCascader.tsx:211 msgid "请输入搜索提示词..." @@ -2495,7 +2495,7 @@ msgstr "構成" #: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:125 #: src/pages/templateEditor/TemplateEditorSidebar/TemplateEditorSidebar.tsx:128 msgid "配置模板" -msgstr "" +msgstr "テンプレートを設定" #: src/components/Assets/FileElement.tsx:142 #: src/components/Assets/FileElement.tsx:161